Tizen 2.1 base
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:49:32 +0000 (01:49 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:49:32 +0000 (01:49 +0900)
494 files changed:
ABOUT-NLS [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
RELEASE [new file with mode: 0644]
REQUIREMENTS [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
autoregen.sh [new file with mode: 0755]
common/ChangeLog [new file with mode: 0644]
common/Makefile.am [new file with mode: 0644]
common/Makefile.in [new file with mode: 0644]
common/c-to-xml.py [new file with mode: 0644]
common/check-exports [new file with mode: 0755]
common/check.mak [new file with mode: 0644]
common/coverage/coverage-report-entry.pl [new file with mode: 0644]
common/coverage/coverage-report.pl [new file with mode: 0644]
common/coverage/coverage-report.xsl [new file with mode: 0644]
common/coverage/lcov.mak [new file with mode: 0644]
common/cruft.mak [new file with mode: 0644]
common/download-translations [new file with mode: 0755]
common/extract-release-date-from-doap-file [new file with mode: 0755]
common/gettext.patch [new file with mode: 0644]
common/glib-gen.mak [new file with mode: 0644]
common/gst-autogen.sh [new file with mode: 0644]
common/gst-indent [new file with mode: 0755]
common/gst.supp [new file with mode: 0644]
common/gstdoc-scangobj [new file with mode: 0755]
common/gtk-doc-plugins.mak [new file with mode: 0644]
common/gtk-doc.mak [new file with mode: 0644]
common/m4/Makefile.am [new file with mode: 0644]
common/m4/Makefile.in [new file with mode: 0644]
common/m4/README [new file with mode: 0644]
common/m4/as-ac-expand.m4 [new file with mode: 0644]
common/m4/as-auto-alt.m4 [new file with mode: 0644]
common/m4/as-compiler-flag.m4 [new file with mode: 0644]
common/m4/as-compiler.m4 [new file with mode: 0644]
common/m4/as-docbook.m4 [new file with mode: 0644]
common/m4/as-gcc-inline-assembly.m4 [new file with mode: 0644]
common/m4/as-libtool-tags.m4 [new file with mode: 0644]
common/m4/as-libtool.m4 [new file with mode: 0644]
common/m4/as-objc.m4 [new file with mode: 0644]
common/m4/as-python.m4 [new file with mode: 0644]
common/m4/as-scrub-include.m4 [new file with mode: 0644]
common/m4/as-version.m4 [new file with mode: 0644]
common/m4/ax_create_stdint_h.m4 [new file with mode: 0644]
common/m4/check.m4 [new file with mode: 0644]
common/m4/glib-gettext.m4 [new file with mode: 0644]
common/m4/gst-arch.m4 [new file with mode: 0644]
common/m4/gst-args.m4 [new file with mode: 0644]
common/m4/gst-check.m4 [new file with mode: 0644]
common/m4/gst-debuginfo.m4 [new file with mode: 0644]
common/m4/gst-default.m4 [new file with mode: 0644]
common/m4/gst-doc.m4 [new file with mode: 0644]
common/m4/gst-dowhile.m4 [new file with mode: 0644]
common/m4/gst-error.m4 [new file with mode: 0644]
common/m4/gst-feature.m4 [new file with mode: 0644]
common/m4/gst-function.m4 [new file with mode: 0644]
common/m4/gst-gettext.m4 [new file with mode: 0644]
common/m4/gst-glib2.m4 [new file with mode: 0644]
common/m4/gst-libxml2.m4 [new file with mode: 0644]
common/m4/gst-package-release-datetime.m4 [new file with mode: 0644]
common/m4/gst-parser.m4 [new file with mode: 0644]
common/m4/gst-platform.m4 [new file with mode: 0644]
common/m4/gst-plugin-docs.m4 [new file with mode: 0644]
common/m4/gst-plugindir.m4 [new file with mode: 0644]
common/m4/gst-valgrind.m4 [new file with mode: 0644]
common/m4/gst-x11.m4 [new file with mode: 0644]
common/m4/gst.m4 [new file with mode: 0644]
common/m4/gtk-doc.m4 [new file with mode: 0644]
common/m4/introspection.m4 [new file with mode: 0644]
common/m4/orc.m4 [new file with mode: 0644]
common/m4/pkg.m4 [new file with mode: 0644]
common/mangle-tmpl.py [new file with mode: 0644]
common/orc.mak [new file with mode: 0644]
common/parallel-subdirs.mak [new file with mode: 0644]
common/plugins.xsl [new file with mode: 0644]
common/po.mak [new file with mode: 0644]
common/release.mak [new file with mode: 0644]
common/scangobj-merge.py [new file with mode: 0755]
common/upload-doc.mak [new file with mode: 0644]
common/win32.mak [new file with mode: 0644]
compile [new file with mode: 0755]
config.guess [new file with mode: 0755]
config.h.in [new file with mode: 0644]
config.rpath [new file with mode: 0755]
config.sub [new file with mode: 0755]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
depcomp [new file with mode: 0755]
docs/Makefile.am [new file with mode: 0644]
docs/Makefile.in [new file with mode: 0644]
docs/plugins/Makefile.am [new file with mode: 0644]
docs/plugins/Makefile.in [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins-docs.sgml [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins-sections.txt [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.args [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.hierarchy [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.interfaces [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.prerequisites [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.signals [new file with mode: 0644]
docs/plugins/gst-plugins-ugly-plugins.types [new file with mode: 0644]
docs/plugins/html/ch01.html [new file with mode: 0644]
docs/plugins/html/ch02.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-lame.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-mad.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-mp3parse.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-iec958.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegaudioparse.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegstream.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-rademux.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-siddec.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-twolame.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html [new file with mode: 0644]
docs/plugins/html/gst-plugins-ugly-plugins.devhelp2 [new file with mode: 0644]
docs/plugins/html/home.png [new file with mode: 0644]
docs/plugins/html/index.html [new file with mode: 0644]
docs/plugins/html/index.sgml [new file with mode: 0644]
docs/plugins/html/left.png [new file with mode: 0644]
docs/plugins/html/right.png [new file with mode: 0644]
docs/plugins/html/style.css [new file with mode: 0644]
docs/plugins/html/up.png [new file with mode: 0644]
docs/plugins/inspect/plugin-a52dec.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-amrnb.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-amrwbdec.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-asf.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-cdio.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-dvdlpcmdec.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-dvdread.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-dvdsub.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-iec958.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-lame.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-mad.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-mpeg2dec.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-mpegaudioparse.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-mpegstream.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-realmedia.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-siddec.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-synaesthesia.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-twolame.xml [new file with mode: 0644]
docs/plugins/inspect/plugin-x264.xml [new file with mode: 0644]
docs/plugins/scanobj-build.stamp [new file with mode: 0644]
docs/random/ChangeLog-0.8 [new file with mode: 0644]
docs/version.entities.in [new file with mode: 0644]
ext/Makefile.am [new file with mode: 0644]
ext/Makefile.in [new file with mode: 0644]
ext/a52dec/Makefile.am [new file with mode: 0644]
ext/a52dec/Makefile.in [new file with mode: 0644]
ext/a52dec/gsta52dec.c [new file with mode: 0644]
ext/a52dec/gsta52dec.h [new file with mode: 0644]
ext/amrnb/GstAmrnbEnc.prs [new file with mode: 0644]
ext/amrnb/Makefile.am [new file with mode: 0644]
ext/amrnb/Makefile.in [new file with mode: 0644]
ext/amrnb/README [new file with mode: 0644]
ext/amrnb/amrnb.c [new file with mode: 0644]
ext/amrnb/amrnbdec.c [new file with mode: 0644]
ext/amrnb/amrnbdec.h [new file with mode: 0644]
ext/amrnb/amrnbenc.c [new file with mode: 0644]
ext/amrnb/amrnbenc.h [new file with mode: 0644]
ext/amrwbdec/Makefile.am [new file with mode: 0644]
ext/amrwbdec/Makefile.in [new file with mode: 0644]
ext/amrwbdec/README [new file with mode: 0644]
ext/amrwbdec/amrwb.c [new file with mode: 0644]
ext/amrwbdec/amrwbdec.c [new file with mode: 0644]
ext/amrwbdec/amrwbdec.h [new file with mode: 0644]
ext/cdio/Makefile.am [new file with mode: 0644]
ext/cdio/Makefile.in [new file with mode: 0644]
ext/cdio/gstcdio.c [new file with mode: 0644]
ext/cdio/gstcdio.h [new file with mode: 0644]
ext/cdio/gstcdiocddasrc.c [new file with mode: 0644]
ext/cdio/gstcdiocddasrc.h [new file with mode: 0644]
ext/dvdread/Makefile.am [new file with mode: 0644]
ext/dvdread/Makefile.in [new file with mode: 0644]
ext/dvdread/README [new file with mode: 0644]
ext/dvdread/demo-play [new file with mode: 0755]
ext/dvdread/dvdreadsrc.c [new file with mode: 0644]
ext/dvdread/dvdreadsrc.h [new file with mode: 0644]
ext/lame/Makefile.am [new file with mode: 0644]
ext/lame/Makefile.in [new file with mode: 0644]
ext/lame/README [new file with mode: 0644]
ext/lame/gstlame.c [new file with mode: 0644]
ext/lame/gstlame.h [new file with mode: 0644]
ext/lame/gstlamemp3enc.c [new file with mode: 0644]
ext/lame/gstlamemp3enc.h [new file with mode: 0644]
ext/lame/plugin.c [new file with mode: 0644]
ext/mad/Makefile.am [new file with mode: 0644]
ext/mad/Makefile.in [new file with mode: 0644]
ext/mad/gstmad.c [new file with mode: 0644]
ext/mad/gstmad.h [new file with mode: 0644]
ext/mpeg2dec/Makefile.am [new file with mode: 0644]
ext/mpeg2dec/Makefile.in [new file with mode: 0644]
ext/mpeg2dec/gstmpeg2dec.c [new file with mode: 0644]
ext/mpeg2dec/gstmpeg2dec.h [new file with mode: 0644]
ext/sidplay/Makefile.am [new file with mode: 0644]
ext/sidplay/Makefile.in [new file with mode: 0644]
ext/sidplay/gstsiddec.cc [new file with mode: 0644]
ext/sidplay/gstsiddec.h [new file with mode: 0644]
ext/twolame/Makefile.am [new file with mode: 0644]
ext/twolame/Makefile.in [new file with mode: 0644]
ext/twolame/gsttwolame.c [new file with mode: 0644]
ext/twolame/gsttwolame.h [new file with mode: 0644]
ext/x264/GstX264Enc.prs [new file with mode: 0644]
ext/x264/Makefile.am [new file with mode: 0644]
ext/x264/Makefile.in [new file with mode: 0644]
ext/x264/gstx264enc.c [new file with mode: 0644]
ext/x264/gstx264enc.h [new file with mode: 0644]
gst-libs/Makefile.am [new file with mode: 0644]
gst-libs/Makefile.in [new file with mode: 0644]
gst-libs/gst/Makefile.am [new file with mode: 0644]
gst-libs/gst/Makefile.in [new file with mode: 0644]
gst-libs/gst/gettext.h [new file with mode: 0644]
gst-libs/gst/glib-compat-private.h [new file with mode: 0644]
gst-libs/gst/gst-i18n-plugin.h [new file with mode: 0644]
gst-plugins-ugly.doap [new file with mode: 0644]
gst-plugins-ugly.manifest [new file with mode: 0755]
gst-plugins-ugly.spec.in [new file with mode: 0644]
gst/Makefile.am [new file with mode: 0644]
gst/Makefile.in [new file with mode: 0644]
gst/asfdemux/Makefile.am [new file with mode: 0644]
gst/asfdemux/Makefile.in [new file with mode: 0644]
gst/asfdemux/README [new file with mode: 0644]
gst/asfdemux/asfheaders.c [new file with mode: 0644]
gst/asfdemux/asfheaders.h [new file with mode: 0644]
gst/asfdemux/asfpacket.c [new file with mode: 0644]
gst/asfdemux/asfpacket.h [new file with mode: 0644]
gst/asfdemux/gstasf.c [new file with mode: 0644]
gst/asfdemux/gstasfdemux.c [new file with mode: 0644]
gst/asfdemux/gstasfdemux.h [new file with mode: 0644]
gst/asfdemux/gstrtpasfdepay.c [new file with mode: 0644]
gst/asfdemux/gstrtpasfdepay.h [new file with mode: 0644]
gst/asfdemux/gstrtspwms.c [new file with mode: 0644]
gst/asfdemux/gstrtspwms.h [new file with mode: 0644]
gst/dvdlpcmdec/Makefile.am [new file with mode: 0644]
gst/dvdlpcmdec/Makefile.in [new file with mode: 0644]
gst/dvdlpcmdec/gstdvdlpcmdec.c [new file with mode: 0644]
gst/dvdlpcmdec/gstdvdlpcmdec.h [new file with mode: 0644]
gst/dvdsub/Makefile.am [new file with mode: 0644]
gst/dvdsub/Makefile.in [new file with mode: 0644]
gst/dvdsub/gstdvdsubdec.c [new file with mode: 0644]
gst/dvdsub/gstdvdsubdec.h [new file with mode: 0644]
gst/dvdsub/gstdvdsubparse.c [new file with mode: 0644]
gst/dvdsub/gstdvdsubparse.h [new file with mode: 0644]
gst/iec958/Makefile.am [new file with mode: 0644]
gst/iec958/Makefile.in [new file with mode: 0644]
gst/iec958/ac3_padder.c [new file with mode: 0644]
gst/iec958/ac3_padder.h [new file with mode: 0644]
gst/iec958/ac3iec.c [new file with mode: 0644]
gst/iec958/ac3iec.h [new file with mode: 0644]
gst/mpegaudioparse/Makefile.am [new file with mode: 0644]
gst/mpegaudioparse/Makefile.in [new file with mode: 0644]
gst/mpegaudioparse/gstmpegaudioparse.c [new file with mode: 0644]
gst/mpegaudioparse/gstmpegaudioparse.h [new file with mode: 0644]
gst/mpegaudioparse/gstxingmux.c [new file with mode: 0644]
gst/mpegaudioparse/gstxingmux.h [new file with mode: 0644]
gst/mpegaudioparse/plugin.c [new file with mode: 0644]
gst/mpegstream/Makefile.am [new file with mode: 0644]
gst/mpegstream/Makefile.in [new file with mode: 0644]
gst/mpegstream/README [new file with mode: 0644]
gst/mpegstream/gstdvddemux.c [new file with mode: 0644]
gst/mpegstream/gstdvddemux.h [new file with mode: 0644]
gst/mpegstream/gstmpegclock.c [new file with mode: 0644]
gst/mpegstream/gstmpegclock.h [new file with mode: 0644]
gst/mpegstream/gstmpegdemux.c [new file with mode: 0644]
gst/mpegstream/gstmpegdemux.h [new file with mode: 0644]
gst/mpegstream/gstmpegpacketize.c [new file with mode: 0644]
gst/mpegstream/gstmpegpacketize.h [new file with mode: 0644]
gst/mpegstream/gstmpegparse.c [new file with mode: 0644]
gst/mpegstream/gstmpegparse.h [new file with mode: 0644]
gst/mpegstream/gstmpegstream.c [new file with mode: 0644]
gst/mpegstream/gstrfc2250enc.h [new file with mode: 0644]
gst/mpegstream/notes [new file with mode: 0644]
gst/realmedia/Makefile.am [new file with mode: 0644]
gst/realmedia/Makefile.in [new file with mode: 0644]
gst/realmedia/asmrules.c [new file with mode: 0644]
gst/realmedia/asmrules.h [new file with mode: 0644]
gst/realmedia/gstrdtbuffer.c [new file with mode: 0644]
gst/realmedia/gstrdtbuffer.h [new file with mode: 0644]
gst/realmedia/pnmsrc.c [new file with mode: 0644]
gst/realmedia/pnmsrc.h [new file with mode: 0644]
gst/realmedia/rademux.c [new file with mode: 0644]
gst/realmedia/rademux.h [new file with mode: 0644]
gst/realmedia/rdtdepay.c [new file with mode: 0644]
gst/realmedia/rdtdepay.h [new file with mode: 0644]
gst/realmedia/rdtjitterbuffer.c [new file with mode: 0644]
gst/realmedia/rdtjitterbuffer.h [new file with mode: 0644]
gst/realmedia/rdtmanager.c [new file with mode: 0644]
gst/realmedia/rdtmanager.h [new file with mode: 0644]
gst/realmedia/realhash.c [new file with mode: 0644]
gst/realmedia/realhash.h [new file with mode: 0644]
gst/realmedia/realmedia.c [new file with mode: 0644]
gst/realmedia/rmdemux.c [new file with mode: 0644]
gst/realmedia/rmdemux.h [new file with mode: 0644]
gst/realmedia/rmutils.c [new file with mode: 0644]
gst/realmedia/rmutils.h [new file with mode: 0644]
gst/realmedia/rtspreal.c [new file with mode: 0644]
gst/realmedia/rtspreal.h [new file with mode: 0644]
gst/synaesthesia/Makefile.am [new file with mode: 0644]
gst/synaesthesia/Makefile.in [new file with mode: 0644]
gst/synaesthesia/README [new file with mode: 0644]
gst/synaesthesia/gstsynaesthesia.c [new file with mode: 0644]
gst/synaesthesia/gstsynaesthesia.h [new file with mode: 0644]
gst/synaesthesia/synaescope.c [new file with mode: 0644]
gst/synaesthesia/synaescope.h [new file with mode: 0644]
install-sh [new file with mode: 0755]
ltmain.sh [new file with mode: 0644]
m4/Makefile.am [new file with mode: 0644]
m4/Makefile.in [new file with mode: 0644]
m4/README [new file with mode: 0644]
m4/a52.m4 [new file with mode: 0644]
m4/aalib.m4 [new file with mode: 0644]
m4/as-liblame.m4 [new file with mode: 0644]
m4/as-slurp-ffmpeg.m4 [new file with mode: 0644]
m4/check-libheader.m4 [new file with mode: 0644]
m4/freetype2.m4 [new file with mode: 0644]
m4/gettext.m4 [new file with mode: 0644]
m4/glib.m4 [new file with mode: 0644]
m4/gst-fionread.m4 [new file with mode: 0644]
m4/gst-sdl.m4 [new file with mode: 0644]
m4/gst-shout2.m4 [new file with mode: 0644]
m4/gst-sid.m4 [new file with mode: 0644]
m4/gtk.m4 [new file with mode: 0644]
m4/iconv.m4 [new file with mode: 0644]
m4/intlmacosx.m4 [new file with mode: 0644]
m4/lib-ld.m4 [new file with mode: 0644]
m4/lib-link.m4 [new file with mode: 0644]
m4/lib-prefix.m4 [new file with mode: 0644]
m4/libfame.m4 [new file with mode: 0644]
m4/libmikmod.m4 [new file with mode: 0644]
m4/libtool.m4 [new file with mode: 0644]
m4/ltoptions.m4 [new file with mode: 0644]
m4/ltsugar.m4 [new file with mode: 0644]
m4/ltversion.m4 [new file with mode: 0644]
m4/lt~obsolete.m4 [new file with mode: 0644]
m4/nls.m4 [new file with mode: 0644]
m4/po.m4 [new file with mode: 0644]
m4/progtest.m4 [new file with mode: 0644]
missing [new file with mode: 0755]
packaging/gst-plugins-ugly-disable-gtk-doc.patch [new file with mode: 0644]
packaging/gst-plugins-ugly.spec [new file with mode: 0644]
pkgconfig/Makefile.am [new file with mode: 0644]
pkgconfig/Makefile.in [new file with mode: 0644]
pkgconfig/gstreamer-plugins-ugly-uninstalled.pc.in [new file with mode: 0644]
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/Rules-quot [new file with mode: 0644]
po/af.gmo [new file with mode: 0644]
po/af.po [new file with mode: 0644]
po/az.gmo [new file with mode: 0644]
po/az.po [new file with mode: 0644]
po/bg.gmo [new file with mode: 0644]
po/bg.po [new file with mode: 0644]
po/boldquot.sed [new file with mode: 0644]
po/ca.gmo [new file with mode: 0644]
po/ca.po [new file with mode: 0644]
po/cs.gmo [new file with mode: 0644]
po/cs.po [new file with mode: 0644]
po/da.gmo [new file with mode: 0644]
po/da.po [new file with mode: 0644]
po/de.gmo [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/el.gmo [new file with mode: 0644]
po/el.po [new file with mode: 0644]
po/en@boldquot.header [new file with mode: 0644]
po/en@quot.header [new file with mode: 0644]
po/en_GB.gmo [new file with mode: 0644]
po/en_GB.po [new file with mode: 0644]
po/eo.gmo [new file with mode: 0644]
po/eo.po [new file with mode: 0644]
po/es.gmo [new file with mode: 0644]
po/es.po [new file with mode: 0644]
po/eu.gmo [new file with mode: 0644]
po/eu.po [new file with mode: 0644]
po/fi.gmo [new file with mode: 0644]
po/fi.po [new file with mode: 0644]
po/fr.gmo [new file with mode: 0644]
po/fr.po [new file with mode: 0644]
po/gl.gmo [new file with mode: 0644]
po/gl.po [new file with mode: 0644]
po/gst-plugins-ugly-0.10.pot [new file with mode: 0644]
po/hu.gmo [new file with mode: 0644]
po/hu.po [new file with mode: 0644]
po/id.gmo [new file with mode: 0644]
po/id.po [new file with mode: 0644]
po/insert-header.sin [new file with mode: 0644]
po/it.gmo [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/ja.gmo [new file with mode: 0644]
po/ja.po [new file with mode: 0644]
po/lt.gmo [new file with mode: 0644]
po/lt.po [new file with mode: 0644]
po/lv.gmo [new file with mode: 0644]
po/lv.po [new file with mode: 0644]
po/ms.gmo [new file with mode: 0644]
po/ms.po [new file with mode: 0644]
po/mt.gmo [new file with mode: 0644]
po/mt.po [new file with mode: 0644]
po/nb.gmo [new file with mode: 0644]
po/nb.po [new file with mode: 0644]
po/nl.gmo [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
po/or.gmo [new file with mode: 0644]
po/or.po [new file with mode: 0644]
po/pl.gmo [new file with mode: 0644]
po/pl.po [new file with mode: 0644]
po/pt_BR.gmo [new file with mode: 0644]
po/pt_BR.po [new file with mode: 0644]
po/quot.sed [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0644]
po/ro.gmo [new file with mode: 0644]
po/ro.po [new file with mode: 0644]
po/ru.gmo [new file with mode: 0644]
po/ru.po [new file with mode: 0644]
po/sk.gmo [new file with mode: 0644]
po/sk.po [new file with mode: 0644]
po/sl.gmo [new file with mode: 0644]
po/sl.po [new file with mode: 0644]
po/sq.gmo [new file with mode: 0644]
po/sq.po [new file with mode: 0644]
po/sr.gmo [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
po/stamp-po [new file with mode: 0644]
po/sv.gmo [new file with mode: 0644]
po/sv.po [new file with mode: 0644]
po/tr.gmo [new file with mode: 0644]
po/tr.po [new file with mode: 0644]
po/uk.gmo [new file with mode: 0644]
po/uk.po [new file with mode: 0644]
po/vi.gmo [new file with mode: 0644]
po/vi.po [new file with mode: 0644]
po/zh_CN.gmo [new file with mode: 0644]
po/zh_CN.po [new file with mode: 0644]
stamp-h.in [new file with mode: 0644]
tests/Makefile.am [new file with mode: 0644]
tests/Makefile.in [new file with mode: 0644]
tests/check/Makefile.am [new file with mode: 0644]
tests/check/Makefile.in [new file with mode: 0644]
tests/check/elements/amrnbenc.c [new file with mode: 0644]
tests/check/elements/mpeg2dec.c [new file with mode: 0644]
tests/check/elements/x264enc.c [new file with mode: 0644]
tests/check/elements/xingmux.c [new file with mode: 0644]
tests/check/elements/xingmux_testdata.h [new file with mode: 0644]
tests/check/generic/index.c [new file with mode: 0644]
tests/check/generic/states.c [new file with mode: 0644]
tests/check/gst-plugins-ugly.supp [new file with mode: 0644]
tests/check/pipelines/lame.c [new file with mode: 0644]
win32/MANIFEST [new file with mode: 0644]
win32/common/config.h [new file with mode: 0644]
win32/vs6/gst_plugins_ugly.dsw [new file with mode: 0644]
win32/vs6/libgstac3parse.dsp [new file with mode: 0644]
win32/vs6/libgstasfdemux.dsp [new file with mode: 0644]
win32/vs6/libgstdvdlpcmdec.dsp [new file with mode: 0644]
win32/vs6/libgstdvdsub.dsp [new file with mode: 0644]
win32/vs6/libgstiec958.dsp [new file with mode: 0644]
win32/vs6/libgstlame.dsp [new file with mode: 0644]
win32/vs6/libgstmad.dsp [new file with mode: 0644]
win32/vs6/libgstmpegaudioparse.dsp [new file with mode: 0644]
win32/vs6/libgstmpegstream.dsp [new file with mode: 0644]
win32/vs6/libgstrealmedia.dsp [new file with mode: 0644]
win32/vs6/libgstsynaesthesia.dsp [new file with mode: 0644]

diff --git a/ABOUT-NLS b/ABOUT-NLS
new file mode 100644 (file)
index 0000000..83bc72e
--- /dev/null
+++ b/ABOUT-NLS
@@ -0,0 +1,1068 @@
+1 Notes on the Free Translation Project
+***************************************
+
+Free software is going international!  The Free Translation Project is
+a way to get maintainers of free software, translators, and users all
+together, so that free software will gradually become able to speak many
+languages.  A few packages already provide translations for their
+messages.
+
+   If you found this `ABOUT-NLS' file inside a distribution, you may
+assume that the distributed package does use GNU `gettext' internally,
+itself available at your nearest GNU archive site.  But you do _not_
+need to install GNU `gettext' prior to configuring, installing or using
+this package with messages translated.
+
+   Installers will find here some useful hints.  These notes also
+explain how users should proceed for getting the programs to use the
+available translations.  They tell how people wanting to contribute and
+work on translations can contact the appropriate team.
+
+   When reporting bugs in the `intl/' directory or bugs which may be
+related to internationalization, you should tell about the version of
+`gettext' which is used.  The information can be found in the
+`intl/VERSION' file, in internationalized packages.
+
+1.1 Quick configuration advice
+==============================
+
+If you want to exploit the full power of internationalization, you
+should configure it using
+
+     ./configure --with-included-gettext
+
+to force usage of internationalizing routines provided within this
+package, despite the existence of internationalizing capabilities in the
+operating system where this package is being installed.  So far, only
+the `gettext' implementation in the GNU C library version 2 provides as
+many features (such as locale alias, message inheritance, automatic
+charset conversion or plural form handling) as the implementation here.
+It is also not possible to offer this additional functionality on top
+of a `catgets' implementation.  Future versions of GNU `gettext' will
+very likely convey even more functionality.  So it might be a good idea
+to change to GNU `gettext' as soon as possible.
+
+   So you need _not_ provide this option if you are using GNU libc 2 or
+you have installed a recent copy of the GNU gettext package with the
+included `libintl'.
+
+1.2 INSTALL Matters
+===================
+
+Some packages are "localizable" when properly installed; the programs
+they contain can be made to speak your own native language.  Most such
+packages use GNU `gettext'.  Other packages have their own ways to
+internationalization, predating GNU `gettext'.
+
+   By default, this package will be installed to allow translation of
+messages.  It will automatically detect whether the system already
+provides the GNU `gettext' functions.  If not, the included GNU
+`gettext' library will be used.  This library is wholly contained
+within this package, usually in the `intl/' subdirectory, so prior
+installation of the GNU `gettext' package is _not_ required.
+Installers may use special options at configuration time for changing
+the default behaviour.  The commands:
+
+     ./configure --with-included-gettext
+     ./configure --disable-nls
+
+will, respectively, bypass any pre-existing `gettext' to use the
+internationalizing routines provided within this package, or else,
+_totally_ disable translation of messages.
+
+   When you already have GNU `gettext' installed on your system and run
+configure without an option for your new package, `configure' will
+probably detect the previously built and installed `libintl.a' file and
+will decide to use this.  This might not be desirable.  You should use
+the more recent version of the GNU `gettext' library.  I.e. if the file
+`intl/VERSION' shows that the library which comes with this package is
+more recent, you should use
+
+     ./configure --with-included-gettext
+
+to prevent auto-detection.
+
+   The configuration process will not test for the `catgets' function
+and therefore it will not be used.  The reason is that even an
+emulation of `gettext' on top of `catgets' could not provide all the
+extensions of the GNU `gettext' library.
+
+   Internationalized packages usually have many `po/LL.po' files, where
+LL gives an ISO 639 two-letter code identifying the language.  Unless
+translations have been forbidden at `configure' time by using the
+`--disable-nls' switch, all available translations are installed
+together with the package.  However, the environment variable `LINGUAS'
+may be set, prior to configuration, to limit the installed set.
+`LINGUAS' should then contain a space separated list of two-letter
+codes, stating which languages are allowed.
+
+1.3 Using This Package
+======================
+
+As a user, if your language has been installed for this package, you
+only have to set the `LANG' environment variable to the appropriate
+`LL_CC' combination.  If you happen to have the `LC_ALL' or some other
+`LC_xxx' environment variables set, you should unset them before
+setting `LANG', otherwise the setting of `LANG' will not have the
+desired effect.  Here `LL' is an ISO 639 two-letter language code, and
+`CC' is an ISO 3166 two-letter country code.  For example, let's
+suppose that you speak German and live in Germany.  At the shell
+prompt, merely execute `setenv LANG de_DE' (in `csh'),
+`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
+This can be done from your `.login' or `.profile' file, once and for
+all.
+
+   You might think that the country code specification is redundant.
+But in fact, some languages have dialects in different countries.  For
+example, `de_AT' is used for Austria, and `pt_BR' for Brazil.  The
+country code serves to distinguish the dialects.
+
+   The locale naming convention of `LL_CC', with `LL' denoting the
+language and `CC' denoting the country, is the one use on systems based
+on GNU libc.  On other systems, some variations of this scheme are
+used, such as `LL' or `LL_CC.ENCODING'.  You can get the list of
+locales supported by your system for your language by running the
+command `locale -a | grep '^LL''.
+
+   Not all programs have translations for all languages.  By default, an
+English message is shown in place of a nonexistent translation.  If you
+understand other languages, you can set up a priority list of languages.
+This is done through a different environment variable, called
+`LANGUAGE'.  GNU `gettext' gives preference to `LANGUAGE' over `LANG'
+for the purpose of message handling, but you still need to have `LANG'
+set to the primary language; this is required by other parts of the
+system libraries.  For example, some Swedish users who would rather
+read translations in German than English for when Swedish is not
+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
+
+   Special advice for Norwegian users: The language code for Norwegian
+bokma*l changed from `no' to `nb' recently (in 2003).  During the
+transition period, while some message catalogs for this language are
+installed under `nb' and some older ones under `no', it's recommended
+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
+older translations are used.
+
+   In the `LANGUAGE' environment variable, but not in the `LANG'
+environment variable, `LL_CC' combinations can be abbreviated as `LL'
+to denote the language's main dialect.  For example, `de' is equivalent
+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
+(Portuguese as spoken in Portugal) in this context.
+
+1.4 Translating Teams
+=====================
+
+For the Free Translation Project to be a success, we need interested
+people who like their own language and write it well, and who are also
+able to synergize with other translators speaking the same language.
+Each translation team has its own mailing list.  The up-to-date list of
+teams can be found at the Free Translation Project's homepage,
+`http://translationproject.org/', in the "Teams" area.
+
+   If you'd like to volunteer to _work_ at translating messages, you
+should become a member of the translating team for your own language.
+The subscribing address is _not_ the same as the list itself, it has
+`-request' appended.  For example, speakers of Swedish can send a
+message to `sv-request@li.org', having this message body:
+
+     subscribe
+
+   Keep in mind that team members are expected to participate
+_actively_ in translations, or at solving translational difficulties,
+rather than merely lurking around.  If your team does not exist yet and
+you want to start one, or if you are unsure about what to do or how to
+get started, please write to `coordinator@translationproject.org' to
+reach the coordinator for all translator teams.
+
+   The English team is special.  It works at improving and uniformizing
+the terminology in use.  Proven linguistic skills are praised more than
+programming skills, here.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of November
+2007.  The matrix shows, in regard of each package, for which languages
+PO files have been submitted to translation coordination, with a
+translation percentage of at least 50%.
+
+     Ready PO files       af am ar az be bg bs ca cs cy da de el en en_GB eo
+                        +----------------------------------------------------+
+     Compendium         |                      []       [] []        []      |
+     a2ps               |             []                [] [] []     []      |
+     aegis              |                                  ()                |
+     ant-phone          |                                  ()                |
+     anubis             |                                  []                |
+     ap-utils           |                                                    |
+     aspell             |                      [] []    [] []        []      |
+     bash               |                                                 [] |
+     bfd                |                                                    |
+     bibshelf           |                                  []                |
+     binutils           |                                                    |
+     bison              |                               [] []                |
+     bison-runtime      |                                  []                |
+     bluez-pin          | []                      []       [] []          [] |
+     cflow              |                               []                   |
+     clisp              |                               [] []    []          |
+     console-tools      |                         []       []                |
+     coreutils          |                []    [] []       []                |
+     cpio               |                                                    |
+     cpplib             |                      []       [] []                |
+     cryptonit          |                                  []                |
+     dialog             |                                                    |
+     diffutils          |                      [] []    [] [] []          [] |
+     doodle             |                                  []                |
+     e2fsprogs          |                         []       []                |
+     enscript           |                      []       [] []        []      |
+     fetchmail          |                      []       [] () []     []      |
+     findutils          |                []                                  |
+     findutils_stable   |                []    []       []                   |
+     flex               |                      []       [] []                |
+     fslint             |                                                    |
+     gas                |                                                    |
+     gawk               |                      []       [] []                |
+     gcal               |                      []                            |
+     gcc                |                                  []                |
+     gettext-examples   | []                   []          [] []          [] |
+     gettext-runtime    |             []       []       [] []             [] |
+     gettext-tools      |                      []          []                |
+     gip                |                []                                  |
+     gliv               |                []                []                |
+     glunarclock        |                []                                  |
+     gmult              | []                               []                |
+     gnubiff            |                                  ()                |
+     gnucash            |                      [] []       () ()     []      |
+     gnuedu             |                                                    |
+     gnulib             |                []                                  |
+     gnunet             |                                                    |
+     gnunet-gtk         |                                                    |
+     gnutls             |                                  []                |
+     gpe-aerial         |                         []       []                |
+     gpe-beam           |                         []       []                |
+     gpe-calendar       |                                                    |
+     gpe-clock          |                         []       []                |
+     gpe-conf           |                         []       []                |
+     gpe-contacts       |                                                    |
+     gpe-edit           |                         []                         |
+     gpe-filemanager    |                                                    |
+     gpe-go             |                         []                         |
+     gpe-login          |                         []       []                |
+     gpe-ownerinfo      |                         []       []                |
+     gpe-package        |                                                    |
+     gpe-sketchbook     |                         []       []                |
+     gpe-su             |                         []       []                |
+     gpe-taskmanager    |                         []       []                |
+     gpe-timesheet      |                         []                         |
+     gpe-today          |                         []       []                |
+     gpe-todo           |                                                    |
+     gphoto2            |                         []    [] []        []      |
+     gprof              |                               [] []                |
+     gpsdrive           |                                                    |
+     gramadoir          | []                               []                |
+     grep               |                         []                      [] |
+     gretl              |                                  ()                |
+     gsasl              |                                                    |
+     gss                |                                                    |
+     gst-plugins-bad    |                []             []                   |
+     gst-plugins-base   |                []             []                   |
+     gst-plugins-good   |                []    []       []                   |
+     gst-plugins-ugly   |                []             []                   |
+     gstreamer          | []             []    [] []    [] []        []      |
+     gtick              |                                  ()                |
+     gtkam              |             []          []    [] []                |
+     gtkorphan          |                []                []                |
+     gtkspell           |             []                   [] []          [] |
+     gutenprint         |                               []                   |
+     hello              |                []    []       [] []             [] |
+     herrie             |                                  []                |
+     hylafax            |                                                    |
+     idutils            |                               [] []                |
+     indent             |                      [] []       []             [] |
+     iso_15924          |                                                    |
+     iso_3166           |       []    [] [] [] [] [] [] [] [] []          [] |
+     iso_3166_2         |                                                    |
+     iso_4217           |                         []    [] []                |
+     iso_639            |                         []    [] []             [] |
+     jpilot             |                         []                         |
+     jtag               |                                                    |
+     jwhois             |                                                    |
+     kbd                |                         []    [] [] []             |
+     keytouch           |                      []          []                |
+     keytouch-editor    |                                  []                |
+     keytouch-keyboa... |                      []                            |
+     latrine            |                                  ()                |
+     ld                 |                               []                   |
+     leafpad            |                []    [] []       [] []             |
+     libc               |                      [] []    [] []                |
+     libexif            |                                  []                |
+     libextractor       |                                  []                |
+     libgpewidget       |                         []    [] []                |
+     libgpg-error       |                                  []                |
+     libgphoto2         |                               [] []                |
+     libgphoto2_port    |                               [] []                |
+     libgsasl           |                                                    |
+     libiconv           |                                  []             [] |
+     libidn             |                         []    []                [] |
+     lifelines          |                               [] ()                |
+     lilypond           |                                  []                |
+     lingoteach         |                                                    |
+     lprng              |                                                    |
+     lynx               |                      [] []    [] []                |
+     m4                 |                         []    [] [] []             |
+     mailfromd          |                                                    |
+     mailutils          |                      []                            |
+     make               |                               [] []                |
+     man-db             |                      []       [] []                |
+     minicom            |                         []    [] []                |
+     nano               |                []    []          []                |
+     opcodes            |                                  []                |
+     parted             |                         []       []                |
+     pilot-qof          |                                                    |
+     popt               |                         []    [] []                |
+     psmisc             |                []                                  |
+     pwdutils           |                                                    |
+     qof                |                                                    |
+     radius             |                      []                            |
+     recode             |             []       []       [] [] []          [] |
+     rpm                |                               []                   |
+     screem             |                                                    |
+     scrollkeeper       |          [] []       [] [] [] [] []        []      |
+     sed                |                      []          []             [] |
+     shared-mime-info   |                []    [] []    [] () []     []   [] |
+     sharutils          |                []    [] []    [] [] []             |
+     shishi             |                                                    |
+     skencil            |                               [] ()                |
+     solfege            |                                                    |
+     soundtracker       |                               [] []                |
+     sp                 |                                  []                |
+     system-tools-ba... |       []       [] [] [] []    [] [] []     []      |
+     tar                |                []                []                |
+     texinfo            |                               [] []             [] |
+     tin                |                                  ()        ()      |
+     tuxpaint           | []             []             [] []        []   [] |
+     unicode-han-tra... |                                                    |
+     unicode-transla... |                                                    |
+     util-linux         |                      [] []    [] []                |
+     util-linux-ng      |                      [] []    [] []                |
+     vorbis-tools       |                         []                         |
+     wastesedge         |                                  ()                |
+     wdiff              |                      []       [] []        []      |
+     wget               |                      [] []       []                |
+     xchat              |             [] []    [] []       [] []     []      |
+     xkeyboard-config   |                []                                  |
+     xpad               |                []             []           []      |
+                        +----------------------------------------------------+
+                          af am ar az be bg bs ca cs cy da de el en en_GB eo
+                           6  0  2  1  8 26  2 40 48  2 56 88 15  1  15   18
+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                        +--------------------------------------------------+
+     Compendium         | []          [] []  []                []          |
+     a2ps               |    []       [] []                             () |
+     aegis              |                                                  |
+     ant-phone          |                []                                |
+     anubis             |                []                                |
+     ap-utils           |             [] []                                |
+     aspell             |                []  []                         [] |
+     bash               | []                                               |
+     bfd                | []          []                                   |
+     bibshelf           | []                 []                         [] |
+     binutils           | []          [] []                                |
+     bison              | [] []          []  []                   []    [] |
+     bison-runtime      |    []          []  []                   []    [] |
+     bluez-pin          |             [] []  []                [] []       |
+     cflow              |                    []                            |
+     clisp              | []             []                                |
+     console-tools      |                                                  |
+     coreutils          | [] []       [] []  []                []          |
+     cpio               | []             []  []                            |
+     cpplib             | []             []                                |
+     cryptonit          |                []                                |
+     dialog             |       []           []                         [] |
+     diffutils          | []          [] []  [] []    []       [] []    [] |
+     doodle             |                    []                         [] |
+     e2fsprogs          | []             []                             [] |
+     enscript           |                []  []             []             |
+     fetchmail          | []                                               |
+     findutils          |    []              []                []          |
+     findutils_stable   |    []          []  []                []          |
+     flex               | []             []  []                            |
+     fslint             |                                                  |
+     gas                | []             []                                |
+     gawk               | []             []  []       []                () |
+     gcal               | []             []                                |
+     gcc                | []                                               |
+     gettext-examples   | []          [] []  []                [] []    [] |
+     gettext-runtime    | []          [] []  []                   []    [] |
+     gettext-tools      | []    []       []                             [] |
+     gip                | []    []       []  []                            |
+     gliv               |                ()                                |
+     glunarclock        |             []     []                []          |
+     gmult              |       []       []                             [] |
+     gnubiff            |                ()                             () |
+     gnucash            | ()             ()                    ()          |
+     gnuedu             | []                                               |
+     gnulib             | [] []              []                            |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                                                  |
+     gpe-aerial         | []             []                                |
+     gpe-beam           | []             []                                |
+     gpe-calendar       |                                                  |
+     gpe-clock          | []          [] []                    []          |
+     gpe-conf           |                []                                |
+     gpe-contacts       | []             []                                |
+     gpe-edit           | []             []                    [] []       |
+     gpe-filemanager    | []                                               |
+     gpe-go             | []             []                    []          |
+     gpe-login          | []             []                    []          |
+     gpe-ownerinfo      | []          [] []                    [] []       |
+     gpe-package        | []                                               |
+     gpe-sketchbook     | []             []                                |
+     gpe-su             | []          [] []                    []          |
+     gpe-taskmanager    | []          [] []                                |
+     gpe-timesheet      | []             []  []                   []       |
+     gpe-today          | []          [] []  []                            |
+     gpe-todo           | []                                               |
+     gphoto2            | []          [] []                    []       [] |
+     gprof              | []          [] []  []                   []       |
+     gpsdrive           |    []                                            |
+     gramadoir          |                []  []                            |
+     grep               | []          []     []                            |
+     gretl              | []    []       []                             () |
+     gsasl              |                    []                   []       |
+     gss                |                []  []                            |
+     gst-plugins-bad    | []          []                       []       [] |
+     gst-plugins-base   | []          []                       []       [] |
+     gst-plugins-good   | []    []    []                       []       [] |
+     gst-plugins-ugly   | []          []                       []       [] |
+     gstreamer          |             []                       []       [] |
+     gtick              |             []     []                         [] |
+     gtkam              | []             []                    []       [] |
+     gtkorphan          |                []                             [] |
+     gtkspell           | []    []    [] []  []                []       [] |
+     gutenprint         |                                      []          |
+     hello              | [] [] [] [] [] []  [] []    []    [] [] []    [] |
+     herrie             |                    []                            |
+     hylafax            |                                                  |
+     idutils            |                []  []                [] []    [] |
+     indent             | [] [] []    [] []  [] []             [] []    [] |
+     iso_15924          |                []                                |
+     iso_3166           | [] [] []    [] []     [] [] [] [] [] [] []    [] |
+     iso_3166_2         |                []                                |
+     iso_4217           | [] []       [] []                    []       [] |
+     iso_639            | []       [] [] []  []                []          |
+     jpilot             | []             []                                |
+     jtag               |                []                                |
+     jwhois             | []             []                    [] []    [] |
+     kbd                | []             []                                |
+     keytouch           |                []  []                         [] |
+     keytouch-editor    |                    []                            |
+     keytouch-keyboa... |                    []                         [] |
+     latrine            |                    []                         [] |
+     ld                 | []          [] []  []                            |
+     leafpad            | []             []  []       []       []       [] |
+     libc               | []          [] []     []             []          |
+     libexif            | []                                               |
+     libextractor       |                    []                            |
+     libgpewidget       | []             []  []                [] []       |
+     libgpg-error       |                []                                |
+     libgphoto2         | []             []                             [] |
+     libgphoto2_port    |                []                             [] |
+     libgsasl           |                []  []                            |
+     libiconv           |    []       []     []                            |
+     libidn             |                []                             [] |
+     lifelines          |                ()                                |
+     lilypond           | []          [] []                                |
+     lingoteach         |                []                       []    [] |
+     lprng              |                                                  |
+     lynx               |    []                                []       [] |
+     m4                 |                []  [] []                []       |
+     mailfromd          |                                                  |
+     mailutils          | []             []                                |
+     make               | []          [] []  [] []    []    []    []       |
+     man-db             |                                               [] |
+     minicom            | []          [] []                    []          |
+     nano               | []    []       []  [] []             []       [] |
+     opcodes            | []          [] []  []                            |
+     parted             |                []                       []    [] |
+     pilot-qof          |                                                  |
+     popt               |                []  [] []                   []    |
+     psmisc             |                                      []       [] |
+     pwdutils           |                                                  |
+     qof                |                                         []       |
+     radius             | []             []                                |
+     recode             | []             []  [] []    []       [] []    [] |
+     rpm                |                []                       []       |
+     screem             |                                                  |
+     scrollkeeper       | []          []                       []          |
+     sed                | [] []          []  []                []          |
+     shared-mime-info   | []    []    [] []                    []       [] |
+     sharutils          | [] []       [] []  [] []             []       [] |
+     shishi             |                []                                |
+     skencil            | []             []                                |
+     solfege            |                                               [] |
+     soundtracker       | []             []                             [] |
+     sp                 |                []                                |
+     system-tools-ba... | []    []    [] []  []             [] [] []    [] |
+     tar                |    [] []    []     []                []          |
+     texinfo            |                []           []       []          |
+     tin                |    []          ()                                |
+     tuxpaint           |                    []                []          |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                []  []                            |
+     util-linux         | [] []       [] []                    [] []    [] |
+     util-linux-ng      | [] []       [] []                    [] []    [] |
+     vorbis-tools       |                                                  |
+     wastesedge         |                ()                                |
+     wdiff              | [] []          []  [] []             [] []    [] |
+     wget               |    []       [] []  []             [] [] []    [] |
+     xchat              | []          [] []        []    []    []       [] |
+     xkeyboard-config   | []          [] []                    []          |
+     xpad               | []                 []                []          |
+                        +--------------------------------------------------+
+                          es et eu fa fi fr  ga gl gu he hi hr hu id is it
+                          85 22 14  2 48 101 61 12  2  8  2  6 53 29  1 52
+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                        +--------------------------------------------------+
+     Compendium         |                                           []     |
+     a2ps               |       ()                      []          []     |
+     aegis              |                                           ()     |
+     ant-phone          |                                           []     |
+     anubis             |                               []    []    []     |
+     ap-utils           |                               []                 |
+     aspell             |                            []             []     |
+     bash               |                                           []     |
+     bfd                |                                                  |
+     bibshelf           |                               []                 |
+     binutils           |                                                  |
+     bison              |                               []    []    []     |
+     bison-runtime      |                               []    []    []     |
+     bluez-pin          |          []                   []          []     |
+     cflow              |                                                  |
+     clisp              |                                           []     |
+     console-tools      |                                                  |
+     coreutils          |                                           []     |
+     cpio               |                                           []     |
+     cpplib             |                                           []     |
+     cryptonit          |                                           []     |
+     dialog             |                               []          []     |
+     diffutils          | []                            []          []     |
+     doodle             |                                                  |
+     e2fsprogs          |                                           []     |
+     enscript           |                                           []     |
+     fetchmail          | []                                        []     |
+     findutils          |                                           []     |
+     findutils_stable   |                                           []     |
+     flex               |       []                                  []     |
+     fslint             |                                                  |
+     gas                |                                                  |
+     gawk               | []                                        []     |
+     gcal               |                                                  |
+     gcc                |                                                  |
+     gettext-examples   | []                            []          []     |
+     gettext-runtime    | []    []                                  []     |
+     gettext-tools      | []    []                                         |
+     gip                |                               []          []     |
+     gliv               |                                           []     |
+     glunarclock        |                               []          []     |
+     gmult              | []                            []          []     |
+     gnubiff            |                                                  |
+     gnucash            | ()                                  () ()        |
+     gnuedu             |                                                  |
+     gnulib             | []                                        []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                                  |
+     gnutls             |                               []                 |
+     gpe-aerial         |                                           []     |
+     gpe-beam           |                                           []     |
+     gpe-calendar       | []                                               |
+     gpe-clock          | []    []                                  []     |
+     gpe-conf           | []    []                                  []     |
+     gpe-contacts       |       []                                         |
+     gpe-edit           | []    []                                  []     |
+     gpe-filemanager    | []    []                                         |
+     gpe-go             | []    []                                  []     |
+     gpe-login          | []    []                                  []     |
+     gpe-ownerinfo      | []                                        []     |
+     gpe-package        | []    []                                         |
+     gpe-sketchbook     |       []                                  []     |
+     gpe-su             | []    []                                  []     |
+     gpe-taskmanager    | []    [] []                               []     |
+     gpe-timesheet      |                                           []     |
+     gpe-today          | []                                        []     |
+     gpe-todo           | []                                               |
+     gphoto2            | []                                        []     |
+     gprof              |                               []                 |
+     gpsdrive           |                                           []     |
+     gramadoir          |                                           ()     |
+     grep               |             []                            []     |
+     gretl              |                                                  |
+     gsasl              |                                           []     |
+     gss                |                                                  |
+     gst-plugins-bad    |                                           []     |
+     gst-plugins-base   |                                           []     |
+     gst-plugins-good   |                                           []     |
+     gst-plugins-ugly   |                                           []     |
+     gstreamer          |                                           []     |
+     gtick              |                                           []     |
+     gtkam              | []                                        []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |                            []             []     |
+     gutenprint         |                                           []     |
+     hello              | [] [] []                      []    []    []  [] |
+     herrie             |                                           []     |
+     hylafax            |                                                  |
+     idutils            |                                           []     |
+     indent             | []                                        []     |
+     iso_15924          |                                           []     |
+     iso_3166           | []    [] []       []    []          []    []  [] |
+     iso_3166_2         |                                           []     |
+     iso_4217           | []                []                      []     |
+     iso_639            | []                []                      []  [] |
+     jpilot             | ()                                        ()     |
+     jtag               |                                                  |
+     jwhois             |                                           []     |
+     kbd                |                                           []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                                  |
+     latrine            |                                           []     |
+     ld                 |                                                  |
+     leafpad            | []                []                             |
+     libc               | []    []                                  []     |
+     libexif            |                                                  |
+     libextractor       |                                                  |
+     libgpewidget       |                                           []     |
+     libgpg-error       |                                                  |
+     libgphoto2         | []                                               |
+     libgphoto2_port    | []                                               |
+     libgsasl           |                                           []     |
+     libiconv           |                                           []     |
+     libidn             | []                                        []     |
+     lifelines          |                                           []     |
+     lilypond           |                                           []     |
+     lingoteach         |                                           []     |
+     lprng              |                                                  |
+     lynx               | []                                        []     |
+     m4                 | []                                        []     |
+     mailfromd          |                                                  |
+     mailutils          |                                                  |
+     make               | []    []                                  []     |
+     man-db             |                                                  |
+     minicom            | []                                               |
+     nano               |                               []    []    []     |
+     opcodes            |                                           []     |
+     parted             | []                                        []     |
+     pilot-qof          |                                                  |
+     popt               | []    []                                  []     |
+     psmisc             | []                                  []    []     |
+     pwdutils           |                                                  |
+     qof                |                                                  |
+     radius             |                                                  |
+     recode             |                                           []     |
+     rpm                | []    []                                         |
+     screem             | []                                               |
+     scrollkeeper       |                                     [] [] []  [] |
+     sed                | []                                        []     |
+     shared-mime-info   | []    []          []          []    []    []  [] |
+     sharutils          | []                                        []     |
+     shishi             |                                                  |
+     skencil            |                                                  |
+     solfege            |                                     ()        () |
+     soundtracker       |                                                  |
+     sp                 | ()                                               |
+     system-tools-ba... | []    []          []                      []     |
+     tar                | []          []                            []     |
+     texinfo            |                                     []    []     |
+     tin                |                                                  |
+     tuxpaint           |                                     ()    []  [] |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         | []                                        []     |
+     util-linux-ng      | []                                        []     |
+     vorbis-tools       |                                                  |
+     wastesedge         |                                           []     |
+     wdiff              |                               []    []           |
+     wget               | []                                        []     |
+     xchat              | []    []                []                []     |
+     xkeyboard-config   |    [] []                                  []     |
+     xpad               |       []                      []          []     |
+                        +--------------------------------------------------+
+                          ja ka ko ku ky lg lt lv mk mn ms mt nb ne nl  nn
+                          51  2 25  3  2  0  6  0  2  2 20  0 11  1 103  6
+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                        +--------------------------------------------------+
+     Compendium         |          []  []      []       []          []     |
+     a2ps               |       ()     []      [] []       []    [] []     |
+     aegis              |                      () ()                       |
+     ant-phone          |                      []                   []     |
+     anubis             |       []             [] []                       |
+     ap-utils           |       ()                                         |
+     aspell             |                      [] []    []                 |
+     bash               |       []                      []                 |
+     bfd                |                                                  |
+     bibshelf           |                                           []     |
+     binutils           |                         []    []                 |
+     bison              |       []     []      [] []                []     |
+     bison-runtime      |       []     []      []          []       []     |
+     bluez-pin          |       []     []   [] [] []    [] []    [] []     |
+     cflow              |       []                                         |
+     clisp              |                         []                       |
+     console-tools      |                         []                       |
+     coreutils          |       []                []       []       []     |
+     cpio               |       []                []                []     |
+     cpplib             |                                           []     |
+     cryptonit          |              []                           []     |
+     dialog             |                                           []     |
+     diffutils          |       []     []      [] []             [] []     |
+     doodle             |                                     []    []     |
+     e2fsprogs          |       []                                  []     |
+     enscript           |              []      [] []       []       []     |
+     fetchmail          |       []                []          []           |
+     findutils          |       [] []                               []     |
+     findutils_stable   |       [] []          []       [] []       []     |
+     flex               |       []     []      [] []                []     |
+     fslint             |                                           []     |
+     gas                |                                                  |
+     gawk               |       []     []      []                   []     |
+     gcal               |                                           []     |
+     gcc                |                                        [] []     |
+     gettext-examples   |       [] []          [] []    [] []    [] []     |
+     gettext-runtime    |       [] []          [] []    [] []    [] []     |
+     gettext-tools      |       []             [] []    [] []    [] []     |
+     gip                |                   []          []       [] []     |
+     gliv               |       []     []      [] []    []          []     |
+     glunarclock        |              []      [] []    []       [] []     |
+     gmult              |                   [] []                [] []     |
+     gnubiff            |                      ()                   []     |
+     gnucash            |       ()                                  []     |
+     gnuedu             |                                                  |
+     gnulib             |       []                         []       []     |
+     gnunet             |                                                  |
+     gnunet-gtk         |                                           []     |
+     gnutls             |       []                                  []     |
+     gpe-aerial         |          []  []      [] []       []    [] []     |
+     gpe-beam           |          []  []      [] []       []    [] []     |
+     gpe-calendar       |                         []       []    [] []     |
+     gpe-clock          |          []  []      [] []    [] []    [] []     |
+     gpe-conf           |          []  []      [] []    [] []       []     |
+     gpe-contacts       |                      [] []       []    [] []     |
+     gpe-edit           |       [] []  []      [] []    [] []    [] []     |
+     gpe-filemanager    |                                  []       []     |
+     gpe-go             |       []     []      [] []    [] []    [] []     |
+     gpe-login          |          []  []      [] []    [] []    [] []     |
+     gpe-ownerinfo      |          []  []      [] []    [] []    [] []     |
+     gpe-package        |                                  []       []     |
+     gpe-sketchbook     |          []  []      [] []    [] []    [] []     |
+     gpe-su             |          []  []      [] []    [] []    [] []     |
+     gpe-taskmanager    |          []  []      [] []    [] []    [] []     |
+     gpe-timesheet      |          []  []      [] []    [] []    [] []     |
+     gpe-today          |          []  []      [] []    [] []    [] []     |
+     gpe-todo           |                         []       []    [] []     |
+     gphoto2            |    [] []             []       []       [] []     |
+     gprof              |              []      []                   []     |
+     gpsdrive           |                         []                []     |
+     gramadoir          |                               []          []     |
+     grep               |       []                      [] []       []     |
+     gretl              |       [] []  []                                  |
+     gsasl              |       []                               [] []     |
+     gss                |       []             []       []          []     |
+     gst-plugins-bad    |       []     []                           []     |
+     gst-plugins-base   |       []                                  []     |
+     gst-plugins-good   |       []                                  []     |
+     gst-plugins-ugly   |       []     []                           []     |
+     gstreamer          |       []                            [] [] []     |
+     gtick              |                         []                       |
+     gtkam              |    [] []     []         []                []     |
+     gtkorphan          |                                           []     |
+     gtkspell           |              []   [] [] []    [] []    [] []     |
+     gutenprint         |                                           []     |
+     hello              |       []     []      [] []    [] []    [] []     |
+     herrie             |       []                []                []     |
+     hylafax            |                                                  |
+     idutils            |       []     []      [] []                []     |
+     indent             |       []     []      [] []    []       [] []     |
+     iso_15924          |                                                  |
+     iso_3166           |    [] [] []  []      [] [] [] [] [] [] [] []  [] |
+     iso_3166_2         |                                                  |
+     iso_4217           |       [] []             [] []    []    [] []     |
+     iso_639            |       []                [] [] [] []    [] []     |
+     jpilot             |                                                  |
+     jtag               |                               []                 |
+     jwhois             |       []     []      []                   []     |
+     kbd                |       []             []                   []     |
+     keytouch           |                                           []     |
+     keytouch-editor    |                                           []     |
+     keytouch-keyboa... |                                           []     |
+     latrine            |                                                  |
+     ld                 |                                           []     |
+     leafpad            |       [] []             []    []          []  [] |
+     libc               |       []                []    []          []     |
+     libexif            |       []                      []                 |
+     libextractor       |                      []                   []     |
+     libgpewidget       |       [] []  []      []       [] []    [] []     |
+     libgpg-error       |       []             []                   []     |
+     libgphoto2         |       []                                         |
+     libgphoto2_port    |       []                []                []     |
+     libgsasl           |       []             []                [] []     |
+     libiconv           |                                  []    [] []     |
+     libidn             |       []                               [] ()     |
+     lifelines          |       []                                  []     |
+     lilypond           |                                                  |
+     lingoteach         |              []                                  |
+     lprng              |       []                                         |
+     lynx               |              []         []                []     |
+     m4                 |       []     []      [] []                []     |
+     mailfromd          |       []                                         |
+     mailutils          |       []                []                []     |
+     make               |       []     []         []                []     |
+     man-db             |       []             [] []                []     |
+     minicom            |       []     []      [] []                []     |
+     nano               |              []      [] []                []     |
+     opcodes            |                      []                   []     |
+     parted             |       []                                         |
+     pilot-qof          |                                                  |
+     popt               |       [] []             []                []     |
+     psmisc             |       []                                  []     |
+     pwdutils           |       []                                  []     |
+     qof                |              []                           []     |
+     radius             |       []                []                       |
+     recode             |       [] []  []      [] []       []       []     |
+     rpm                |       [] []             []                []     |
+     screem             |                                                  |
+     scrollkeeper       |       []             [] []    []    [] [] []     |
+     sed                |       [] []  []      [] []    [] []    [] []     |
+     shared-mime-info   |       [] []  []                     [] [] []     |
+     sharutils          |       []                []             [] []     |
+     shishi             |       []                                         |
+     skencil            |          []  []                           []     |
+     solfege            |              []                                  |
+     soundtracker       |                               []          []     |
+     sp                 |                                                  |
+     system-tools-ba... |    [] [] []  []      []             [] [] []  [] |
+     tar                |       []                []       []       []     |
+     texinfo            |       []             [] []                []     |
+     tin                |                         ()                       |
+     tuxpaint           |       [] []                      [] [] [] []     |
+     unicode-han-tra... |                                                  |
+     unicode-transla... |                                                  |
+     util-linux         |              []         []       []       []     |
+     util-linux-ng      |              []         []       []       []     |
+     vorbis-tools       |                         []                       |
+     wastesedge         |                                                  |
+     wdiff              |       []     []      [] []    [] []       []     |
+     wget               |          []             []    []          []     |
+     xchat              |    []                   []    [] [] [] [] []     |
+     xkeyboard-config   |                               [] []       []     |
+     xpad               |                               [] []       []     |
+                        +--------------------------------------------------+
+                          or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv  ta
+                           0  5 77 31  53    4 58 72  3 45 46  9 45 122  3
+
+                          tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+                        +---------------------------------------------------+
+     Compendium         |          []        []         []          []      | 19
+     a2ps               |          [] []     []                             | 19
+     aegis              |                    []                             |  1
+     ant-phone          |          []        []                             |  6
+     anubis             |          [] []     []                             | 11
+     ap-utils           |             ()     []                             |  4
+     aspell             |             []     []  []                         | 16
+     bash               |          []                                       |  6
+     bfd                |                                                   |  2
+     bibshelf           |                    []                             |  7
+     binutils           |          [] []     []                     []      |  9
+     bison              |          [] []     []                     []      | 20
+     bison-runtime      |             []     []         []          []      | 18
+     bluez-pin          |          [] []     []  []     []          []      | 28
+     cflow              |             []     []                             |  5
+     clisp              |                                                   |  9
+     console-tools      |          []        []                             |  5
+     coreutils          |          [] []     []                             | 18
+     cpio               |          [] []     []         []                  | 11
+     cpplib             |          [] []     []         []          []      | 12
+     cryptonit          |                    []                             |  6
+     dialog             |                    []  []     []                  |  9
+     diffutils          |          [] []     []         []          []      | 29
+     doodle             |                    []                             |  6
+     e2fsprogs          |          []        []                             | 10
+     enscript           |          [] []     []                             | 16
+     fetchmail          |          []        []                             | 12
+     findutils          |          [] []     []                             | 11
+     findutils_stable   |          [] []     []                     []      | 18
+     flex               |          []        []                             | 15
+     fslint             |                    []                             |  2
+     gas                |          []                                       |  3
+     gawk               |          []        []         []                  | 16
+     gcal               |          []                                       |  5
+     gcc                |          []                   []          []      |  7
+     gettext-examples   |          [] []     []         []    []    []      | 29
+     gettext-runtime    |          [] []     []         []    []    []      | 28
+     gettext-tools      |          [] []     []         []          []      | 20
+     gip                |                    []                     []      | 13
+     gliv               |          []        []                             | 11
+     glunarclock        |                    []  []                 []      | 15
+     gmult              |          []        []         []          []      | 16
+     gnubiff            |                    []                             |  2
+     gnucash            |          () []                                    |  5
+     gnuedu             |                    []                             |  2
+     gnulib             |                    []                             | 10
+     gnunet             |                                                   |  0
+     gnunet-gtk         |          []        []                             |  3
+     gnutls             |                                                   |  4
+     gpe-aerial         |                    []         []                  | 14
+     gpe-beam           |                    []         []                  | 14
+     gpe-calendar       |                    []  []                         |  7
+     gpe-clock          |          []        []  []     []                  | 21
+     gpe-conf           |                    []  []     []                  | 16
+     gpe-contacts       |                    []         []                  | 10
+     gpe-edit           |          []        []  []     []          []      | 22
+     gpe-filemanager    |                    []  []                         |  7
+     gpe-go             |          []        []  []     []                  | 19
+     gpe-login          |          []        []  []     []          []      | 21
+     gpe-ownerinfo      |          []        []         []          []      | 21
+     gpe-package        |                    []                             |  6
+     gpe-sketchbook     |          []        []                             | 16
+     gpe-su             |          []        []  []     []                  | 21
+     gpe-taskmanager    |          []        []  []     []                  | 21
+     gpe-timesheet      |          []        []         []          []      | 18
+     gpe-today          |          []        []  []     []          []      | 21
+     gpe-todo           |                    []  []                         |  8
+     gphoto2            |             []     []         []          []      | 21
+     gprof              |          []        []                             | 13
+     gpsdrive           |                    []                             |  5
+     gramadoir          |                    []                             |  7
+     grep               |                    []                             | 12
+     gretl              |                                                   |  6
+     gsasl              |                    []         []          []      |  9
+     gss                |                    []                             |  7
+     gst-plugins-bad    |             []     []         []                  | 13
+     gst-plugins-base   |             []     []                             | 11
+     gst-plugins-good   |             []     []         []    []    []      | 16
+     gst-plugins-ugly   |             []     []         []                  | 13
+     gstreamer          |          [] []     []                             | 18
+     gtick              |             []     []                             |  7
+     gtkam              |                    []                             | 16
+     gtkorphan          |                    []                             |  7
+     gtkspell           |             []     []  []     []    []    []      | 27
+     gutenprint         |                                                   |  4
+     hello              |          [] []     []         []          []      | 38
+     herrie             |          []        []                             |  8
+     hylafax            |                                                   |  0
+     idutils            |          []        []                             | 15
+     indent             |          [] []     []         []          []      | 28
+     iso_15924          |                    []         []                  |  4
+     iso_3166           |    [] [] [] []     []  []     []    []    []      | 54
+     iso_3166_2         |                    []         []                  |  4
+     iso_4217           |    []    []        []         []    []            | 24
+     iso_639            |             []     []  []     []    []            | 26
+     jpilot             |          [] []     []         []                  |  7
+     jtag               |                    []                             |  3
+     jwhois             |          []        []                     []      | 13
+     kbd                |          [] []     []                             | 13
+     keytouch           |                    []                             |  8
+     keytouch-editor    |                    []                             |  5
+     keytouch-keyboa... |                    []                             |  5
+     latrine            |          []        []                             |  5
+     ld                 |          []        []         []          []      | 10
+     leafpad            |          [] []     []         []          []      | 24
+     libc               |          []                   []          []      | 19
+     libexif            |                    []                             |  5
+     libextractor       |                    []                             |  5
+     libgpewidget       |                    []  []     []                  | 20
+     libgpg-error       |                    []                             |  6
+     libgphoto2         |             []     []                             |  9
+     libgphoto2_port    |             []     []                     []      | 11
+     libgsasl           |                    []                             |  8
+     libiconv           |                    []  []                         | 11
+     libidn             |                    []         []                  | 11
+     lifelines          |                                                   |  4
+     lilypond           |                    []                             |  6
+     lingoteach         |                    []                             |  6
+     lprng              |                    []                             |  2
+     lynx               |          [] []     []                             | 15
+     m4                 |                    []         []          []      | 18
+     mailfromd          |             []     []                             |  3
+     mailutils          |             []     []                             |  8
+     make               |          []        []         []                  | 20
+     man-db             |                    []                             |  9
+     minicom            |                    []                             | 14
+     nano               |                    []         []          []      | 20
+     opcodes            |          []        []                             | 10
+     parted             |          [] []                            []      | 11
+     pilot-qof          |                    []                             |  1
+     popt               |          []        []         []          []      | 18
+     psmisc             |                    []         []                  | 10
+     pwdutils           |                    []                             |  3
+     qof                |                    []                             |  4
+     radius             |             []     []                             |  7
+     recode             |          []        []         []                  | 25
+     rpm                |          [] []     []                     []      | 13
+     screem             |                    []                             |  2
+     scrollkeeper       |          [] []     []                     []      | 26
+     sed                |          []        []         []          []      | 23
+     shared-mime-info   |             []     []         []                  | 29
+     sharutils          |          []        []                     []      | 23
+     shishi             |                    []                             |  3
+     skencil            |                    []                             |  7
+     solfege            |                    []                             |  3
+     soundtracker       |          []        []                             |  9
+     sp                 |          []                                       |  3
+     system-tools-ba... |    []    [] []     []     []  []          []      | 38
+     tar                |          [] []     []                             | 17
+     texinfo            |          []        []         []                  | 15
+     tin                |                                                   |  1
+     tuxpaint           |                    []  []                 []      | 19
+     unicode-han-tra... |                                                   |  0
+     unicode-transla... |                                                   |  2
+     util-linux         |          [] []     []                             | 20
+     util-linux-ng      |          [] []     []                             | 20
+     vorbis-tools       |             []     []                             |  4
+     wastesedge         |                                                   |  1
+     wdiff              |          []        []                             | 23
+     wget               |          []        []                     []      | 20
+     xchat              |             []     []         []          []      | 29
+     xkeyboard-config   |          [] []     []                             | 14
+     xpad               |                    []         []          []      | 15
+                        +---------------------------------------------------+
+       76 teams           tg th tk tr uk ven vi  wa xh zh_CN zh_HK zh_TW zu
+      163 domains          0  3  1 74 51  0  143 21  1  57     7    45    0  2036
+
+   Some counters in the preceding matrix are higher than the number of
+visible blocks let us expect.  This is because a few extra PO files are
+used for implementing regional variants of languages, or language
+dialects.
+
+   For a PO file in the matrix above to be effective, the package to
+which it applies should also have been internationalized and
+distributed as such by its maintainer.  There might be an observable
+lag between the mere existence a PO file and its wide availability in a
+distribution.
+
+   If November 2007 seems to be old, you may fetch a more recent copy
+of this `ABOUT-NLS' file on most GNU archive sites.  The most
+up-to-date matrix with full percentage details can be found at
+`http://translationproject.org/extra/matrix.html'.
+
+1.6 Using `gettext' in new packages
+===================================
+
+If you are writing a freely available program and want to
+internationalize it you are welcome to use GNU `gettext' in your
+package.  Of course you have to respect the GNU Library General Public
+License which covers the use of the GNU `gettext' library.  This means
+in particular that even non-free programs can use `libintl' as a shared
+library, whereas only free software can use `libintl' as a static
+library or use modified versions of `libintl'.
+
+   Once the sources are changed appropriately and the setup can handle
+the use of `gettext' the only thing missing are the translations.  The
+Free Translation Project is also available for packages which are not
+developed inside the GNU project.  Therefore the information given above
+applies also for every other Free Software Project.  Contact
+`coordinator@translationproject.org' to make the `.pot' files available
+to the translation teams.
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..5cef5a3
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,21 @@
+Erik Walthinsen <omega@temple-baptist.com>
+Matt Howell <mhowell@users.sourceforge.net>
+Brent Bradburn <bbradburn@users.sourceforge.net>
+Wim Taymans <wim.taymans@chello.be>
+Richard Boulton <richard@tartarus.org>
+Zaheer Abbas Merali <zaheerabbas at merali dot org>
+David I. Lehn <dlehn@users.sourceforge.net>
+Chris Emerson <chris@tartarus.org>
+Jens Thiele <karme@unforgettable.com>
+Thomas Nyberg <thomas@codefactory.se>
+Bastien Nocera <hadess@hadess.net>
+Christian Fredrik Kalager Schaller <Uraeus@linuxrising.org>
+Thomas Vander Stichele <thomas@apestaart.org>
+Andy Wingo <wingo@pobox.com>
+Cameron Hutchison <camh@xdna.net>
+David Schleef <ds@schleef.org>
+Benjamin Otte <in7y118@public.uni-hamburg.de>
+Ronald Bultje <rbultje@ronald.bitfreak.net>
+Julien MOUTTE <julien@moutte.net>
+Jan Schmidt <thaytan@mad.scientist.com>
+Arwed v. Merkatz <v.merkatz@gmx.net>
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..8add30a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 St, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..79dadd3
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,14524 @@
+=== release 0.10.19 ===
+
+2012-02-21  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         releasing 0.10.19, "Stronger"
+
+2012-02-21 00:56:07 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/ca.po:
+       * po/id.po:
+       * po/zh_CN.po:
+         po: update translations
+
+2012-02-05 13:41:08 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.18.3 pre-release
+
+2012-01-17 11:55:59 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrwbdec/amrwbdec.c:
+         amrwbdec: _parse should not return OK if not enough data yet
+
+2012-01-17 11:55:14 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrnb/amrnbdec.c:
+         amrnbdec: _parse should not return OK if not enough data yet
+
+2012-01-13 15:03:50 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: fix off by one in cell calculation for the last chapter
+
+2012-01-13 13:46:50 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: remove useless and semantically (though not practically) wrong code
+         The object will be freed, so it's pointless to set the pointers
+         to NULL anyway.
+
+2012-01-13 13:46:28 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: remove leaking "optimization"
+
+2012-01-04 19:41:34 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 11f0cd5 to cb5da59
+
+2012-01-04 17:05:32 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/lame/Makefile.am:
+         lame: fix LIBADD order in Makefile.am
+
+2011-12-27 22:54:34 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame: fix printf format in debug statements
+         https://bugzilla.gnome.org/show_bug.cgi?id=666926
+
+2011-12-26 18:24:32 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlame.h:
+         lame: ensure parsed output
+         ... by doing some basic parsing of encoded lame data.
+
+2011-12-26 16:34:01 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlame.h:
+         lame: cleanup unused instance struct fields
+
+2011-12-26 18:23:52 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/Makefile.am:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/lame/gstlamemp3enc.h:
+         lamemp3enc: ensure parsed output
+         ... by doing some basic parsing of encoded lame data.
+         Fixes #652150.
+
+2011-12-26 18:15:41 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: do not leak merged tags
+
+2009-01-25 22:49:11 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: map subtitle language tag to stream indicated in PGC data
+
+2009-01-25 22:49:11 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegstream/gstdvddemux.c:
+         dvddemux: tweak subtitle stream setup based on dvd language codes event
+         ... to allow for non-continuous subtitle stream numbers.
+         The missing stream numbers tend to come up as subtitle streams anyway
+         (albeit not with an identified language tag).
+
+2011-12-21 13:56:35 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: minor safety tweak to sector seeking
+
+2011-12-13 14:54:18 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Don't claim to support upstream renegotiation
+         and use fixed caps on the srcpad. To correctly support
+         upstream renegotiation a52dec would need to check if the
+         caps of the downstream allocated buffer are the requested
+         caps or if the size is different.
+         Fixes bug #665989.
+
+2011-12-13 14:52:26 +0100  Julien Isorce <julien.isorce@gmail.com>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Check that the a52_state is correctly initialized
+
+2011-12-12 11:33:31 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst-libs/gst/Makefile.am:
+       * gst-libs/gst/glib-compat-private.h:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rdtmanager.c:
+       * gst/realmedia/rmdemux.c:
+         Work around deprecated thread API in glib master
+         Add private replacements for deprecated functions such as
+         g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
+         to avoid the deprecation warnings. We can't change most of
+         these in 0.10 because they're part of our API and ABI.
+         Suppress deprecation warnings in selected files, mostly for
+         g_static_rec_mutex_*. StaticRecMutex is part of our API/ABI,
+         not much we can do here in 0.10.
+
+2011-12-10 15:23:26 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.18.2 pre-release
+
+2011-12-10 15:19:03 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/LINGUAS:
+       * po/eo.po:
+       * po/es.po:
+       * po/lv.po:
+       * po/sr.po:
+         po: update translations
+
+2011-12-09 15:25:21 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rdtdepay.c:
+         rdtdepay: make buffer metadata writable before setting caps on it
+         Fixes issue when the header buffer is being pushed, which was taken
+         from the caps and is therefore not writable.
+
+2011-11-29 08:49:23 +0100  Руслан Ижбулатов <lrn1986@gmail.com>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: Fix format string compiler warning
+         Fixes bug #665101.
+
+2011-11-28 13:10:01 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/a52dec/gsta52dec.c:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrwbdec/amrwbdec.c:
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/mad/gstmad.c:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/sidplay/gstsiddec.cc:
+       * ext/twolame/gsttwolame.c:
+       * ext/x264/gstx264enc.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstrtpasfdepay.c:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/dvdsub/gstdvdsubdec.c:
+       * gst/dvdsub/gstdvdsubparse.c:
+       * gst/iec958/ac3iec.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstxingmux.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/mpegstream/gstrfc2250enc.c:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rdtdepay.c:
+       * gst/realmedia/rdtmanager.c:
+       * gst/realmedia/rmdemux.c:
+       * gst/synaesthesia/gstsynaesthesia.c:
+         various: fix pad template ref leaks
+         https://bugzilla.gnome.org/show_bug.cgi?id=662664
+
+2011-10-29 11:57:40 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't leak pending payload buffers
+         Fixes #662964
+
+2011-10-27 16:53:44 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+       * ext/sidplay/gstsiddec.cc:
+         siddec: use BOILERPLATE macro and cleanup FIXMEs
+
+2011-10-05 12:05:34 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrwbdec/Makefile.am:
+       * ext/amrwbdec/amrwbdec.c:
+       * ext/amrwbdec/amrwbdec.h:
+         amrwbdec: port to audiodecoder
+
+2011-10-04 17:00:57 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrnb/Makefile.am:
+         amrnbdec: fixup build
+
+2011-10-04 17:00:41 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrnb/amrnbdec.c:
+         amrnbdec: remove leftover extraneous _unref
+
+2011-10-03 17:19:02 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbdec.h:
+         amrnbdec: port to audiodecoder
+
+2011-09-05 11:11:52 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         mpeg2dec: post QoS messages when dropping a frame due to QoS
+         https://bugzilla.gnome.org/show_bug.cgi?id=658241
+
+2011-09-27 17:01:59 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrnb/Makefile.am:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrnb/amrnbenc.h:
+         amrnbenc: port to audioencoder
+
+2011-09-26 16:29:12 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/twolame/gsttwolame.c:
+         twolame: Simple fix for GstAudioEncoder API change
+
+2011-09-26 16:28:08 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/twolame/gsttwolame.c:
+         twolame: Fix variable 'gstelement_class' set but not used compiler warning
+
+2011-09-26 16:08:20 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame: Don't get the parent class again, GST_BOILERPLATE does this already
+
+2011-09-26 16:07:54 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame: Fix variable 'gstelement_class' set but not used compiler warning
+
+2011-09-26 12:07:15 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/twolame/gsttwolame.c:
+         twolame: improve output framing and timestamping
+         ... which simply comes down to requesting one frame of input data at a time,
+         since the encoder nicely turns this into 1 encoded frame.
+
+2011-09-26 11:56:23 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/twolame/Makefile.am:
+       * ext/twolame/gsttwolame.c:
+       * ext/twolame/gsttwolame.h:
+         twolame: port to audioencoder
+
+2011-09-23 15:32:01 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+         lame: use some more boilerplate
+
+2011-09-23 15:26:48 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlame.h:
+         lame: port to audioencoder
+
+2011-09-23 14:33:55 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: use some more boilerplate
+
+2011-09-26 14:44:23 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: really report bitrate rather kbitrate
+
+2011-09-26 14:44:01 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/lame/Makefile.am:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/lame/gstlamemp3enc.h:
+         lamemp3enc: port to audioencoder
+
+2011-09-16 15:35:06 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: take into account first sector of the current title
+         This fixes seeking on titles which do not start on a new file.
+         https://bugzilla.gnome.org/show_bug.cgi?id=659252
+
+2011-09-16 15:03:54 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: fix sector seeking
+         It was overly complicated, and did not take into account the offset
+         needed for titles which do not start on a new file.
+         https://bugzilla.gnome.org/show_bug.cgi?id=659252
+
+2011-09-16 13:42:53 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: fix sector search for packed titles
+         Some DVD titles are packed in a single set, and we need to use
+         the correct table to map times to sectors.
+         https://bugzilla.gnome.org/show_bug.cgi?id=659252
+
+2011-08-15 16:23:04 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * ext/mad/Makefile.am:
+       * ext/mad/gstmad.c:
+       * gst-plugins-ugly.spec.in:
+         mad: remove id3tag dependency used by in practice unreachable legacy code
+         The mad mp3 decoder element shouldn't parse tags at all really, but we
+         have so far kept this code around for backwards-compatibility reasons
+         for people building manual pipelines for some reason. However, as it
+         turns out that code has never actually worked in 0.10 in practice,
+         since it only gets executed if mad_frame_decode() returns LOSTSYNC,
+         which doesn't actually seem to happen any more though because of the
+         preceding mad_header_decode(), which will discover and report the
+         sync loss if it runs into a tag and make mad_frame_decode() try to
+         resync right away.
+         Discovered this while trying to make it use gst_tag_list_from_id3v2_tag().
+
+2011-09-08 17:01:27 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+         asfpacket: skip empty payload packets
+         ... which also avoids assertion failures and possible segfaults later on
+         when possibly trying to join 2 empty buffers.
+
+2011-09-08 14:33:00 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rmdemux.h:
+         rmdemux: delay announcing container tags until we have pads
+         Fixes tags when transcoding.
+         https://bugzilla.gnome.org/show_bug.cgi?id=658297
+
+2011-09-07 14:36:46 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * tests/check/elements/amrnbenc.c:
+         amrnbenc: Use complete raw audio caps in the test
+
+2011-09-07 14:25:41 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+       * docs/plugins/Makefile.am:
+         docs: cleanup makefiles
+         Remove commented out parts that we don't need. Remove "the wingo addition" - no
+         so useful after all. Narrow down file-globs for plugin docs.
+
+2011-09-06 21:25:13 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From a39eb83 to 11f0cd5
+
+2011-09-06 15:40:55 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 605cd9a to a39eb83
+
+2011-08-22 17:49:14 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: fix spurious failure to decode some files
+         Parsing can return with an 'invalid' state, but this is not
+         actually fatal. For one, the mpeg2dec command line tool that
+         comes with the libmpeg2 library blithely ignores this condition
+         and merrily goes on. So we do this same, logging the error,
+         and going on with parsing. This makes something work that did
+         not use to work, and brings happiness to the world.
+         https://bugzilla.gnome.org/show_bug.cgi?id=429476
+
+2011-07-30 18:47:44 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Properly set the stream format in setcaps
+         Do not forget to set the selected format to the options string
+         when getting it from caps
+         https://bugzilla.gnome.org/show_bug.cgi?id=655223
+
+2011-07-19 15:06:49 +0200  Stefan Sauer <ensonic@google.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: fix the build for older x264enc
+         b_fake_interlaced was introduced in x264 commit 1b48874d06 = X264_BUILD 96.
+
+2011-07-18 20:41:20 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Read stream-format from the right place
+         Read the stream-format from "stream-format" and not from profile, also rename
+         the "bytestream" variable to "stream_format" so it's easier to understand.
+
+2011-06-13 23:24:27 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Select stream-format based on caps
+         Makes x264 select its stream-format based on what's available
+         on caps, the user selected option will be chosen as a fallback
+         when both options are available.
+         https://bugzilla.gnome.org/show_bug.cgi?id=644233
+
+2011-07-04 18:03:49 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+       * ext/x264/gstx264enc.c:
+         x264: Allow renegotiation but prefer current caps
+
+2011-06-09 20:20:27 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+       * tests/check/elements/x264enc.c:
+         tests: Test x264enc profiles from the caps
+         https://bugzilla.gnome.org/show_bug.cgi?id=644233
+
+2011-03-07 17:58:34 -0500  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/Makefile.am:
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264: Use profile and level from caps
+         Enforces the profile and level from the downstream caps, also
+         sets them on the fixated caps
+         https://bugzilla.gnome.org/show_bug.cgi?id=644233
+
+2011-06-25 06:29:50 +0300  Brian Gitonga Marete <marete@toshnix.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: fix subme property annotation - subme maximum is 10, not 6.
+         Although the element accepts subme values > 6, the annotation which is
+         visible through gst-inspect (for example) erroneously indicates 6 as the
+         maximum. Fix this by indicating 10 (which is the x264 max) as the maximum.
+         https://bugzilla.gnome.org/show_bug.cgi?id=653473
+
+2011-06-23 11:28:58 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From 69b981f to 605cd9a
+
+2011-06-06 12:41:03 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: fix fragmented packet handling and packet padding
+         Also remove a bogus assert.
+
+2011-06-03 11:35:55 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+         synaesthesia: fix wrong debug log string (copy'n'paste)
+
+2011-05-20 13:32:31 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: target is unsigned and can't be < 0
+
+2011-05-20 13:31:14 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/mad/gstmad.c:
+         mad: use signed when caluculating the delta
+         Avoids a <0 check for an unsigned variable.
+
+2011-05-19 23:55:41 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * docs/plugins/Makefile.am:
+         docs: remove obsolete commented out part
+         We don't have this in the other modules and its not needed.
+
+2011-05-19 23:38:23 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+         docs: update plugin introspection data
+         Now more files are merged and produced in a canonical fashion, which hopefully
+         creates less or no delta in the future.
+
+2011-05-19 22:58:28 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 9e5bbd5 to 69b981f
+
+2011-05-18 14:49:17 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/Makefile.am:
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: Post CODEC and BITRATE tags
+         Also filter any CODEC/AUDIO_CODEC tags from incoming
+         tag events.
+         Fixes bug #391543.
+
+2011-05-18 16:10:55 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From fd35073 to 9e5bbd5
+
+2011-05-18 12:25:01 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 46dfcea to fd35073
+
+2011-04-27 15:20:20 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: simplify and refactor packet parsing
+         Specifically, refactor buffer padding and consider marker bit for fragment
+         assembling.
+
+2011-04-27 15:14:00 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: avoid re-sending header
+         ... e.g. following a seek, which otherwise confuses downstream demuxer
+         expecting only a flow of data packets at this time.
+
+2011-04-27 15:12:22 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+       * gst/asfdemux/gstrtpasfdepay.h:
+         rtpasfdepay: remove unused field
+
+2011-04-29 09:19:19 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mad/gstmad.c:
+         mad: Post bitrate tag whenever the bitrate changes
+         Also send the layer/mode/emphasis/bitrate tags as an event too.
+
+2011-05-14 10:09:16 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         win32: define GST_PACKAGE_RELEASE_DATETIME in win32 config.h as well
+
+2011-05-14 10:06:31 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Back to development
+
+=== release 0.10.18 ===
+
+2011-05-10 10:26:50 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.18
+         Highlights:
+         - x264enc: allow changing bitrate and quantizers dynamically at runtime
+         - x264enc: proxy downstream caps restrictions upstream via get_caps()
+         - lamemp3enc: proxy downstream rate/channels restrictions upstream via get_caps()
+         - mad: allow build without libid3tag (which isn't really needed anyway)
+         - many other fixes and improvements
+
+2011-05-04 12:39:17 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Copy the template caps, it's not allowed to increase the refcount of const caps
+
+2011-05-04 12:30:39 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: do not leak peer pad reference
+
+2011-05-03 15:27:43 +0100  Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: No need to copy, reffing is enough
+
+2011-05-03 14:57:16 +0100  Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: get_caps function should return a copy of the caps
+
+2011-04-30 20:07:44 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * po/da.po:
+       * po/de.po:
+       * po/fr.po:
+       * po/uk.po:
+       * win32/common/config.h:
+         0.10.17.4 pre-release
+
+2011-04-27 12:48:31 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * po/bg.po:
+       * po/ja.po:
+       * po/nl.po:
+       * po/pl.po:
+       * po/ru.po:
+       * po/sl.po:
+       * po/tr.po:
+         0.10.17.3 pre-release
+
+2011-04-24 14:04:39 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From c3cafe1 to 46dfcea
+
+2011-04-19 17:26:42 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/gst-plugins-ugly.supp:
+         tests: add suppression for lame unit test
+
+2011-04-19 14:41:48 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/Makefile.am:
+       * tests/check/generic/.gitignore:
+       * tests/check/generic/index.c:
+         tests: add generic index-setting test
+
+2011-04-19 15:24:03 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: don't deadlock when setting an index
+
+2011-04-16 23:26:27 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * po/sl.po:
+       * win32/common/config.h:
+         0.10.17.2 pre-release
+
+2011-04-16 23:23:56 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rademux.c:
+         rademux: fix two 'variable may be used uninitialized' warnings caused by -DG_DISABLE_ASSERT
+
+2011-04-14 15:04:19 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegstream/gstmpegdemux.c:
+         mpegstream: fix unused-but-set-variable warnings with gcc 4.6
+
+2011-04-14 15:03:56 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/sidplay/gstsiddec.cc:
+       * ext/x264/gstx264enc.c:
+         dvdread, sidplay, x264enc: fix unused-but-set-variable warnings with gcc 4.6
+
+2011-04-14 15:03:33 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fix unused-but-set-variable warnings with gcc 4.6
+
+2011-04-13 20:31:53 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Implement getcaps function
+         This allows to set width/height/etc restrictions downstream.
+
+2011-04-10 18:24:22 -0400  Thibault Saunier <thibault.saunier@collabora.co.uk>
+
+       * Android.mk:
+       * ext/mad/Makefile.am:
+       * ext/x264/Makefile.am:
+       * gst/asfdemux/Makefile.am:
+       * gst/dvdlpcmdec/Makefile.am:
+       * gst/dvdsub/Makefile.am:
+       * gst/iec958/Makefile.am:
+       * gst/mpegaudioparse/Makefile.am:
+       * gst/mpegstream/Makefile.am:
+       * gst/realmedia/Makefile.am:
+       * gst/synaesthesia/Makefile.am:
+         android: make it ready for androgenizer
+         To build gstreamer for android we are now using androgenizer which
+         generates the needed Android.mk files.
+         Androgenizer can be found here: http://git.collabora.co.uk/?p=user/derek/androgenizer.git
+
+2011-04-10 18:34:11 -0400  Thibault Saunier <thibault.saunier@collabora.co.uk>
+
+       * android/NOTICE:
+       * android/amrnb.mk:
+       * android/amrwbdec.mk:
+       * android/asf.mk:
+       * android/mpegaudioparse.mk:
+         android: remove the android/ folder
+
+2011-04-04 15:57:58 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 1ccbe09 to c3cafe1
+
+2010-09-21 20:14:04 -0400  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Allow changing the bitrate and quantitizers dynamically
+         https://bugzilla.gnome.org/show_bug.cgi?id=621663
+
+2010-09-21 19:33:10 -0400  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Set max bitrate in quality mode
+         https://bugzilla.gnome.org/show_bug.cgi?id=621663
+
+2010-09-21 19:20:29 -0400  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Make it clear that constant quantizer is for debugging only
+         https://bugzilla.gnome.org/show_bug.cgi?id=621663
+
+2011-03-25 22:34:31 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 193b717 to 1ccbe09
+
+2011-03-25 14:57:00 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From b77e2bf to 193b717
+
+2011-03-25 09:33:04 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From d8814b6 to b77e2bf
+
+2011-03-25 09:09:29 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 6aaa286 to d8814b6
+
+2011-03-24 18:50:17 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 6aec6b9 to 6aaa286
+
+2011-03-22 12:59:33 +0100  Luis de Bethencourt <luis@debethencourt.com>
+
+       * configure.ac:
+         configure.ac: redundant use of AC_MSG_RESULT()
+         cleaned the redundant use of AC_MSG_RESULT() in configure.ac
+
+2011-03-18 19:34:57 +0100  Luis de Bethencourt <luis@debethencourt.com>
+
+       * autogen.sh:
+         autogen: wingo signed comment
+
+2011-03-15 11:02:42 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+       * gst/dvdsub/gstdvdsubdec.h:
+         dvdsubdec: Rearrange buffer allocation and pushing code a bit
+         This makes the code easier to read, doesn't store every buffer
+         in the instance until the next buffer is to be drawn and
+         fixes an unitialized variable compiler warning.
+
+2011-03-15 10:59:23 +0100  Brendan Le Foll <blefoll@fluendo.com>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+         dvdsubdec: Output only a single buffer per subpicture and set the correct duration
+         Fixes bug #619136.
+
+2011-03-14 18:39:35 +0100  Brendan Le Foll <blefoll@fluendo.com>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+         dvdsubdec: Implement clipping if the video size is smaller than the subpicture size
+         Fixes bug #644704.
+
+2011-03-11 17:45:37 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * ext/mad/gstmad.c:
+       * ext/mad/gstmad.h:
+         mad: build the mad plugin even if libid3tag is not available
+         ID3 tags are usually handled by id3demux, and should be handled
+         by id3demux. Tag handling in mad based on libid3tag is very basic
+         and mostly unnecessary really, so just build this plugin without
+         ID3 tag support if libid3tag is not available.
+
+2011-03-02 13:12:11 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/mpegstream/gstdvddemux.c:
+         dvddemux: small code cleanup
+         Don't duplicate the 'if' check. Makes the 2nd condition easier to read also
+         and avoid empty 'if' when logging is disabled.
+
+2011-02-28 19:27:21 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * configure.ac:
+         configure.ac: export plugin description more platform independent
+         Fixes #642504.
+
+2011-02-28 18:33:34 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 1de7f6a to 6aec6b9
+
+2011-02-21 13:13:11 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: do not fail fatally when unlinked
+         ... as _NOT_LINKED was neither tested as fatal before nor complained about.
+
+2011-02-21 11:05:31 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/mad/gstmad.c:
+       * ext/mad/gstmad.h:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         index: remove conditional index support
+         Index support cannot be disabled since commit
+         4bfb1fe70c6f0d5e29c17a8eeffb02f7fd083f11
+         in core, which removed the configure flags to disable index.
+
+2011-02-17 18:06:51 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/mad/gstmad.c:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         formatting: trim trailing whitespace
+
+2011-02-17 18:05:58 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/mad/gstmad.c:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * gst/mpegstream/gstmpegdemux.c:
+         index: use delta frame flags instead of 0 or none
+
+2011-02-14 17:52:09 +0000  Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Don't register flags with a value of 0
+         Flags with a value of 0 aren't meaningful and will cause
+         g_value_transform to go into an endless loop when trying to
+         convert the flags to a string
+
+2011-02-14 12:54:10 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From f94d739 to 1de7f6a
+
+2011-02-07 19:58:45 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/amrwbdec/amrwbdec.c:
+         amrwbdec: avoid stalling on invalid frame
+         Skip 1 byte indicating invalid frame type index rather than stalling
+         on it indefinitely until EOS.
+         Fixes #639715.
+
+2011-02-03 18:25:00 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/pipelines/lame.c:
+         tests: add unit test for lamemp3enc negotiation issue
+         https://bugzilla.gnome.org/show_bug.cgi?id=641151
+
+2011-02-03 18:18:35 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: implement sinkpad get_caps() function to proxy rate and channels restrictions from downstream
+         The element downstream of mp3enc might only accept certain sample rates or channels,
+         make sure we relay any restrictions that do exist to upstream when it does a
+         get_caps() on the sink pad. That way upstream elements like audioresample or
+         audioconvert can pick a sample rate / channel configuration that will be accepted,
+         instead of just negotiating to the highest, which might then be rejected.
+         https://bugzilla.gnome.org/show_bug.cgi?id=641151
+
+2011-01-30 16:17:19 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfpacket: Avoid using broken duration extension
+         Quite a few (broken?) files have a packet duration of 1ms, which is
+         most definitely wrong for either audio or video packets.
+         We therefore avoid using that value and instead use other metrics to
+         determine the buffer duration (like using the extended stream properties
+         average frame duration if present and valid).
+
+2011-01-27 15:33:40 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         win32: fix DEFAULT_AUDIOSINK, should be direct*sound*sink
+         https://bugzilla.gnome.org/show_bug.cgi?id=640705
+
+2011-01-12 16:48:57 +0800  Yang Xichuan <xichuan.yang@tieto.com>
+
+       * gst/mpegaudioparse/gstxingmux.c:
+         xingmux: Use FALSE instead of 0 as return value for a function returning gboolean
+         Fixes bug #639291.
+
+2011-01-06 18:29:06 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * gst/mpegstream/gstdvddemux.c:
+         mpegstream: increase allowable gap between streams
+         The new delay is three times as much as the old one, and just happens
+         to let me properly decode my "Princess Mononoke" DVD, on which dvdreadsrc
+         was chocking before at 5:11.
+         While there, merge the constants used in two places into a define.
+         https://bugzilla.gnome.org/show_bug.cgi?id=539708
+
+2011-01-22 17:31:40 +0100  Miguel Angel Cabrera Moya <madmac2501@gmail.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: make tag event writable before modifying tag list in place
+         To modify an event tag is necessary to be sure that x264enc
+         has its own copy.
+         Also fix indentation.
+         https://bugzilla.gnome.org/show_bug.cgi?id=640272
+
+2011-01-24 10:14:56 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Back to development
+
+=== release 0.10.17 ===
+
+2011-01-21 13:18:51 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.17
+
+2011-01-18 11:11:28 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         0.10.16.4 pre-release
+
+2011-01-14 17:37:09 +0100  Edward Hervey <edward.hervey@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Use the proper component value for height
+
+2011-01-11 20:42:06 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         0.10.16.3 pre-release
+
+2011-01-11 17:09:02 +0100  Edward Hervey <edward.hervey@collabora.co.uk>
+
+       * gst/asfdemux/asfheaders.c:
+       * gst/asfdemux/asfheaders.h:
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Handle new type of DRM'd asf files.
+         These are produced by the new MS PlayReady system.
+         https://bugzilla.gnome.org/show_bug.cgi?id=639226
+
+2011-01-11 15:51:14 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From e572c87 to f94d739
+
+2011-01-10 16:37:19 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From ccbaa85 to e572c87
+
+2011-01-10 14:54:40 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 46445ad to ccbaa85
+
+2011-01-08 00:35:08 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/Makefile.am:
+         tests: never disable g_assert() and cast checks for the unit tests
+         The unit tests are riddled with g_assert() and friends, make sure we
+         don't disable assert and cast checks for the unit tests even if
+         this has been specified for the rest of the code base, e.g. via
+         --disable-glib-asserts
+
+2011-01-07 14:42:26 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.16.2 pre-release
+
+2011-01-07 14:38:17 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+         docs: update docs
+
+2011-01-07 14:37:07 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/bg.po:
+       * po/ca.po:
+       * po/ru.po:
+         po: update translations
+
+2011-01-07 14:33:37 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: use $LIBM instead of hardcoding -lm
+
+2011-01-06 13:15:17 +0100  Edward Hervey <edward.hervey@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Initialize return variable.
+         In the unlikely event that height is 0 (which is invalid) we would end up
+         never setting the flow return.
+
+2011-01-05 16:52:03 +0100  Edward Hervey <edward.hervey@collabora.co.uk>
+
+       * gst/realmedia/rmutils.c:
+         realmedia: Fix unitialized variables on macosx
+
+2011-01-04 10:32:05 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Handle codec/encoder tags
+         Make x264enc drop video-codec and codec tags and replace
+         encoder/encoder-version with x264 and its build number
+         Fixes #621465
+
+2010-12-29 22:17:50 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
+
+2010-12-29 22:10:58 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: minor formatting clean-up
+
+2010-12-29 21:42:36 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: refactor cropping code to use libgstvideo functions
+         https://bugzilla.gnome.org/show_bug.cgi?id=571146
+
+2010-12-29 20:19:34 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         mpeg2dec: use GstVideoFormat instead of custom enum
+
+2010-12-29 20:15:03 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mpeg2dec/Makefile.am:
+         mpeg2dec: fix LIBADD order in Makefile.am
+
+2010-11-19 13:01:35 -0500  Tristan Matthews <tristan@sat.qc.ca>
+
+       * ext/x264/gstx264enc.c:
+         x264: vbv-buf-capacity should have a minimum of 0
+         x264 will clip this value internally, and users should be allowed to
+         specify a lower value than 300 ms.
+         https://bugzilla.gnome.org/show_bug.cgi?id=635291
+
+2010-12-27 11:38:24 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: also accept YV12 input
+
+2010-12-01 18:35:59 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: add a note to the docs about encoder latency and queues
+         https://bugzilla.gnome.org/show_bug.cgi?id=636107
+
+2010-12-24 10:12:19 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rmdemux.c:
+         realmedia: do not use the pad buffer allocation functions in demuxers
+         Doing so can block, see https://bugzilla.gnome.org/show_bug.cgi?id=637822
+         https://bugzilla.gnome.org/show_bug.cgi?id=637932
+
+2010-12-20 17:47:41 +0100  Edward Hervey <edward.hervey@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 169462a to 46445ad
+
+2010-12-16 10:30:31 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mad/gstmad.c:
+         mad: If gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
+         Fixes bug #635461.
+
+2010-12-15 14:56:36 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 20742ae to 169462a
+
+2010-12-12 11:54:35 -0600  Rob Clark <rob@ti.com>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+         Signed-off-by: Rob Clark <rob@ti.com>
+
+2010-12-13 16:24:09 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 011bcc8 to 20742ae
+
+2010-11-14 10:57:21 -0800  Leo Singer <leo.singer@ligo.org>
+
+       * configure.ac:
+         x264: uses pkg-config to locate libx264
+
+2010-12-07 15:39:32 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * tests/check/pipelines/lame.c:
+         check: don't use deprecated method
+
+2010-12-03 17:43:25 +0100  Benjamin Gaignard <benjamin.gaignard@stericsson.com>
+
+       * Android.mk:
+       * android/NOTICE:
+       * android/amrnb.mk:
+       * android/amrwbdec.mk:
+       * android/asf.mk:
+       * android/mpegaudioparse.mk:
+         Add build system for Android
+
+2010-11-25 19:51:50 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/rmutils.c:
+         realmedia: Remove dead assignments
+
+2010-11-25 19:51:40 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mad/gstmad.c:
+         mad: Remove dead assignments
+
+2010-11-13 12:38:45 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: remove bogus comment
+
+2010-11-13 12:34:37 +0000  Thomas Green <thomasgr33n@gmail.com>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: fix handling of multi-angle streams
+         We would output all angles interleaved instead of just
+         the selected angle.
+         https://bugzilla.gnome.org/show_bug.cgi?id=539254
+
+2010-10-28 17:01:16 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/Makefile.am:
+         realmedia: fix LIBS order in Makefile
+
+2010-10-22 09:17:40 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/gl.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ro.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         po: update for new translatable strings
+
+2010-10-27 13:17:29 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 7bbd708 to 011bcc8
+
+2010-10-20 20:26:45 +0200  Guillaume Emont <gemont@igalia.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: convert the position to stream time before answering to a position query
+
+2010-10-24 14:22:39 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/Makefile.am:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rmdemux.h:
+         realmedia: Get codec name from pbutils instead of harcoding them
+
+2010-10-22 11:29:55 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Work around a rate control issue in libx264
+         When variable framerate is disabled in libx264 (which occurs when using
+         the zerolatency tuning), libx264 ignores timestamps but still uses the
+         timebase leading to messed up rate control with our nanosecond timebase.
+         We work around this issue by setting the timebase to the reciprocal of
+         the framerate and we validate that the framerate is suitable.
+         This has been fixed upstream in libx264 but there are non-fixed versions
+         in the wild so this workaround is still needed.
+         Fixes bug #632861
+
+2010-10-19 16:30:51 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Use gst_pad_peer_query() instead of getting the peer pad manually
+
+2010-10-13 21:38:06 +0200  Guillaume Emont <gemont@igalia.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: fix position query by trusting upstream
+         Position queries are badly handled for DVDs (probably due to the division in
+         chapters): the time returned was the time since the start of chapter.
+         Now ask upstream for position queries, fall back to the old code if upstream
+         cannot answer the query.
+
+2010-10-19 12:20:40 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/lame/gstlame.c:
+       * ext/mad/gstmad.c:
+       * ext/sidplay/gstsiddec.cc:
+       * gst/mpegstream/gstmpegparse.c:
+         various: canonicalize property names
+
+2010-10-19 10:06:33 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/a52dec/gsta52dec.c:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/cdio/gstcdiocddasrc.c:
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/mad/gstmad.c:
+       * ext/sidplay/gstsiddec.cc:
+       * ext/x264/gstx264enc.c:
+         various (ext): add a missing G_PARAM_STATIC_STRINGS flags
+
+2010-10-19 09:49:47 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/iec958/ac3iec.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/mpegstream/gstrfc2250enc.c:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/rdtmanager.c:
+         various (gst): add a missing G_PARAM_STATIC_STRINGS flags
+
+2010-10-14 12:32:16 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From 5a668bf to 7bbd708
+
+2010-10-08 12:44:52 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From c4a8adc to 5a668bf
+
+2010-10-08 12:56:05 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 5e3c9bf to c4a8adc
+
+2010-09-29 21:24:23 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/mad/gstmad.c:
+       * ext/mad/gstmad.h:
+         mad: support reverse playback
+
+2010-09-26 19:24:08 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         dvdreadsrc: improve error messages on read errors
+         Provide proper i18n-ed error messages when a read error happens,
+         and point out that the error could be happening because the
+         DVD is scrambled.
+         https://bugzilla.gnome.org/show_bug.cgi?id=613633
+
+2010-09-24 00:03:50 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: set plugin release datetime
+
+2010-09-21 18:34:31 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From aa0d1d0 to 5e3c9bf
+
+2010-09-15 20:14:47 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegstream/gstmpegparse.c:
+         mpegparse: re-fix flow return handling
+         Fix wrong GST_FLOW_IS_SUCCESS substitution in commit e99cb46c:
+         -  } while (GST_FLOW_IS_SUCCESS (result));
+         +  } while (result != GST_FLOW_OK);
+
+2010-09-09 22:33:36 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * tests/check/Makefile.am:
+       * tests/check/generic/states.c:
+         tests: allow running state tests for all elements
+         Now one can use GST_NO_STATE_IGNORE_ELEMENTS=1 make generic/states.check
+         to try elements that would normaly be skipped.
+
+2010-09-09 09:53:07 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * Makefile.am:
+         New pkgconfig subdirectory needs to be added to SUBDIRS as well so it's entered and disted
+
+2010-09-08 00:09:35 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * pkgconfig/.gitignore:
+       * pkgconfig/Makefile.am:
+       * pkgconfig/gstreamer-plugins-ugly-uninstalled.pc.in:
+         Add gstreamer-plugins-ugly-uninstalled-0.10.pc file so other modules can find our plugins
+         This .pc file will not be installed, it's only for uninstalled setups,
+         same thing as we do for -good. This is so other modules' unit tests can
+         find our plugins properly in an uninstalled setup.
+
+2010-09-07 11:42:52 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From c2e10bf to aa0d1d0
+
+2010-09-06 23:53:10 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: re-enable use of -DGST_DISABLE_DEPRECATED in git versions
+
+2010-09-06 23:51:23 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/sidplay/gstsiddec.cc:
+         siddec: don't use GST_FLOW_IS_FATAL
+         GST_FLOW_IS_FATAL has been deprecated in core git.
+
+2010-09-05 18:58:50 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From d3d9acf to c2e10bf
+
+2010-09-05 12:27:02 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         configure: Require orc >= 0.4.6 for --compat
+
+2010-09-05 12:20:22 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From ec60217 to d3d9acf
+
+2010-08-27 18:26:49 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Don't use GST_FLOW_IS_FATAL()
+         And don't post error messages if allocating a buffer resulted
+         in WRONG_STATE or UNEXPECTED.
+
+2010-08-27 18:25:31 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstxingmux.c:
+         xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
+
+2010-08-27 18:24:11 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+         mpegstream: Don't use GST_FLOW_IS_SUCCESS()
+
+2010-08-27 18:22:45 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Don't use GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS()
+
+2010-08-27 18:19:00 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't use GST_FLOW_IS_FATAL()
+         And don't post error messages for UNEXPECTED and post an error
+         message if pulling data failed because of NOT_LINKED.
+
+2010-09-04 13:17:53 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Back to development
+         Temporarily disable -DGST_DISABLE_DEPRECATED for git builds until
+         the code is updated for the GST_FLOW_IS_* macro deprecations.
+
+=== release 0.10.16 ===
+
+2010-09-02 23:59:20 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.16
+
+2010-09-02 23:58:22 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+         docs: update docs for release
+
+2010-09-02 23:48:05 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/LINGUAS:
+       * po/gl.po:
+       * po/id.po:
+       * po/lv.po:
+       * po/ro.po:
+       * po/sv.po:
+         po: update translations
+
+2010-08-30 16:02:24 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         0.10.15.6 pre-release
+
+2010-08-27 17:50:59 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't error out on non-critical flow returns
+         Only error out when downstream returns:
+         * NOT_SUPPORTED
+         * ERROR
+         * NOT_NEGOTIATED
+         * NOT_LINKED
+         If we got _UNEXPECTED, we push an EOS downstream (since maybe only one
+         of the streams had gone EOS) and then stop the task silently.
+         In the case of WRONG_STATE we just need to stop silently
+         https://bugzilla.gnome.org/show_bug.cgi?id=600412
+
+2010-08-25 19:02:02 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         0.10.15.5 pre-release
+
+2010-08-25 15:39:33 +0200  Alessandro Decina <alessandro.decina@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: propagate flow errors upstream.
+         Remove a wrong GST_FLOW_IS_FATAL call. When pushing fails, mp3parse should
+         always return the error upstream.
+
+2010-08-21 21:42:25 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         0.10.15.4 pre-release
+
+2010-08-13 17:24:41 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 3e8db1d to ec60217
+
+2010-08-11 16:46:48 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         0.10.15.3 pre-release
+
+2010-08-11 09:21:43 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Fix b-pyramid libx264 API boolean arg for non-boolean issue
+         In X264_BUILD >= 78, b-pyramid became a non-boolean so passing a boolean
+         argument to the option string value causes an error. For < 78 we pass the
+         boolean value, for >= 78 we use the x264_b_pyramid_names[] array which will
+         result in passing 'none' for false and 'strict' for true. Other modes can be
+         set through the option-string property for now.
+         https://bugzilla.gnome.org/show_bug.cgi?id=626577
+
+2010-08-11 00:02:47 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         0.10.15.2 pre-release
+
+2010-08-10 14:37:39 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+         synaesthesia: code cleanups.
+         Remove unused boilerplate for signals. Use _OBJECT variants of logging macros
+         more.
+
+2010-08-10 14:24:01 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+         synaesthesia: use GST_BOILERPLATE macros
+
+2010-08-10 10:59:04 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From bd2054b to 3e8db1d
+
+2010-08-09 00:31:15 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264: fix printf format warning in debug message
+
+2010-08-07 00:09:47 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/Makefile.am:
+         docs: fix bug passing arguments to gtkdoc-fixref in upload target
+         Missing backslash at end of line meant we weren't passing all arguments
+         to gtkdoc-fixref and we'd get a shell error when doing 'make upload'.
+
+2010-08-05 13:57:26 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From a519571 to bd2054b
+
+2010-08-04 19:28:09 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         configure: Check if the compiler supports ISO C89 or C99 and which parameters are required
+         This first checks what is required for ISO C99 support and sets the relevant
+         compiler parameters and if no C99 compiler is found, it checks for a
+         C89 compiler. This enables us to check for and use C89/C99 functions
+         that gcc hides from us without the correct compiler parameters.
+
+2010-07-29 09:41:49 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Fix flushing of delayed frames
+         x264_encoder_encode() should be called with a NULL picture until at least
+         x264_encoder_delayed_frames() returns 0. This fixes what appeared to be a
+         regression in make check due to the recent change in defaults which enabled
+         b-frames and b-pyramid, both of which I believe increase the number of delayed
+         frames when encoding.
+
+2010-07-21 17:24:33 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Improve x264enc defaults
+         - medium x264 speed/quality preset
+         - threads defaults to 0 which automatically uses 1.5x number of cpu cores
+         Addresses part of bug #607798
+
+2010-07-21 17:22:48 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Fix property description typos
+
+2010-07-22 11:53:04 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Add some more debug info
+
+2010-07-21 17:09:20 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Add speed-preset and [psy-]tuning properties
+         Use of a rate control method (pass, bitrate, quantizer, etc properties), a
+         preset and possibly a profile and/or tuning are now the recommended way to
+         configure x264 through x264enc.
+         If a preset/tuning are specified then these will define the default values and
+         the property defaults will be ignored. After this the option-string property is
+         applied, followed by the user-set properties, fast first pass restrictions and
+         finally the profile restrictions.
+         Addresses part of bug #607798
+
+2010-07-21 16:56:06 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Refactor code in preparation for presets/tunings
+         - Make defaults append the appropriate default value to a string. This is
+         needed to differentiate between something user-set and the actual prop
+         default.
+         - Add an internal option string to which _set_property () cases append for the
+         majority of properties.
+         - Use gst_x264_enc_parse_options () to clean up application of settings. This
+         will make order of application with respect to the presets and tunings quite
+         simple.
+         Addresses part of bug #607798
+
+2010-07-21 16:32:11 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Update available me types
+         Use the x264_motion_est_names[] array to populate the enum of ME types. This is
+         now self-maintaining.
+
+2010-07-21 15:59:12 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Use new libx264 API to affect fast first pass
+         Uses new x264 API to apply reduced complexity values to the parameters to
+         increase encoding speed in the first pass of a multi-pass encode. This does
+         not impact on final quality.
+         Addresses part of bug #607798
+
+2010-07-21 15:52:28 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Add profile property
+         In X264_BUILD >= 86 there is a new API for applying restrictions to an H.264
+         Profile. This makes it easier to achieve Baseline Profile for example.
+         Addresses part of bug #607798
+
+2010-07-21 15:40:27 +0200  Robert Swain <robert.swain@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Add option-string property
+         Adds support for an x264 format option-string to specify advanced parameters
+         Addresses part of bug #607798
+
+2010-07-22 13:24:37 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/mad/Makefile.am:
+         mad: use right automake variable, should be ID3TAG_{LIBS,CFLAGS} not ID3_{LIBS,CFLAGS}
+         Spotted by syntr0py.
+
+2010-07-20 19:44:00 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: only set timebase on versions where it exists
+
+2010-07-20 16:40:22 +0200  David Hoyt <dhoyt@llnl.gov>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: set appropriate time base
+         Fixes #624786.
+
+2010-06-30 18:45:49 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/Makefile.am:
+         tests: add plugin loading whitelist to test environment
+         Only want to load core/-base/-ugly plugins here.
+
+2010-06-28 16:12:12 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * autogen.sh:
+       * configure.ac:
+         Bump automake requirement to 1.10 and autoconf to 2.60
+         For maintainability reasons and $(builddir).
+         See #622944.
+
+2010-06-28 09:34:30 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Fix seeking after last commits
+         Don't handle wrong-state returns as errors to allow seeking to work
+         again.
+
+2010-06-24 19:46:39 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Push all pending data on EOS
+         When on push mode and receiving an EOS event, asfdemux
+         should push all pending data because we might be dealing
+         with a broken file that has a preroll value higher
+         than its actual length.
+
+2010-06-24 19:29:17 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Fix sending eos event for chained asfs
+         Properly push EOS event when finishing a chained asf file
+         in pull mode
+         Fixes #599718
+
+2010-06-24 20:55:33 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         docs: add rmdemux to docs properly
+         The plugin has been renamed, remove old introspection file.
+
+2010-06-24 18:04:15 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-x264.xml:
+         docs: update for recent x264enc changes
+
+2010-06-24 18:03:21 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: fix compiler warning when debugging system in core is disabled
+
+2010-06-24 15:09:44 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 73ff93a to a519571
+
+2010-06-23 11:05:11 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Allow at least 500ms of preroll.
+         Some files have insanely low preroll values which break the
+         all_streams_prerolled() logic.
+         Fixes #622407
+
+2010-06-22 11:41:42 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: add new h264 caps attribute alignment
+         See #606662.
+
+2010-06-18 14:35:00 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: conditionally expose enhanced upstream capabilities
+         API: GstX264Enc:sliced-threads
+         API: GstX264Enc:sync-lookahead
+         API: GstX264Enc:intra-refresh
+         API: GstX264Enc:mb-tree
+         API: GstX264Enc:rc-lookahead
+         See #607798.
+
+2010-06-17 16:48:59 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+         docs: update introspected plugin docs for gstdoc-scangobj and other changes
+         Update common for latest gstdoc-scangobj and inspect xml files for
+         escaping and pad template order changes.
+
+2010-06-15 16:50:21 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From 9339ccc to 35617c2
+
+2010-06-15 16:54:42 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 5adb1ca to 9339ccc
+
+2010-06-15 16:35:49 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 57c89b7 to 5adb1ca
+
+2010-06-15 15:50:09 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From c804988 to 57c89b7
+
+2010-06-14 16:59:25 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * gst/realmedia/rtspreal.c:
+         configure: Update required GLib version to 2.20
+
+2010-06-14 15:33:14 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Call orc_init() before trying to get target flags
+
+2010-06-14 14:34:56 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Remove debug printf...
+
+2010-06-14 14:34:25 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * ext/a52dec/Makefile.am:
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Use orc for CPU feature detection and don't check for liboil
+
+2010-06-14 13:27:47 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         configure: Use GLIB_EXTRA_CFLAGS
+
+2010-06-14 13:05:25 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 7a0fdf5 to c804988
+
+2010-06-14 11:35:03 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 6da3bab to 7a0fdf5
+
+2010-06-12 08:29:28 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 733fca9 to 6da3bab
+
+2010-06-09 12:40:26 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From fad145b to 733fca9
+
+2010-06-09 12:34:18 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From 47683c1 to fad145b
+
+2010-06-05 14:11:30 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: pass bitrate on caps
+         Set the bitrate on the caps, some decoders like sipro need this to function
+         properly.
+         Fixes #620007
+
+2010-06-01 23:49:37 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From 17f89e5 to 47683c1
+
+2010-06-01 22:55:22 -0700  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From fd7ca04 to 17f89e5
+
+2010-05-31 16:57:42 -0400  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Only set i_weighted_pred on versions where it exists
+
+2010-05-20 11:28:47 -0400  Tristan Matthews <tristan@sat.qc.ca>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: implement latency query
+         The encoder's latency is deduced from the framesize. Fixes #618896.
+
+2010-06-01 09:30:33 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.signals:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Back to development
+
+=== release 0.10.15 ===
+
+2010-05-30 14:21:02 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.15
+
+2010-05-30 14:20:02 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2010-05-30 12:10:29 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: make implicit GLib and liboil requirements explicit
+         core/base 0.10.26 require GLib >= 2.18 and liboil >= 0.3.14
+
+2010-05-26 23:16:46 -0400  Olivier Crête <tester@tester.ca>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: disable I weighted pred
+         If it is enabled, then it will be main profile instead of baseline.
+         This ensures maximum compatibility of the output stream until the
+         encoder configuration interface gets an overhaul with explicit
+         output profile selection.
+         Fixes #619776.
+
+2010-05-26 12:16:16 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.14.3 pre-release
+
+2010-05-26 11:52:53 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         po: update translations
+
+2010-05-26 11:55:58 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 357b0db to fd7ca04
+
+2010-05-14 20:06:46 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.14.2 pre-release
+
+2010-05-14 18:25:38 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 4d67bd6 to 357b0db
+
+2010-05-14 16:02:47 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rmutils.c:
+       * gst/realmedia/rmutils.h:
+         rmdemux: add better sipr nibble swap routine
+
+2010-05-13 17:57:57 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: descramble SIPR before pushing out
+         Collect and descramble the SIPR packets before pushing.
+         Descramble ATRAC audio.
+         Fixes #618098
+
+2010-05-13 17:57:02 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rmutils.c:
+       * gst/realmedia/rmutils.h:
+         rm: add function to descramble sipr
+
+2010-01-08 20:51:56 -0500  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Re-send the received upstream event as-is downstream
+         https://bugzilla.gnome.org/show_bug.cgi?id=606689
+
+2010-05-07 15:33:28 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/amrnb/amrnb.c:
+         amrnbenc: Set rank to GST_RANK_SECONDARY
+
+2010-04-30 19:53:15 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         rtspreal: use GLib's base64 functions if available
+         Since gst_rtsp_base64_decode_ip() just got deprecated in -base git.
+
+2010-04-28 17:10:36 +0400  Руслан Ижбулатов <lrn1986@gmail.com>
+
+       * ext/amrnb/amrnbdec.h:
+       * ext/amrnb/amrnbenc.h:
+       * ext/amrwbdec/amrwbdec.h:
+         amr: Use correct includes (as pkg-config suggests)
+         Fixes #617078
+
+2010-04-27 13:15:47 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/ac3parse/.gitignore:
+       * gst/ac3parse/Makefile.am:
+       * gst/ac3parse/README:
+       * gst/ac3parse/ac3parse.vcproj:
+       * gst/ac3parse/gstac3parse.c:
+       * gst/ac3parse/gstac3parse.h:
+         ac3parse: remove unported 0.8 plugin
+         New ac3parse lives in gst-plugin-bad. Remove this to avoid confusion.
+
+2010-04-27 12:25:37 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         docs: adding a mp3decoder as well is useful
+
+2010-04-27 11:39:51 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         docs: massage section index
+
+2010-04-27 11:39:11 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/amrwbdec/amrwbdec.c:
+       * ext/amrwbdec/amrwbdec.h:
+         amrwbdec: move define to source to avoid hiding it from the docs
+
+2010-04-27 11:38:28 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/cdio/gstcdiocddasrc.c:
+         docs: remove short_desc, it is taken from element details
+
+2010-04-27 11:37:52 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+         docs: fix sections docs for synaesthesia
+
+2010-04-27 11:02:15 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         docs: add docs for mp3parse
+
+2010-04-20 17:23:04 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst-plugins-ugly.doap:
+         doap: update repository info from cvs->git and maintainers
+
+2010-04-23 14:41:42 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From fc85867 to 4d67bd6
+
+2010-04-13 16:59:03 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * tests/check/elements/x264enc.c:
+         x264enc: adaptive NALU type checking
+         In particular, be less picky about SEI NALU order, which makes test more
+         robust with respect to changes in libx264.
+         See also #615410.
+
+2010-04-16 21:10:58 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: adaptive x264 header NAL layout handling
+         Fixes #615410.
+
+2010-04-15 16:31:23 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         asfdepay: we require a dynamic payload type
+         Add an extra caps property that restricts the depayloader to only accept dynamic
+         payload types.
+
+2010-04-15 07:20:20 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * configure.ac:
+         configure: Drop -Wcast-align
+         Commit message copied from core's commit from Benjamin Otte:
+         246f5dba96a5b50bb74621af67b30942cca72af5
+         Apparently gcc warns that GstMiniObject is not castable to
+         GstEvent/Message/Buffer due to them containing 64bit variables, even
+         though ARM hackers claim that those only need 4byte alignment. And as
+         long as gcc behaves that way, this warning is not very useful.
+         So we'll remove the warning until this problem is fixed.
+         Fixes #615698
+
+2010-04-14 09:27:14 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: copy over all buffer flags when copying buffers.
+         Avoids losing the tff/rff video buffer flags
+
+2010-03-14 12:16:21 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: Make a table static to avoid having to always allocate it.
+
+2010-04-13 16:31:25 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: fix up avcC header construction
+         Fix off-by-one introduced by commit 35dd89951d8bb1c094da65480e4197efdfb4e93c
+         for BUILD_X264 < 76.
+         Also fixes #610089.
+
+2010-04-13 13:16:41 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: parameterize libx264 provided NAL layout in codec-data creation
+
+2010-04-12 12:43:05 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * configure.ac:
+         configure: Remove -Wundef flag
+         Same fix as for #615161
+
+2010-04-09 11:23:22 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From fdf023d to fc85867
+
+2010-04-09 09:55:14 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst-libs/gst/gettext.h:
+         i18n: #if ENABLE_NLS -> #ifdef ENABLE_NLS to fix compiler warning
+
+2010-03-30 00:36:38 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+       * ext/Makefile.am:
+       * gst/Makefile.am:
+         build: build plugins in parallel where possible, if make -jN is used
+
+2010-03-26 17:08:23 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * Makefile.am:
+         build: add cruft alert for common/shave*
+
+2010-03-25 19:40:33 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * win32/MANIFEST:
+         Fix make distcheck
+         Remove removed file win32/common/config.h.in from MANIFEST.
+
+2010-03-24 19:35:03 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/synaesthesia/synaescope.c:
+       * gst/synaesthesia/synaescope.h:
+         synaestesia: Fix old-style prototype
+
+2010-03-24 19:07:11 +0300  Руслан Ижбулатов <lrn1986@gmail.com>
+
+       * gst/realmedia/rmutils.c:
+         Fix pointer type.
+         Fixes #613815
+
+2010-03-24 18:55:32 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From 55cd514 to c1d07dd
+
+2010-03-24 11:27:40 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/cdio/gstcdiocddasrc.h:
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/lame/gstlame.h:
+       * ext/lame/gstlamemp3enc.h:
+       * ext/lame/plugin.c:
+       * ext/mad/gstmad.c:
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstxingmux.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/realmedia/asmrules.c:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/pnmsrc.h:
+       * gst/realmedia/rdtdepay.h:
+       * gst/realmedia/rdtmanager.c:
+       * gst/realmedia/rtspreal.c:
+         build: Add all kinds of compiler warning flags and fix the resulting warnings
+
+2010-03-19 00:03:53 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/amrnb/Makefile.am:
+       * ext/amrwbdec/Makefile.am:
+       * ext/sidplay/Makefile.am:
+       * gst/asfdemux/Makefile.am:
+       * gst/mpegaudioparse/Makefile.am:
+         build: fix up Makefile.am
+         Mostly just add $(GST_BASE_CFLAGS) where they're missing and fix
+         the order a bit here and there (see docs/random/moving-plugins).
+
+2010-03-19 00:02:40 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * win32/common/config.h.in:
+         win32: remove win32-specific config.h.in copy that's not used any longer
+         The win32 config.h is now generated from the top-level config.h.in.
+
+2010-03-18 15:53:14 +0100  Benjamin Otte <otte@redhat.com>
+
+       * ext/a52dec/gsta52dec.c:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrwbdec/amrwbdec.c:
+       * ext/cdio/gstcdiocddasrc.c:
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/lame/gstlame.c:
+       * ext/mad/gstmad.c:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * gst/ac3parse/gstac3parse.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstrtpasfdepay.c:
+       * gst/asfdemux/gstrtspwms.c:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/iec958/ac3iec.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstxingmux.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/mpegstream/gstrfc2250enc.c:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rdtdepay.c:
+       * gst/realmedia/rdtmanager.c:
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rtspreal.c:
+       * gst/synaesthesia/gstsynaesthesia.c:
+         gst_element_class_set_details => gst_element_class_set_details_simple
+
+2010-03-16 15:05:06 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Put pixel-aspect-ratio from input into the src pad caps
+         Fixes bug #612995.
+
+2010-03-12 13:59:53 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From e272f71 to 55cd514
+
+2010-03-11 11:21:19 +0100  Benjamin Otte <otte@redhat.com>
+
+       * common:
+         Automatic update of common submodule
+         From df8a7c8 to e272f71
+
+2010-03-10 22:13:45 +0100  Benjamin Otte <otte@redhat.com>
+
+       * configure.ac:
+         Update CXXFLAGS, too
+
+2010-03-10 21:01:20 +0100  Benjamin Otte <otte@redhat.com>
+
+       * configure.ac:
+         Update for recent changes to common submodule
+         This just replaces every "$ERROR_CFLAGS" usage with a usage of
+         "$WARNING_CFLAGS $ERROR_CFLAGS" to get the same functionality as
+         previously.
+         Actually using that separation will happen later.
+
+2010-03-10 21:52:30 +0100  Benjamin Otte <otte@redhat.com>
+
+       * common:
+         Automatic update of common submodule
+         From 9720a7d to df8a7c8
+
+2010-03-10 20:44:18 +0100  Benjamin Otte <otte@redhat.com>
+
+       * common:
+         Automatic update of common submodule
+         From 0b6e072 to 9720a7d
+
+2010-03-10 16:10:17 +0100  Benjamin Otte <otte@redhat.com>
+
+       * common:
+         Automatic update of common submodule
+         From 7cc5eb4 to 0b6e072
+
+2010-03-10 01:10:52 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 7aa65b5 to 7cc5eb4
+
+2010-03-09 21:40:26 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 44ecce7 to 7aa65b5
+
+2010-02-26 15:43:58 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         configure: Use automake 1.11 silent rules instead of shave if available
+         This makes sure that we use something that is still maintained and
+         also brings back libtool 1.5 support.
+
+2010-03-09 17:42:11 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Back to development
+
+=== release 0.10.14 ===
+
+2010-03-06 01:13:25 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.14
+
+2010-03-06 01:10:09 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/el.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sl.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2010-03-03 22:52:12 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.13.4 pre-release
+
+2010-02-22 19:13:11 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * tests/check/elements/x264enc.c:
+         x264enc: Replace 'avc-sample' with 'avc' in caps
+         In the element and in its tests
+         Fixes #606662
+
+2010-03-01 14:07:20 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't set durations of 0 on outgoing buffers.
+         Some (broken) streams don't have the extended stream properties in
+         the header, resulting in applying a duration of zero on outgoing
+         buffers.
+         Fixes #611473
+
+2010-03-01 14:05:58 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: Make sure we always set proper payload duration.
+         Some (broken) streams will have a delta of 0, resulting in outgoing
+         buffers having durations of 0.
+         Fixes #611473
+
+2010-02-24 01:40:34 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.13.3 pre-release
+
+2010-02-19 10:13:34 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: Make sure we don't end up with negative timestamps.
+         Some files have payload with timestamps smaller than the preroll duration.
+         Instead of blindly substracting the preroll value (and ending up with
+         insanely high timestamps on the outgoing buffers), we make sure we
+         never go below 0.
+         Fixes #610432
+
+2010-02-19 01:07:08 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.13.2 pre-release
+         Update core/base requirement to 0.10.26, since that's more likely
+         to be the actual requirement.
+
+2010-02-19 01:06:44 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/LINGUAS:
+       * po/el.po:
+       * po/sl.po:
+         po: update translations
+
+2010-02-16 14:08:12 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/elements/x264enc.c:
+         x264enc: add caps check to x264enc unit test
+         Add some minimal caps checking to x264enc unit test.
+         See #610089.
+
+2010-02-16 13:25:11 +0000  Vittorio Palmisano <vpalmisano@gmail.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: fix up avcC header construction and playback by flash players
+         Fix off-by-one bug when constructing the avcC header chunk: we
+         wrote wrong profile info into the header. The first byte in the
+         SPS NAL we get from x264 is the nal type, not the profile_idc.
+         Also add some debug logging.
+         Fixes #610089.
+
+2010-02-16 12:59:54 +0100  Robert Swain <robert.swain@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Improve seek behaviour for audio-only with no index
+         Instead of seeking to seek_time - 5s in the hope of hitting a keyframe
+         for video, we can just seek to seek_time instead.
+
+2010-02-16 00:24:32 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: fix up GST_CXXFLAGS properly
+         We don't want C specific flags in GST_CXXFLAGS, so base it on the
+         GST_CFLAGS that only contains the pkg-config CFLAGS but none of
+         the GST_OPTION_CFLAGS. Also, we only need the local includes once.
+
+2010-02-11 01:12:43 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * MAINTAINERS:
+         Update MAINTAINERS, add myself
+
+2010-02-15 23:16:32 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * configure.ac:
+         configure: base GST_CXXFLAGS on --cflags from pkg-config
+         pkg-config sets GST_CFLAGS and GST_LIBS. We need to use CFLAGS as a starting
+         point for for both C and CXX settings.
+
+2010-02-14 23:18:44 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 96dc793 to 44ecce7
+
+2010-02-01 01:33:22 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * Makefile.am:
+       * configure.ac:
+       * win32/common/.gitignore:
+       * win32/common/config.h:
+         win32: change how win32/common/config.h is updated
+         Generate win32/common/config.h-new directly from config.h.in,
+         using shell variables in configure and some hard-coded information.
+         Change top-level makefile so that 'make win32-update' copies the
+         generated file to win32/common/config.h, which we keep in source
+         control. It's kept in source control so that the git tree is
+         buildable from VS.
+         This change is similar to the ones applied a while ago to GStreamer
+         core, gst-plugins-base and gst-plugins-good and prevents configure
+         from changing files in source control. The generated config.h
+         should be ok, but needs testing.
+
+2010-01-31 13:03:33 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         rtspreal: don't construct config header with uninitialised bytes
+         Turns out 4 + 4 + 2 + (4 * 2) is actually 18 and not 22. This avoids
+         a presumably unintentional padding of uninitialised bytes at the end
+         of the CONT tags chunk, which should be harmless but causes warnings
+         in valgrind (see #608533 for a test URL).
+
+2010-01-30 19:12:24 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         rtspreal: add finalize function so we can free streams and rulebook
+         Fix memory leak in Real RTSP component (#608533).
+
+2010-01-30 19:10:45 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         rtspreal: fix minor memory leak
+         Caps take their own reference when a buffer is added to them, so
+         unref buffer after adding it to caps (#608533).
+
+2010-01-30 19:06:34 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rdtdepay.c:
+         rdtdepay: unref input buffer when done
+         Fixes memory leak, see #608533.
+
+2010-01-30 15:19:56 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 15d47a6 to 96dc793
+
+2010-01-29 19:47:03 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: make use of Access Unit delimiters configurable
+         API: GstX264Enc:aud
+
+2010-01-22 15:40:28 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: Do not subtract padding twice
+         Only subtract implicit padding if an explicit one isn't
+         provided. Avoids subtracting it twice and causing
+         parsing errors.
+         Fixes #607698
+
+2010-01-22 16:55:14 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/mpegstream/gstmpegpacketize.c:
+         assert: g_assert_not_reached() cannot replace return statement
+         Fix build with assert being turned off.
+
+2010-01-20 00:55:12 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 14cec89 to 15d47a6
+
+2010-01-18 18:01:55 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't forget to update flow variable
+         Forgot to update the return value in the loop.
+
+2010-01-18 17:49:06 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Check flow return on every push
+         We previously only aggregated flow returns after the while(push) loop,
+         which meant that in some cases we would end-up not properly aggregating
+         the flow returns.
+         This is based on the same flow aggregation algorithm as oggdemux.
+
+2010-01-11 16:14:44 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Add stream-format to output caps
+         Adds stream-format to output caps of x264enc that
+         informs if the stream is in bytestream of avc format.
+         Fixes #606662
+
+2010-01-11 12:23:35 +0100  Arnaud Patard <apatard@mandriva.com>
+
+       * gst/mpegaudioparse/gstxingmux.c:
+         xingmux: Fix unaligned memory access
+         ARM/SPARC need 32bit alignment but xingmux accesses possibly
+         unaligned memory, which leads to SIGBUS.
+         Fixes bug #586464.
+
+2010-01-07 14:36:47 -0800  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Use GST_STR_NULL in a couple of places.
+         Fixes crashing on some of the log statements on win32.
+
+2010-01-07 16:36:08 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Parse and post bitrate for streams
+         Parse the bitrate of the streams and post their tags.
+         Fixes #599299
+
+2010-01-07 13:54:21 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Post bitrate tag
+         If stream bitrate object is available, post the bitrate
+         tags.
+         Fixes #599297
+
+2010-01-04 15:19:25 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: minor validation check of (Xing, VBRI) metadata
+         ... to detect e.g. a truncated file, rendering some of the metadata invalid.
+
+2010-01-04 14:59:06 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: use proper total_time and total_bytes in various cases
+         The correct basis for (Xing, VBRI) seek table calculations is the
+         byte size and duration provided by that metadata, rather than some
+         other (possibly even estimated) one.  This also prevents an infinite
+         conversion loop in (unlikely) case where a TOC is provided without
+         such corresponding (duration) metdata.
+
+2009-12-08 19:55:04 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: conserve stop time for non-accurate seek
+         Use the same strategy as accurate seeks to store
+         pending non-accurate seeks to avoid overwriting non-definite
+         stop times. When doing non-accurate seeks our position
+         reporting might drift off by some secs and the stream can
+         end up before it should.
+         Fixes #603695
+
+2009-12-21 19:12:59 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 47cb23a to 14cec89
+
+2009-12-18 16:04:12 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/amrwbdec/amrwb.c:
+         amrwbdec: give decoder a rank so decodebin/playbin will use it
+
+2009-12-08 19:01:50 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: return false when we can't seek
+         When upstream can't seek, we return false as well
+
+2009-12-02 11:21:22 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame: Avoid crash when seeking before negotiating
+         lame's 'lgv' variable is only initialized when the caps
+         is negotiated, whenever a seek happens before that, it would
+         attempt to call a function on an empty pointer, causing the crash.
+         Fixes #603515
+
+2009-12-01 15:08:07 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 87bf428 to 47cb23a
+
+2009-12-01 14:17:50 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From da4c75c to 87bf428
+
+2009-11-27 18:56:13 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From 53a2485 to da4c75c
+
+2009-11-26 15:54:45 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: fix non-flushing seek
+         Specifically, in addition to clearing lots of variables/offsets
+         when receiving newsegment, also clear leftover data to match.
+
+2009-11-20 21:32:31 -0500  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         x264enc: Make upstream GstForceKeyUnit thread-safe
+         Also send the GstForceKeyUnit event downstream when an upstream on is received,
+         allowing muxers or payloaders to take appropriate actions.
+         https://bugzilla.gnome.org/show_bug.cgi?id=602556
+
+2009-11-19 10:31:25 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From a3e3ce4 to 53a2485
+
+2009-11-18 09:58:39 +0100  Benjamin Gaignard <benjamin@gaignard.net>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Don't call strlen() on NULL pointers
+         Fixes bug #602280.
+
+2009-11-09 15:02:05 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Remove old pads when new ones are added
+         The old pads were being removed before adding the new ones,
+         we should add the new ones first.
+         Fixes #599718
+
+2009-11-09 13:30:45 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Handle chained asfs on pull mode
+         Adds chained asfs handling to pull mode. It now checks if
+         there is a new asf header after the last packet (when it
+         is possible to know how many packets are) or it tries
+         checking if a processed packet that fails is an header
+         object.
+         Fixes #599718
+
+2009-11-09 10:24:46 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: properly do chained asfs on push mode
+         To properly do chained asfs work with playbin2, we need to
+         push eos on the old pads before removing them.
+         Fixes #599718
+
+2009-10-27 17:48:03 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: add support for chained asfs (push mode)
+         Adds support for detecting and playing chained asfs
+         in push mode. asfdemux tries to detect a new asf start
+         by identifying the header object guid in a input buffer.
+         When it finds it, it resets its state, removing its pads
+         and creates new ones for the new file.
+
+2009-11-05 18:33:09 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fix two small leaks
+
+2009-11-05 18:19:58 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: prefer WM/TrackNumber over WM/Track, it's more reliable
+         WM/Track has a 0 base but is often wrongly written as starting from 1,
+         so not as reliable as WM/TrackNumber which always starts from 1.
+
+2009-11-05 18:11:55 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: WM/Track starts counting from 0, adjust to start from 1
+
+2009-11-05 18:11:14 +0000  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: map WM/TrackNumber to GST_TAG_TRACK_NUMBER as well
+         There's both WM/Track and WM/TrackNumber.
+
+2009-11-04 15:52:09 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Fix debug statement: Pass pos variable instead of time() function
+
+2009-11-04 15:50:17 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+         dvdsubdec: Fix printf format string warning
+
+2009-11-04 15:46:04 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Fix bogus variable used uninitialised warnings
+
+2009-11-04 13:55:39 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/Makevars:
+         po: Don't create backup .po files
+         As well as preventing creation of useless backup files, it works
+         around a bug in gettext 0.17 on OS/X
+
+2009-10-29 11:39:13 -0700  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: fix c99-style comments.
+
+2009-10-29 10:34:17 -0700  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: accept fragments in a continued packet where the subsequent fragments declare a size of 0. Fixes bug 600037.
+
+2009-10-27 12:33:24 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rmutils.c:
+         rmutils: fix byteswapping
+         fix the byteswapping code that was wrong because of the side effects of the
+         READ/WRITE macros.
+         Fixes #599676
+
+2009-10-20 20:00:44 +0100  Robert Swain <robert.swain@gmail.com>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: Adapt to slightly modified x264 API
+         Fixes #599095.
+
+2009-10-26 17:31:19 -0300  Thiago Santos <thiago.sousa.santos@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: careful to avoid crash on bogus data
+         When receiving bogus data, we have to avoid subtracting a value
+         larger than 'size' from 'size' variable, resulting in a wrap
+         that would make 'size' a really large bogus value.
+         Fixes #599333
+
+2009-10-26 00:56:37 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * win32/common/config.h:
+         win32: Commit bumped version number
+
+2009-10-17 13:46:13 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: Don't use expensive glib ways to get an enum nick.
+         Fixes #598761
+         This removes a good 50% of processing time for parsing a buffer.
+         We do this by simply... getting the nicks that we already have handy
+         instead of going through the expensive glib system.
+
+2009-10-24 20:36:41 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * configure.ac:
+         configure.ac: And back to development we go...
+
+=== release 0.10.13 ===
+
+2009-10-21 17:16:00 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * common:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * gst-plugins-ugly.doap:
+       * win32/common/config.h:
+         Release 0.10.13
+
+2009-10-21 17:02:42 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2009-10-16 10:16:55 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From 85d1530 to 0702fe1
+
+2009-10-15 23:56:55 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ChangeLog:
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+       * win32/common/config.h:
+         0.10.12.3 pre-release
+
+2009-10-14 10:41:48 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From a3e3ce4 to 85d1530
+
+2009-10-13 13:05:32 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Fix reference leak on all input buffers in 'dvd mode'
+         https://bugzilla.gnome.org/show_bug.cgi?id=598272
+
+2009-10-12 13:54:27 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ChangeLog:
+       * configure.ac:
+       * po/LINGUAS:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/de.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/eu.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/lv.po:
+       * po/ms.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+       * win32/common/config.h:
+         0.10.12.2 pre-release
+
+2009-10-12 11:31:22 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args.new:
+       * docs/plugins/gst-plugins-ugly-plugins.signals.new:
+         docs: Remove files accidentally added
+         Remove the gst-plugins-ugly-plugins.args.new and
+         gst-plugins-ugly-plugins.signals.new files, that appear
+         to have been accidentally added in commit
+         f5d046a0b034f9bd7274291f7131ee5db1a30052
+
+2009-09-16 00:00:28 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Add some debugging for new segment events
+
+2009-10-11 16:18:37 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: fix warning in macosx snow leopard
+
+2009-10-11 16:16:09 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/mpegstream/gstmpegparse.c:
+         mpegstream: fix warning in macosx snow leopard
+
+2009-10-11 16:14:08 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: fix warning in macosx snow leopard
+
+2009-10-11 16:09:11 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+         dvdsubdec: fix warning on macosx snow leopard
+
+2009-10-11 16:06:25 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fix warning in macosx snow leopard
+
+2009-10-08 19:58:25 +0300  René Stadler <rene.stadler@nokia.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: don't fail SEEKING query when upstream query fails for TIME format
+
+2009-10-08 11:01:03 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 19fa4f3 to a3e3ce4
+
+2009-10-07 14:22:09 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/realmedia/rdtmanager.c:
+         build: fprintf, sprintf, sscanf need stdio.h
+
+2009-10-02 18:27:11 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/mad/gstmad.c:
+         mad: add missing include to fix the build
+
+2009-10-05 12:13:51 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         dvdlpcm: whitespace fixes
+
+2009-10-04 22:51:41 +0100  Christian F.K. Schaller <christian.schaller@collabora.co.uk>
+
+       * gst-plugins-ugly.spec.in:
+         update spec file
+
+2009-10-02 15:22:38 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * configure.ac:
+         x264enc: adjust configure checking to changed upstream
+
+2009-10-01 18:58:42 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         x264enc: conditionally adjust to new upstream API
+         Fixes #596517.
+
+2009-09-24 17:49:52 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mpegaudioparse: prevent infinite (re)syncing
+         Conflicts:
+         gst/mpegaudioparse/gstmpegaudioparse.c
+
+2009-09-22 12:13:38 -0700  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: Refactor checking for sync. Make resyncing more reliable.
+         Previously, we could get false sync relatively easily - it sometimes happened
+         on real files. This cleans the code up a fair bit, and makes it require more
+         confirmation that we've found valid sync before continuing.
+
+2009-09-17 16:12:29 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: ensure 2 valid headers in a row when resyncing
+
+2009-09-11 10:05:02 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegstream/gstdvddemux.c:
+         dvddemux: remove bogus ifndef
+
+2009-09-05 10:23:49 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 94f95e3 to 19fa4f3
+
+2009-09-01 12:22:39 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Fix GstIndex handling, incl. refcounting and NULL indizes
+
+2009-08-31 13:42:27 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/dvdsub/gstdvdsubparse.c:
+         dvdsubparse: GstAdapter is not a GstObject and should be freed with g_object_unref
+
+2009-08-24 13:59:05 -0700  David Schleef <ds@schleef.org>
+
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+         Remove Ronald Bultje from Authors field
+         Replaced with "GStreamer maintainers
+         <gstreamer-devel@lists.sourceforge.net>" or just removed,
+         depending on the number of other authors.
+
+2009-08-24 13:57:14 -0700  David Schleef <ds@schleef.org>
+
+       * gst/asfdemux/Makefile.am:
+       * gst/asfdemux/gstasfmux.c:
+       * gst/asfdemux/gstasfmux.h:
+         asfdemux: Remove old non-built asfmux code
+         Remove so people don't confuse it with the new asfmux code
+         in -bad.
+
+2009-08-23 13:35:46 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Only add the MM_ACCEL_DJBFFT flag if it's defined
+         It's not defined for older liba52 versions.
+
+2009-08-23 13:34:32 +0200  Mart Raudsepp <leio@gentoo.org>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Allow liba52 to use djbfft based IMDCT transform
+         liba52 in a52dec-0.7.4 does not have any MMX, MMXEXT or 3DNOW based
+         IMDCT transform acceleration. It does however have a software based
+         acceleration using the djbfft library (D.J. Bernstein's library for
+         fourier transforms - Extremely fast library for floating-point
+         convolution). So allow liba52 to use it through the MM_ACCEL_DJBFFT
+         flag.
+         The liba52 copy in MPlayer sources does have SSE, 3dnowext, 3dnow
+         and AltiVec implementations, but those are checked for first, and
+         djbfft is chosen only if none of those is available - good in the
+         case of some distributions including a port of the MPlayer changes
+         in their system a52dec library.
+         The down and upmix code in liba52 doesn't seem to be disturbed by
+         this additional MM_ACCEL flag and will still use MMX, SSE or 3DNOW
+         versions if passed from oil_cpu_get_flags (SSE currently is not).
+         Fixes bug #592787.
+
+2009-08-17 17:31:10 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         amr: Use opencore-amr pkg-config files if possible
+         This makes it possible to build the plugins when the libraries
+         are installed at non-standard locations.
+         Fixes bug #591348.
+
+2009-08-14 12:07:40 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: use metadata (xing, vbri) provided bytesize for conversions
+         Metadata provided seek tables are consistent with metadata's view of
+         total size, which typically matches real size, but need not do so
+         (e.g. a truncated file).  Fixes seeking and position reporting
+         in such truncated files (although duration based on metadata may then
+         still be incorrect).
+
+2009-08-10 22:22:39 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: bump core/base requirements to released versions
+         to avoid confusion.
+
+2009-08-04 10:44:43 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * configure.ac:
+         configure: Remove all mentions to the id3tag plugin which was removed
+
+2009-08-01 08:43:21 +0200  Marvin Schmidt <marvin_schmidt@gmx.net>
+
+       * configure.ac:
+         mad: make check for mad independent of the check for id3tag
+         Fixes bug #590432.
+
+2009-07-31 00:25:43 -0300  Thiago Santos <thiagoss@embedded.ufcg.edu.br>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: set padding size to the correct value
+         asf packets in rtp packets should come with their padding fields
+         set to 0 and the depayload must update them to the correct
+         value before pushing downstream
+
+2009-07-27 20:12:20 +0200  Iago Toral <itoral@igalia.com>
+
+       * configure.ac:
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-amrwbdec.xml:
+       * ext/Makefile.am:
+       * ext/amrnb/GstAmrnbEnc.prs:
+       * ext/amrnb/Makefile.am:
+       * ext/amrnb/README:
+       * ext/amrnb/amrnb.c:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbdec.h:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrnb/amrnbenc.h:
+       * ext/amrnb/amrnbparse.c:
+       * ext/amrnb/amrnbparse.h:
+       * ext/amrwbdec/Makefile.am:
+       * ext/amrwbdec/README:
+       * ext/amrwbdec/amrwb.c:
+       * ext/amrwbdec/amrwbdec.c:
+       * ext/amrwbdec/amrwbdec.h:
+         amr: Add AMR-WB decoder and AMR-NB encoder and decoder
+         These are based on the OpenCore codecs.
+         Fixes bug #584890.
+
+2009-07-24 00:43:07 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Automatic update of common submodule
+         From fedaaee to 94f95e3
+
+2009-07-22 11:10:38 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * LICENSE_readme:
+       * REQUIREMENTS:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins.args.new:
+       * docs/plugins/gst-plugins-ugly-plugins.signals.new:
+       * docs/plugins/inspect/plugin-dvdnav.xml:
+       * ext/Makefile.am:
+       * ext/dvdnav/.gitignore:
+       * ext/dvdnav/Makefile.am:
+       * ext/dvdnav/README:
+       * ext/dvdnav/dvdnavsrc.c:
+       * ext/dvdnav/dvdnavsrc.h:
+       * ext/dvdnav/gst-dvd:
+       * ext/dvdread/dvdreadsrc.c:
+       * gst-plugins-ugly.spec.in:
+       * po/POTFILES.in:
+         dvdnav: remove dvdnav plugin
+         Remove dvdnav plugin, it has no future. resindvd is the plugin to
+         use for dvd playback. Note that dvdnav was never really enabled
+         in -ugly, you had to edit configure.ac to get it built.
+
+2009-06-20 14:31:06 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * tests/check/elements/mpeg2dec.c:
+         mpeg2dec: Fix unused variables compiler warnings in unit test
+
+2009-06-26 15:21:12 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * autogen.sh:
+         autogen.sh: Use printf instead of 'echo -n'. Check for automake-1.1[01]
+         Check for more automake command variants. Use printf instead of 'echo -n'
+         for portability
+
+2009-07-13 12:24:14 -0400  Olivier Crête <olivier.crete@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 5845b63 to fedaaee
+
+2009-02-10 13:25:54 +0000  Tim-Philipp Muller <tpm@mini.centricular.net>
+
+       * .gitignore:
+         Make git ignore more files
+
+2009-06-29 11:10:42 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Refactor multiple packet pull.
+         This also fixes a bug by which the first buffer (in a multi-packet mode)
+         passed to asf_demux_parse_packet() would have a GST_BUFFER_SIZE of the
+         full incoming buffer and not just of the single asf packet.
+         Fixes corrupted frames introduced by latest commit.
+
+2009-06-29 10:58:49 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: use the right accurate field
+         Remove accurate variable and its faulty use because the real variable is an
+         instance variable.
+
+2009-06-28 17:48:11 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Sprinkle branch prediction macros accross the code
+
+2009-06-28 17:43:12 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Delay newsegment handling until we have a keyframe.
+         We now have a chance for packets to be collected before we send out the
+         newsegment. If we're not in accurate seeking (keyunit) it will set
+         the segment start/time to the keyframe's timestamp.
+
+2009-06-28 17:39:23 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Remove useless check. We already have checked for it above.
+
+2009-06-28 17:31:11 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: No longer queue GOPs now that seeking is fixed.
+         We now *always* seek to the keyframe just before our requested position.
+         When we encounter the first keyframe and we were not accurate (therefore doing
+         keyframe seeking), we update the segment start position to the keyframe timestamp.
+
+2009-06-28 17:42:44 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Store the accurate seeking flag
+
+2009-06-28 17:04:00 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Use the average frame duration for buffers without a duration.
+         This will still cause some timestamp jitter, but giving a hint as to the duration
+         rather than nothing seems to be a better idea.
+         Also, this allows some scenarios (like remuxing with asfmux) to estimate the total
+         duration using the accumulated packet duration (which will be correct).
+
+2009-06-28 17:02:17 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Use index entry packet count to optimize seeking.
+         The simple index entries also contain the number of packets one needs
+         to retrieve at a given position to get a full keyframe. We therefore
+         use that information to retrieve all those packets in one buffer when
+         working in pull-mode.
+
+2009-06-26 20:52:29 -0300  Thiago Santos <thiagoss@embedded.ufcg.edu.br>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Do not try to free const pointer
+         In gst_asf_demux_chain_headers, when 'goto wrong_type' was called
+         asfdemux tried to free a const pointer that had been cast to a
+         normal pointer variable.
+
+2009-06-26 20:44:09 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Use presentation timestamp when searching in the index.
+         We need to take the preroll into account... else we end up too early.
+
+2009-06-26 13:43:16 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From f3bb51b to 5845b63
+
+2009-06-26 13:35:38 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Convert index entry from presentation time to timestamps.
+         We weren't taking the preroll into account previously, meaning that we
+         were always seeking preroll nanoseconds too early... resulting in a lot
+         of dropped packets (which are before the start time).
+         This brings quit a bit closer to as-fast-as-possible seeking in asf files.
+
+2009-06-26 10:58:56 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Fix byte array metadata handling.
+         We basically discard byte array metadata. Should be trivial to adapt
+         to storing the pointers if we need it later on.
+
+2009-06-26 10:41:28 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Handle PAR/interlaced information stored in packet payload.
+         This is the 'other' way to store non 1/1 PAR in asf streams (by storing it
+         in the ASF Packet payload extensions).
+
+2009-06-26 10:40:39 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: Store/Handle global metadata (not specific to one stream).
+         This allows us to store (and handle) PAR information which might be stored there.
+
+2009-06-25 18:24:56 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: fix Xing inverse seek table building
+
+2009-06-24 15:15:37 +0100  Jan Schmidt <jan.schmidt@sun.com>
+
+       * common:
+         Automatic update of common submodule
+         From f3bb51b to f810030
+
+2009-06-23 16:45:00 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: don't try to free a NULL taglist
+
+2009-06-23 02:14:00 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: post tags only after we've created our source pads
+         Post global tags only after we've added our source pads, so that
+         tag events get sent downstream in addition to tag messages posted
+         on the bus. This makes sure tags can be picked up automatically
+         when transcoding, but also by tagreadbin/playbin2. Fixes #519721.
+         While we're at it, also add a container-format tag.
+
+2009-06-23 01:37:01 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: use new bytereader functions for image tag parsing
+
+2009-06-22 18:53:56 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: remove some more unused variables
+
+2009-06-19 17:25:58 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: plug buffer leaking
+
+2009-06-22 17:36:21 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         asfdepay: guard against dropped buffers
+         If a buffer was dropped, we might request data from the adapter that is not
+         there and then we get a NULL buffer.
+
+2009-06-22 17:16:58 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: set DISCONT on streams
+         When we receive a DISCONT as input, don't clear our complete state but simply
+         mark a discont that will be put on the next buffer. The code will be able to
+         handle and throw away incomplete data.
+         Add some more debug info.
+         Remove an unused variable.
+
+2009-06-22 17:15:52 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         asfdepay: set DELTA_UNIT flag correctly
+         Only set the DELTA_UNIT flag when we are not dealing with a keyframe.
+         Add some more debug info.
+
+2009-06-22 13:37:58 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fix latency calculations
+         We need to check for -1 as an invalid timestamp, not 1.
+
+2009-06-16 09:45:59 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: don't put every single frame into the index
+         Let's not put every single mp3 frame in our index, a few frames per
+         second should be more than enough. For now use an index interval
+         of 100ms-500ms depending on the upstream size, to keep the index at
+         a reasonable size. Factor out the code that adds the index entry
+         into a separate function for better code readability.
+
+2009-06-16 01:40:42 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: assume seekability only if we know the upstream size
+         While technically upstream may be seekable even if it doesn't know
+         the exact size, I can't think of a use case where this distincation
+         is relevant in practice, so for now just assume we're not seekable
+         if upstream doesn't provide us with a size. Makes sure we don't
+         build a seek index when streaming internet radio with sources that
+         pretend to be seekable until you try to actually seek.
+
+2009-06-19 17:46:12 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * gst-plugins-ugly.spec.in:
+         Fix x264 requirement in SPEC file
+
+2009-06-19 15:01:46 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * gst/realmedia/rdtmanager.c:
+         x264enc, rdtmanager: fix compilation with debugging disabled
+
+2009-06-11 13:48:22 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+       * docs/plugins/Makefile.am:
+         docs: Bump common. Fix comment in the docs Makefile.am
+
+2009-06-18 20:26:04 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * win32/common/config.h:
+         Back to development -> 0.10.12.1
+
+2009-06-18 08:54:17 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst-plugins-ugly.doap:
+         Add 0.10.12 release to the doap file
+
+=== release 0.10.12 ===
+
+2009-06-18 08:34:54 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * win32/common/config.h:
+         Release 0.10.12
+
+2009-06-18 08:34:46 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/bg.po:
+       * po/id.po:
+       * po/it.po:
+       * po/nl.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2009-06-18 08:04:40 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2009-06-05 22:10:02 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+       * win32/common/config.h:
+         0.10.11.2 pre-release
+
+2009-06-05 22:07:31 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * win32/common/config.h.in:
+         win32: Remove #undef inline from the win32 config.h
+
+2009-06-05 20:53:57 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * ext/mad/Makefile.am:
+       * ext/mad/gstid3tag.c:
+       * ext/mad/gstmad.c:
+       * ext/mad/gstmad.h:
+         mad, id3mux: (re)move broken, unmaintained and unloved id3mux element
+         It will be reborn with a shiny new code base under its hood in -bad.
+         See #581756 and #565764.
+
+2009-06-05 19:48:28 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * tests/check/pipelines/.gitignore:
+         gitignore: Ignore some built files in the test area
+
+2009-06-05 19:46:17 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+         docs: Update plugin inspect files
+
+2009-06-05 19:25:54 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/inspect/plugin-x264.xml:
+       * ext/Makefile.am:
+       * gst-plugins-ugly.spec.in:
+       * tests/check/Makefile.am:
+       * tests/check/elements/.gitignore:
+         Moved 'x264enc' from -bad to -ugly
+
+2009-05-25 11:18:57 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         [MOVED FROM BAD 28/28] x264enc: add multipass-cache-file property
+         Fixes #583627
+
+2009-05-09 23:47:39 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * ext/x264/GstX264Enc.prs:
+         [MOVED FROM BAD 27/28] Remove wrong stuff from preset file
+
+2009-05-09 12:42:25 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * ext/x264/GstX264Enc.prs:
+         [MOVED FROM BAD 26/28] Add a more representative example preset file for x264
+
+2009-05-07 17:53:42 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         [MOVED FROM BAD 25/28] Add ranks to various muxers and encoders in -bad
+
+2009-04-30 00:06:36 +0300  Stefan Kost <ensonic@users.sf.net>
+
+       * ext/x264/GstX264Enc.prs:
+       * ext/x264/Makefile.am:
+       * ext/x264/gstx264enc.c:
+         [MOVED FROM BAD 24/28] x264enc: add preset support
+         Add preset iface and a (dummy) preset file as a starting point.
+
+2009-04-29 16:57:36 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * ext/x264/gstx264enc.c:
+         [MOVED FROM BAD 23/28] x264enc: add some documentation on profile
+
+2009-04-09 23:53:39 +0200  Janin Kolenc <janin.kolenc at marand.si>
+
+       * ext/x264/gstx264enc.c:
+       * ext/x264/gstx264enc.h:
+         [MOVED FROM BAD 22/28] x264enc: add force keyframe event handling
+         Use the GstForceKeyUnit event to force a keyframe.
+         Fixes #578112.
+
+2009-01-05 10:28:58 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 21/28] ext/x264/gstx264enc.c: Use hyphen in property name, perform safety buffer size check prior to mem access, and some mo...
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_class_init),
+         (gst_x264_enc_header_buf), (gst_x264_enc_encode_frame):
+         Use hyphen in property name, perform safety buffer size check
+         prior to mem access, and some more parentheses in macro.
+
+2009-01-02 01:44:11 +0000  Alessandro Decina <alessandro.d@gmail.com>
+
+         [MOVED FROM BAD 20/28] ext/apexsink/Makefile.am: Link against -lgcrpyto for RSA_new and RSA_free.
+         Original commit message from CVS:
+         * ext/apexsink/Makefile.am:
+         Link against -lgcrpyto for RSA_new and RSA_free.
+         * ext/faac/gstfaac.c:
+         * ext/x264/gstx264enc.c:
+         Fix compiler warnings.
+
+2008-11-14 19:52:24 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 19/28] ext/x264/gstx264enc.c: Construct source caps in more conventional (and correct) manner.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps):
+         Construct source caps in more conventional (and correct) manner.
+
+2008-11-04 12:42:30 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         [MOVED FROM BAD 18/28] Don't install static libs for plugins. Fixes #550851 for -bad.
+         Original commit message from CVS:
+         * ext/alsaspdif/Makefile.am:
+         * ext/amrwb/Makefile.am:
+         * ext/apexsink/Makefile.am:
+         * ext/arts/Makefile.am:
+         * ext/artsd/Makefile.am:
+         * ext/audiofile/Makefile.am:
+         * ext/audioresample/Makefile.am:
+         * ext/bz2/Makefile.am:
+         * ext/cdaudio/Makefile.am:
+         * ext/celt/Makefile.am:
+         * ext/dc1394/Makefile.am:
+         * ext/dirac/Makefile.am:
+         * ext/directfb/Makefile.am:
+         * ext/divx/Makefile.am:
+         * ext/dts/Makefile.am:
+         * ext/faac/Makefile.am:
+         * ext/faad/Makefile.am:
+         * ext/gsm/Makefile.am:
+         * ext/hermes/Makefile.am:
+         * ext/ivorbis/Makefile.am:
+         * ext/jack/Makefile.am:
+         * ext/jp2k/Makefile.am:
+         * ext/ladspa/Makefile.am:
+         * ext/lcs/Makefile.am:
+         * ext/libfame/Makefile.am:
+         * ext/libmms/Makefile.am:
+         * ext/metadata/Makefile.am:
+         * ext/mpeg2enc/Makefile.am:
+         * ext/mplex/Makefile.am:
+         * ext/musepack/Makefile.am:
+         * ext/musicbrainz/Makefile.am:
+         * ext/mythtv/Makefile.am:
+         * ext/nas/Makefile.am:
+         * ext/neon/Makefile.am:
+         * ext/ofa/Makefile.am:
+         * ext/polyp/Makefile.am:
+         * ext/resindvd/Makefile.am:
+         * ext/sdl/Makefile.am:
+         * ext/shout/Makefile.am:
+         * ext/snapshot/Makefile.am:
+         * ext/sndfile/Makefile.am:
+         * ext/soundtouch/Makefile.am:
+         * ext/spc/Makefile.am:
+         * ext/swfdec/Makefile.am:
+         * ext/tarkin/Makefile.am:
+         * ext/theora/Makefile.am:
+         * ext/timidity/Makefile.am:
+         * ext/twolame/Makefile.am:
+         * ext/x264/Makefile.am:
+         * ext/xine/Makefile.am:
+         * ext/xvid/Makefile.am:
+         * gst-libs/gst/app/Makefile.am:
+         * gst-libs/gst/dshow/Makefile.am:
+         * gst/aiffparse/Makefile.am:
+         * gst/app/Makefile.am:
+         * gst/audiobuffer/Makefile.am:
+         * gst/bayer/Makefile.am:
+         * gst/cdxaparse/Makefile.am:
+         * gst/chart/Makefile.am:
+         * gst/colorspace/Makefile.am:
+         * gst/dccp/Makefile.am:
+         * gst/deinterlace/Makefile.am:
+         * gst/deinterlace2/Makefile.am:
+         * gst/dvdspu/Makefile.am:
+         * gst/festival/Makefile.am:
+         * gst/filter/Makefile.am:
+         * gst/flacparse/Makefile.am:
+         * gst/flv/Makefile.am:
+         * gst/games/Makefile.am:
+         * gst/h264parse/Makefile.am:
+         * gst/librfb/Makefile.am:
+         * gst/mixmatrix/Makefile.am:
+         * gst/modplug/Makefile.am:
+         * gst/mpeg1sys/Makefile.am:
+         * gst/mpeg4videoparse/Makefile.am:
+         * gst/mpegdemux/Makefile.am:
+         * gst/mpegtsmux/Makefile.am:
+         * gst/mpegvideoparse/Makefile.am:
+         * gst/mve/Makefile.am:
+         * gst/nsf/Makefile.am:
+         * gst/nuvdemux/Makefile.am:
+         * gst/overlay/Makefile.am:
+         * gst/passthrough/Makefile.am:
+         * gst/pcapparse/Makefile.am:
+         * gst/playondemand/Makefile.am:
+         * gst/rawparse/Makefile.am:
+         * gst/real/Makefile.am:
+         * gst/rtjpeg/Makefile.am:
+         * gst/rtpmanager/Makefile.am:
+         * gst/scaletempo/Makefile.am:
+         * gst/sdp/Makefile.am:
+         * gst/selector/Makefile.am:
+         * gst/smooth/Makefile.am:
+         * gst/smoothwave/Makefile.am:
+         * gst/speed/Makefile.am:
+         * gst/speexresample/Makefile.am:
+         * gst/stereo/Makefile.am:
+         * gst/subenc/Makefile.am:
+         * gst/tta/Makefile.am:
+         * gst/vbidec/Makefile.am:
+         * gst/videodrop/Makefile.am:
+         * gst/videosignal/Makefile.am:
+         * gst/virtualdub/Makefile.am:
+         * gst/vmnc/Makefile.am:
+         * gst/y4m/Makefile.am:
+         * sys/acmenc/Makefile.am:
+         * sys/cdrom/Makefile.am:
+         * sys/dshowdecwrapper/Makefile.am:
+         * sys/dshowsrcwrapper/Makefile.am:
+         * sys/dvb/Makefile.am:
+         * sys/dxr3/Makefile.am:
+         * sys/fbdev/Makefile.am:
+         * sys/oss4/Makefile.am:
+         * sys/qcam/Makefile.am:
+         * sys/qtwrapper/Makefile.am:
+         * sys/vcd/Makefile.am:
+         * sys/wininet/Makefile.am:
+         * win32/common/config.h:
+         Don't install static libs for plugins. Fixes #550851 for -bad.
+
+2008-10-27 17:01:22 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 17/28] ext/x264/gstx264enc.c: Adapt to slightly modified x264 API.  Fixes #555238.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_init_encoder):
+         Adapt to slightly modified x264 API.  Fixes #555238.
+
+2008-08-12 16:13:15 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 16/28] ext/x264/gstx264enc.*: Do not deal with duplicated input (timestamps).  If needed, a generic element can do so.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_reset),
+         (gst_x264_enc_chain), (gst_x264_enc_encode_frame):
+         * ext/x264/gstx264enc.h:
+         Do not deal with duplicated input (timestamps).  If needed,
+         a generic element can do so.
+         Do not manipulate input timestamps on the way out,
+         since that shifts the timeline and A/V sync.
+
+2008-08-12 15:41:48 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 15/28] docs/plugins/gst-plugins-bad-plugins.args: Integrate new properties into documentation.
+         Original commit message from CVS:
+         * docs/plugins/gst-plugins-bad-plugins.args:
+         Integrate new properties into documentation.
+         * ext/x264/gstx264enc.c: (gst_x264_enc_class_init),
+         (gst_x264_enc_init), (gst_x264_enc_init_encoder),
+         (gst_x264_enc_set_property), (gst_x264_enc_get_property):
+         Fix up API prior to eventual plugin move.
+         API: GstX264Enc:pass (provides more options, and changed to enum)
+
+2008-08-12 13:08:39 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 14/28] Add documentation and unit test for x264enc.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-bad-plugins-sections.txt:
+         * ext/x264/gstx264enc.c:
+         * tests/check/Makefile.am:
+         * tests/check/elements/x264enc.c: (setup_x264enc),
+         (cleanup_x264enc), (GST_START_TEST), (x264enc_suite), (main):
+         Add documentation and unit test for x264enc.
+
+2008-08-11 17:24:58 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 13/28] ext/x264/gstx264enc.c: Allocate some buffers in more adaptive and economical fashion.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_init),
+         (gst_x264_enc_header_buf), (gst_x264_enc_encode_frame):
+         Allocate some buffers in more adaptive and economical fashion.
+
+2008-08-11 15:16:14 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 12/28] configure.ac: Check for sufficiently up-to-date x264 API.
+         Original commit message from CVS:
+         * configure.ac:
+         Check for sufficiently up-to-date x264 API.
+         * ext/x264/gstx264enc.c: (gst_x264_enc_pass_get_type),
+         (gst_x264_enc_base_init), (gst_x264_enc_class_init),
+         (gst_x264_enc_init), (gst_x264_enc_init_encoder),
+         (gst_x264_enc_set_property), (gst_x264_enc_get_property):
+         * ext/x264/gstx264enc.h:
+         Expose some more parameters of the x264 encoder as properties.
+
+2008-08-08 15:07:12 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 11/28] ext/x264/gstx264enc.c: Coding style and layout; re-order some functions in more typical and natural flow.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_log_callback),
+         (gst_x264_enc_finalize), (gst_x264_enc_header_buf),
+         (gst_x264_enc_set_src_caps), (gst_x264_enc_sink_set_caps),
+         (gst_x264_enc_flush_frames):
+         Coding style and layout; re-order some functions in more
+         typical and natural flow.
+
+2008-08-08 14:19:16 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 10/28] ext/x264/: Use GQueue in stead of custom queue code.
+         Original commit message from CVS:
+         * ext/x264/Makefile.am:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps),
+         (gst_x264_enc_sink_set_caps), (gst_x264_enc_init),
+         (gst_x264_enc_reset), (gst_x264_enc_finalize),
+         (gst_x264_enc_flush_frames), (gst_x264_enc_sink_event),
+         (gst_x264_enc_chain), (gst_x264_enc_encode_frame),
+         (gst_x264_enc_change_state), (gst_x264_enc_set_property):
+         * ext/x264/gstx264enc.h:
+         Use GQueue in stead of custom queue code.
+         Factorize flushing out encoder delayed frames.
+         Factorize initialization and state change reset.
+
+2008-08-08 10:56:02 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 09/28] Use configure-generated _stdint.h.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.h:
+         * sys/fbdev/gstfbdevsink.c:
+         Use configure-generated _stdint.h.
+
+2008-08-08 10:13:36 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         [MOVED FROM BAD 08/28] ext/x264/: Use video format library and GST_WRITE_*_BE macros where applicable.
+         Original commit message from CVS:
+         * ext/x264/Makefile.am:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_header_buf),
+         (gst_x264_enc_sink_set_caps), (gst_x264_enc_base_init),
+         (gst_x264_enc_class_init), (gst_x264_enc_log_callback),
+         (gst_x264_enc_init), (gst_x264_enc_init_encoder),
+         (gst_x264_enc_finalize), (gst_x264_enc_chain),
+         (gst_x264_enc_encode_frame), (plugin_init):
+         * ext/x264/gstx264enc.h:
+         Use video format library and GST_WRITE_*_BE macros where applicable.
+         Use finalize in stead of dispose.
+         Set up debug category and log callback.
+
+2008-06-04 11:33:21 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         [MOVED FROM BAD 07/28] ext/x264/gstx264enc.c: Try harder not to crash when we get an EOS event but haven't set up the encoder yet (as may ha...
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_header_buf),
+         (gst_x264_enc_sink_event), (gst_x264_enc_chain),
+         (gst_x264_enc_encode_frame):
+         Try harder not to crash when we get an EOS event but haven't set
+         up the encoder yet (as may happen when upstream errors out with
+         not-negotiated, for example). Also, always push the EOS event
+         downstream.
+
+2007-12-11 16:26:07 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         [MOVED FROM BAD 06/28] ext/x264/gstx264enc.c: Fix caps memleak.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_set_src_caps):
+         Fix caps memleak.
+
+2007-10-26 17:18:41 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         [MOVED FROM BAD 05/28] ext/x264/gstx264enc.c: Fix build against the libx264 version that ships with debian stable.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c:
+         Fix build against the libx264 version that ships with debian stable.
+
+2007-09-24 10:53:37 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         [MOVED FROM BAD 04/28] Massive leak fixing, plus code cleanups.
+         Original commit message from CVS:
+         * ext/audioresample/gstaudioresample.c:
+         * ext/x264/gstx264enc.c:
+         * gst/dvdspu/gstdvdspu.c:
+         * gst/dvdspu/gstdvdspu.h:
+         * gst/festival/gstfestival.c:
+         * gst/h264parse/gsth264parse.c:
+         * gst/mpegtsparse/mpegtspacketizer.c:
+         * gst/mpegtsparse/mpegtsparse.c:
+         * gst/multifile/gstmultifilesink.c:
+         * gst/multifile/gstmultifilesrc.c:
+         * gst/nuvdemux/gstnuvdemux.c:
+         * sys/dshowsrcwrapper/gstdshowaudiosrc.c:
+         * sys/dshowsrcwrapper/gstdshowvideosrc.c:
+         * sys/vcd/vcdsrc.c:
+         Massive leak fixing, plus code cleanups.
+
+2007-07-18 07:35:32 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         [MOVED FROM BAD 03/28] Add stdlib include (free, atoi, exit).
+         Original commit message from CVS:
+         * examples/app/appsrc_ex.c:
+         * examples/switch/switcher.c:
+         * ext/neon/gstneonhttpsrc.c:
+         * ext/timidity/gstwildmidi.c:
+         * ext/x264/gstx264enc.c:
+         * gst/mve/mveaudioenc.c: (mve_compress_audio):
+         * gst/rtpmanager/gstrtpclient.c:
+         * gst/rtpmanager/gstrtpjitterbuffer.c:
+         * gst/spectrum/demo-audiotest.c:
+         * gst/spectrum/demo-osssrc.c:
+         * sys/dvb/gstdvbsrc.c:
+         Add stdlib include (free, atoi, exit).
+
+2007-05-15 21:23:53 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         [MOVED FROM BAD 02/28] ext/x264/gstx264enc.c (gst_x264_enc_init_encoder): This needs a version check.
+         Original commit message from CVS:
+         * ext/x264/gstx264enc.c (gst_x264_enc_init_encoder):
+         This needs a version check.
+         * gst/bayer/Makefile.am:
+         Fix the build.
+
+2007-03-25 13:06:26 +0000  Michal Benes <michal.benes@itonis.tv>
+
+         [MOVED FROM BAD 01/28] Add libx264-based h264 encoder plugin (#421110). Probably doesn't handle 'odd' widths and heights correctly yet.
+         Original commit message from CVS:
+         Patch by: Michal Benes <michal.benes at itonis tv>
+         Patch by: Josef Zlomek <josef.zlomek at itonis tv>
+         * configure.ac:
+         * ext/Makefile.am:
+         * ext/x264/Makefile.am:
+         * ext/x264/gstx264enc.c: (gst_x264_enc_me_get_type),
+         (gst_x264_enc_analyse_get_type),
+         (gst_x264_enc_timestamp_queue_init),
+         (gst_x264_enc_timestamp_queue_free),
+         (gst_x264_enc_timestamp_queue_put),
+         (gst_x264_enc_timestamp_queue_get), (gst_x264_enc_header_buf),
+         (gst_x264_enc_set_src_caps), (gst_x264_enc_sink_set_caps),
+         (gst_x264_enc_base_init), (gst_x264_enc_class_init),
+         (gst_x264_enc_init), (gst_x264_enc_init_encoder),
+         (gst_x264_enc_close_encoder), (gst_x264_enc_dispose),
+         (gst_x264_enc_sink_event), (gst_x264_enc_chain),
+         (gst_x264_enc_encode_frame), (gst_x264_enc_change_state),
+         (gst_x264_enc_set_property), (gst_x264_enc_get_property),
+         (plugin_init):
+         * ext/x264/gstx264enc.h:
+         Add libx264-based h264 encoder plugin (#421110). Probably doesn't
+         handle 'odd' widths and heights correctly yet.
+
+2009-06-05 01:51:20 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: nicer metadata extraction of genre tags in some cases
+         Handle pseudo-strings like "(5)" and map them to the ID3v1 genre
+         that they presumably stand for.
+
+2009-06-05 01:32:07 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: parse WM/Picture tags to extract cover art
+         Fixes #583112.
+
+2009-05-31 20:20:30 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * REQUIREMENTS:
+         docs: fix http links for amr libs in REQUIREMENTS
+
+2009-05-29 20:07:14 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fix bogus flow return handling in eos handler
+         Don't overwrite the origin flow return by whatever flow we get
+         when trying to push the remaining internally queued payloads.
+         We want to do our eos logic, ie. send an EOS event or segment-done
+         message in any case. Makes things EOS properly when an EOS event
+         is forced upon the pipeline so that the source returns
+         FLOW_UNEXPECTED to a pulling asfdemux. Should fix #582056.
+
+2009-05-29 19:52:58 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * win32/common/config.h:
+         win32: update config.h
+
+2009-05-22 19:27:35 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+         configure: bump core/base requirements to released versions
+
+2009-05-22 19:26:27 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * autogen.sh:
+       * configure.ac:
+         autogen: move the -Wno-portability for automake into configure.ac
+
+2009-05-27 00:16:30 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/dvdlpcmdec/Makefile.am:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         dvdlpcmdec: Add multichannel channel maps, and send some tags
+         Add a multichannel map to the output caps, and send at least a CODEC and
+         BITRATE tag. I'm not too sure about the 5.1 and 7.1 channel maps. I have
+         no samples and can't find info about the channel ordering, but this is
+         better than nothing.
+
+2009-05-26 17:19:54 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 888e0a2 to c572721
+
+2009-05-22 10:20:46 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 6ab11d1 to 888e0a2
+
+2009-05-21 15:18:06 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+         dvdsubdec: Remove some dead code
+         Remove some redundant memset - gobject memory is already initalised to 0.
+         Remove a commented out line leftover from the previous commit
+
+2009-05-21 14:20:22 +0100  Kapil Agrawal <kapil@mediamagictechnologies.com>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+       * gst/dvdsub/gstdvdsubdec.h:
+         dvdsubdec: Support ARGB output
+         Negotiate to and render into ARGB buffers directly if the peer supports it.
+         Fixes: #580869
+
+2009-05-19 00:51:49 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * ext/a52dec/gsta52dec.c:
+         a52dec: Reconcile code with dtsdec
+         Perform some cleanups based on the dtsdec code such as using the boilerplate
+         macro and static pad template functions.
+         Add some documentation. Don't register a change in flags until we synch on
+         another frame successfully.
+
+2009-05-14 12:32:16 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: Improve debugging a bit
+
+2009-05-13 19:32:16 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Revert ranking switch with ffdec_mpeg2video. Fixes #574461
+
+2009-05-13 01:55:16 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * po/Makevars:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         po: avoid conflicts of local *.po files with files in git
+         Make it so that filenames and line numbers are only stored in the *.pot file
+         (which is not in git), but not in the individual *.po files. This information
+         is hardly useful for translators in our case, and it should avoid the constant
+         conflicts of local *.po files with the ones in git which are caused by the
+         source files changing and the line numbers being updated. This commit might
+         cause one last merge conflict for you, which you can work around with
+         "git checkout po/*.po" before merging or pulling. After that there should
+         (hopefully) not be any more local modifications of these files (unless
+         someone committed additions or changes to translated strings and the
+         *.po files haven't been updated yet, that is).
+
+2009-05-12 19:22:07 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: add Since tag to gtk-doc chunk
+
+2009-05-13 01:46:00 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * tests/check/elements/mpeg2dec.c:
+         checks: fix mpeg2dec unit test again after interlace addition to caps
+
+2009-05-12 20:34:20 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: work around old mpeg2dec versions
+         The repeat first field flag was introduced in 0.5.0 so conditionally disable its
+         detection and just assume no rff is used. This fixes the compilation.
+         Fixes #582375
+
+2009-05-12 20:24:02 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * ext/mpeg2dec/Makefile.am:
+         mpeg2dec: link to gstvideo
+         Fix compilation by adding the right include directories and linking to the video
+         library.
+
+2009-05-12 11:57:04 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfdemux: Downgrade simple statements from WARNING to DEBUG
+
+2009-05-11 12:37:46 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfheaders.c:
+       * gst/asfdemux/asfheaders.h:
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/asfpacket.h:
+         asf: Detect more payload extensions.
+         These should help fix interlaced/PAR issues with more files.
+
+2009-05-12 11:44:13 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         mpeg2dec: Implement interlaced support.
+         Expand the debugging statements to show more picture information.
+
+2009-05-12 11:19:00 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Lower rank to MARGINAL to make ffdec_mpeg2video the default
+         ffdec_mpeg2video is much faster, fixes bug #574461.
+
+2009-05-10 16:53:07 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: Don't write a Xing header
+
+2009-05-10 11:17:25 +0200  Marc-Andre Lureau <marcandre.lureau@gmail.com>
+
+       * autogen.sh:
+         Run libtoolize before aclocal
+         This unbreaks the build in some cases. Fixes bug #582021
+
+2009-05-09 15:28:18 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: use 64bit safe scaling functions.
+         Got this to fail when seeking in a 14GB file (the value in bytes is
+         bigger than 2**32).
+
+2009-05-09 10:57:34 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: remove some pointless g_return_if_fail()s
+
+2009-05-08 14:24:47 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * ext/twolame/gsttwolame.c:
+         Switch twolame to primary rank
+
+2009-05-07 17:59:52 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/twolame/gsttwolame.c:
+         Add ranks to mp3 encoders
+
+2009-05-07 17:57:17 +0100  Christian Schaller <christian.schaller@collabora.co.uk>
+
+       * gst-plugins-ugly.spec.in:
+         Add twolame plugin to spec file
+
+2009-05-02 18:11:06 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: use upstream segment and timestamps for some interpolation
+         This should particularly help in case of upstream live src, e.g. rtspsrc,
+         and especially so if it has to perform fallback to TCP.
+
+2009-05-07 11:09:59 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: Add support for fragmented packet (L == 0).
+         This happens with rtp-over-udp.
+
+2009-05-07 10:10:02 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: Fixup the bitrate only for CBR
+         Additionally clarify some property descriptions.
+
+2009-05-06 21:47:17 +0200  Alessandro Decina <alessandro.d@gmail.com>
+
+       * ext/lame/gstlamemp3enc.c:
+         lame: fix format string in debug statement
+
+2009-05-06 15:37:44 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: Don't reject valid Xing tables of contents
+         Some Xing headers apparently start the TOC at byte 1 instead of 0. Don't
+         reject them because of it, just subtract the initial offset when reading
+         the table.
+
+2009-05-06 15:27:01 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: Allow more bits to change in headers during resynch
+         Be more lenient about what we accept as changing bits in a header - basically,
+         only require that the mp3 sync marker is present, for the mpeg version,
+         layer and samplerate.
+         Fixes: #581464
+
+2009-05-06 13:17:35 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mad/gstmad.c:
+         mad: Add duration of incoming/outgoing buffers in debug statements
+
+2009-05-06 13:15:30 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: Remove useless checks for valid buffer duration.
+         The buffer duration is set to a valid value at the very top of
+         emit_frame(), we therefore don't need to check it later on.
+
+2009-05-06 13:13:35 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: Fix stop condition for outputting buffers.
+         Some mp3 streams have an offset in timestamps, requiring us to push the
+         frame *AFTER* segment.stop in order for the decoder to be able to push
+         all data up to the segment.stop position.
+
+2009-05-02 16:51:11 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: 0-base timestamps consistently (whether or not streaming)
+         This also makes timestamps (more) consistent before and after a possible
+         seek, and moreover makes for reasonable position reporting in live stream
+         (whose payload timestamps should not be taken for granted).
+
+2009-05-02 13:45:22 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: report initial latency due to internal preroll queue
+
+2009-05-02 13:44:48 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: enhance debug statement and refactor some initialization
+
+2009-05-02 13:44:11 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: handle FIXME; activate pads after internal preroll also when streaming
+
+2009-05-02 11:12:51 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: handle FIXME; normalize preroll
+
+2009-05-02 16:08:03 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         asfdemux: fixes for streaming mode
+         * Improve newsegment handling, e.g. upstream might live in TIME.
+         * Only send newsegment if we have needed info.
+         * Avoid reading past end of data section.
+
+2009-05-01 18:08:15 +0200  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: fixes/enhancements for streaming mode
+         * Do not rock the boat by reacting to FLUSH_START.
+         * Try to handle TIME seeking by seeking upstream in BYTES.
+         * Handle SEEKING query.
+
+2009-05-05 16:38:19 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * configure.ac:
+       * ext/lame/gstlamemp3enc.c:
+         lame: fix compilation with LAME versions < 3.98
+         lame_set_VBR_quality(), which takes a floating point value for the
+         quality, has been added only in v3.98. Use lame_set_VBR_q(), which
+         takes quality as an integer, for older LAME versions.
+         Fixes #581341.
+
+2009-05-04 20:39:14 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * win32/common/config.h:
+         win32: update config.h to git
+         Until someone ports the new win32 config.h logic from the
+         other modules to -ugly.
+
+2009-05-04 12:53:06 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+         Update docs
+
+2009-05-04 12:51:29 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lamemp3enc: Add a note to the encoding-engine-quality property
+         that says, that this does not affect the bitrate at all.
+
+2009-05-04 12:48:43 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame: Implement preset interface
+
+2009-05-04 12:47:03 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/twolame/gsttwolame.c:
+         twolame: Implement preset interface
+
+2009-04-30 10:21:40 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/lame/gstlamemp3enc.h:
+         lamemp3enc: Remove fast-vbr property and rename vbr-quality to quality
+
+2009-04-30 10:16:45 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+         lame/lamemp3enc: Fix memory leak on FLUSH_STOP
+
+2009-04-30 10:14:54 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlame.c:
+         lame: Deprecate the lame element
+
+2009-04-30 10:13:05 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+         Update docs
+
+2009-04-30 10:10:08 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/gstlamemp3enc.c:
+         lame: Update example pipelines with the new properties
+
+2009-04-29 19:01:44 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * ext/lame/Makefile.am:
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlamemp3enc.c:
+       * ext/lame/gstlamemp3enc.h:
+       * ext/lame/plugin.c:
+         lame: Add lamemp3enc element with much simplified interface
+         This deprecates the lame element and fixes bug #494528.
+
+2009-04-23 09:04:41 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/asfpacket.c:
+         asfpacket: Fix pull-mode timestamping handling.
+         The problem that happens is the following:
+         * A packet with multiple payloads comes in
+         * Those payloads get handled one by one
+         * The first payload contains the first audio payload with timestamp A
+         * The second payload contains the first video (key)frame with timestamp V (where V < A)
+         With the previous code, the following would happen:
+         * the first payload gets processed, then passed to queue_for_stream
+         * queue_for_stream detects it's the first valid timestamp received and stores
+         first_ts = A
+         * the second payload gets processed, then pass to queue_for_stream
+         * queue_for_stream detects the timestamp is lower than first_ts... and
+         discards it... resulting in losing the first keyframe of the video stream
+         We've been having this issue for *ages*... it's just that nobody noticed it
+         that much with playbin. But with playbin2's aggresive multiqueue handling, this
+         will result in multiqueue not being able to preroll (because the video decoder will
+         be dropping a ton of buffers before (maybe) receiving the next keyframe).
+         Tested with over 200 asf files, and they all play the first frame correctly now,
+         even the most braindead ones.
+
+2009-04-21 14:12:06 -0700  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: don't build seek table if we can't seek.
+         Fixes #573720 - unbounded memory usage increase when listening to mp3
+         stream for a long time.
+
+2009-04-21 22:13:32 +0100  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From b3941ea to 6ab11d1
+
+2009-04-21 20:17:57 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstxingmux.c:
+         mpegaudioparse: Remove dead assignment and duplicate code
+
+2009-04-21 20:21:11 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Actually return the return value for the seek handling.
+
+2009-04-21 20:20:02 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+         mpegstream: Remove dead assignments.
+         The duplicate assignment of update_time was weird... but it seems normal
+         that it's indeed the second statement which is the valid one.
+
+2009-04-21 20:17:19 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/amrnb/amrnbparse.c:
+         armnb: Remove unused variable, adapt debug message accordingly.
+
+2009-04-21 20:15:56 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/dvdsub/gstdvdsubdec.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegclock.c:
+         dvdsub/mpegstream: _class_init: Remove unused class variables
+
+2009-04-19 14:03:58 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: Initialize flow for a corner case.
+         This might be caused by entering the if() line 1214 and then not having
+         any activated_streams.. resulting in reaching line 1267 without having
+         any valid flow value.
+
+2009-04-19 14:03:38 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/twolame/gsttwolame.c:
+         twolame: Remove unneeded variable, value assigned was never read.
+
+2009-04-19 14:03:19 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         mpeg2dec: Remove dead assignment. Value overwritten later on.
+
+2009-04-19 14:02:44 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mad/gstmad.c:
+         mad: Remove dead assignment and variables given values which are never read.
+
+2009-04-19 14:02:03 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/lame/gstlame.c:
+         lame: Remove unneeded variable, it's assigned a value never read.
+
+2009-04-19 13:59:24 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Remove dead assignment, value is being overwritten before being read.
+
+2009-04-19 13:58:31 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/rmdemux.c:
+         rmdemux: Remove unused accurate flag.
+         I couldn't see any reason why this was there in the first place.
+
+2009-04-19 13:57:59 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/asmrules.c:
+       * gst/realmedia/rdtdepay.c:
+         realmedia: Remove dead assignments. The results are never read.
+
+2009-04-19 13:57:10 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/gstrdtbuffer.c:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rdtmanager.c:
+       * gst/realmedia/rmdemux.c:
+         realmedia: Remove useless variables, only being used once (or not).
+
+2009-04-19 13:55:24 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * gst/asfdemux/gstrtspwms.c:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/rdtdepay.c:
+       * gst/realmedia/rtspreal.c:
+         remove empty method implementations.
+
+2009-04-18 08:12:08 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/asfdemux/gstrtspwms.c:
+         rtspwms: fix condition to detect extension commands for WMS
+         Reply with OK to the extension commands for WMS.
+
+2009-04-15 11:09:56 +0200  Josep Torra <n770galaxy@gmail.com>
+
+       * gst/realmedia/rtspreal.c:
+         realmedia: add special Real header to DESCRIBE message only for Real servers
+         Add headers that are specific to real only if a real server had been
+         detected by the OPTIONS message.
+
+2009-04-14 19:16:46 +0200  David Hoyt <dhoyt at llnl.gov>
+
+       * gst/synaesthesia/synaescope.c:
+         synaesthesia: fix compilation on windows
+         Fix compilation under MSVC due to references to headers
+         that are not available with the MS SDKs.
+         Fixes #578524
+
+2009-04-14 10:54:37 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstrtspwms.c:
+         rtspwms: reply to extension commands
+         Reply with OK to the extension commands for WMS.
+
+2009-04-14 10:53:51 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         asfdepay: fix a comment
+
+2009-04-14 10:53:33 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/gstasfdemux.c:
+         asfdemux: add some more debugging
+
+2009-04-14 10:51:45 +0200  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * configure.ac:
+         configure.ac: require git -base
+         We require 0.10.22.1 of -base for the new Match-If and ETag headers in RTSP.
+
+2009-04-09 20:21:46 +0100  Tim-Philipp Müller <tim.muller@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         realmedia: add special Real header to SETUP message only for Real servers
+         Fixes playback of Windows Media RTSP streams and other non-Real RTSP
+         streams where the server errors out because it can't handle the
+         Real-specific 'Required: com.real.retain-entity-for-setup' header
+         we've been adding unconditionally in the recent past.
+         For reference:
+         rtsp://66.111.34.191:601/broadcast/alnour.rm
+         rtsp://195.134.224.231/snowboard_100.wmv
+
+2009-04-08 11:44:53 -0700  Michael Smith <msmith@songbirdnest.com>
+
+       * configure.ac:
+       * gst/asfdemux/Makefile.am:
+         asfdemux: link to all required libraries including indirectly used ones.
+         On win32, we're required to link to all the libraries used - including
+         ones only indirectly used by other libs. So, add gstaudio, gsttag, and
+         (for windows only) winsock.
+
+2009-04-04 21:19:23 +0300  Felipe Contreras <felipe.contreras@gmail.com>
+
+       * common:
+         Automatic update of common submodule
+         From d0ea89e to b3941ea
+
+2009-04-04 14:54:41 +0200  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Automatic update of common submodule
+         From f8b3d91 to d0ea89e
+
+2009-03-26 20:23:14 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         dvdlpcmdec: Fix factory klass, It's a 'Decoder', not a 'Demuxer'.
+
+2009-03-25 16:39:06 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+       * gst/realmedia/rtspreal.h:
+         realrtsp: add more headers
+         Parse the ETag from the describe method and pass the sessionid as the value for
+         the If-Match header is subsequent setup calls.
+         Fixes support for more RealMedia RTSP streams.
+
+2009-03-22 13:08:48 -0700  David Schleef <ds@schleef.org>
+
+       * configure.ac:
+         twolame: bump requirement to 0.3.10
+         0.3.10 is the first version with the float32 encoder functions.
+         Fixes #576305.
+
+2009-03-22 20:15:24 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+         back to development -> 0.10.11.1
+
+=== release 0.10.11 ===
+
+2009-03-21 01:05:22 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * gst-plugins-ugly.doap:
+       * po/cs.po:
+       * win32/common/config.h:
+         Release 0.10.11
+
+2009-03-21 00:28:29 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/ja.po:
+       * po/lt.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/tr.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+
+2009-03-13 16:45:08 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * win32/common/config.h:
+         0.10.10.3 pre-release
+
+2009-03-13 16:40:38 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/fi.po:
+       * po/id.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/sv.po:
+         po: Update translations from upstream
+
+2009-03-13 16:38:08 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/LINGUAS:
+       * po/tr.po:
+         po: Add Turkish translation
+
+2009-03-13 19:23:12 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+         mp3parse: Fix glitches in the output when playing (for e.g.) AVI
+         Don't introduce glitches in the output by a) relaxing the threshold for
+         taking upstream timestamps in preference to our calculated timestamps and
+         b) only set the discont flag on outgoing buffers in response to an incoming
+         discont buffer.
+         Fixes: #575046
+
+2009-03-12 15:57:31 +0100  Alessandro Decina <alessandro.decina@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: fix deadlock with accurate seeks.
+         Release pending_accurate_seeks_lock before forwarding the seek event upstream.
+         Fixes #575068.
+
+2009-03-10 00:22:35 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/ca.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/lt.po:
+       * po/mt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+       * win32/common/config.h:
+         0.10.10.2 pre-release
+         Bump version number, update translations and win32 config.h
+
+2009-03-10 00:19:01 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * po/LINGUAS:
+       * po/ja.po:
+         po: Add Japanese translation
+
+2009-03-10 00:10:20 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * docs/plugins/Makefile.am:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * docs/plugins/inspect/plugin-synaesthesia.xml:
+       * docs/plugins/inspect/plugin-twolame.xml:
+       * ext/Makefile.am:
+       * po/POTFILES.in:
+         Moved twolame from Bad to Ugly
+
+2008-11-04 12:42:30 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         [MOVED FROM BAD] Don't install static libs for plugins. Fixes #550851 for -bad.
+         Original commit message from CVS:
+         * ext/alsaspdif/Makefile.am:
+         * ext/amrwb/Makefile.am:
+         * ext/apexsink/Makefile.am:
+         * ext/arts/Makefile.am:
+         * ext/artsd/Makefile.am:
+         * ext/audiofile/Makefile.am:
+         * ext/audioresample/Makefile.am:
+         * ext/bz2/Makefile.am:
+         * ext/cdaudio/Makefile.am:
+         * ext/celt/Makefile.am:
+         * ext/dc1394/Makefile.am:
+         * ext/dirac/Makefile.am:
+         * ext/directfb/Makefile.am:
+         * ext/divx/Makefile.am:
+         * ext/dts/Makefile.am:
+         * ext/faac/Makefile.am:
+         * ext/faad/Makefile.am:
+         * ext/gsm/Makefile.am:
+         * ext/hermes/Makefile.am:
+         * ext/ivorbis/Makefile.am:
+         * ext/jack/Makefile.am:
+         * ext/jp2k/Makefile.am:
+         * ext/ladspa/Makefile.am:
+         * ext/lcs/Makefile.am:
+         * ext/libfame/Makefile.am:
+         * ext/libmms/Makefile.am:
+         * ext/metadata/Makefile.am:
+         * ext/mpeg2enc/Makefile.am:
+         * ext/mplex/Makefile.am:
+         * ext/musepack/Makefile.am:
+         * ext/musicbrainz/Makefile.am:
+         * ext/mythtv/Makefile.am:
+         * ext/nas/Makefile.am:
+         * ext/neon/Makefile.am:
+         * ext/ofa/Makefile.am:
+         * ext/polyp/Makefile.am:
+         * ext/resindvd/Makefile.am:
+         * ext/sdl/Makefile.am:
+         * ext/shout/Makefile.am:
+         * ext/snapshot/Makefile.am:
+         * ext/sndfile/Makefile.am:
+         * ext/soundtouch/Makefile.am:
+         * ext/spc/Makefile.am:
+         * ext/swfdec/Makefile.am:
+         * ext/tarkin/Makefile.am:
+         * ext/theora/Makefile.am:
+         * ext/timidity/Makefile.am:
+         * ext/twolame/Makefile.am:
+         * ext/x264/Makefile.am:
+         * ext/xine/Makefile.am:
+         * ext/xvid/Makefile.am:
+         * gst-libs/gst/app/Makefile.am:
+         * gst-libs/gst/dshow/Makefile.am:
+         * gst/aiffparse/Makefile.am:
+         * gst/app/Makefile.am:
+         * gst/audiobuffer/Makefile.am:
+         * gst/bayer/Makefile.am:
+         * gst/cdxaparse/Makefile.am:
+         * gst/chart/Makefile.am:
+         * gst/colorspace/Makefile.am:
+         * gst/dccp/Makefile.am:
+         * gst/deinterlace/Makefile.am:
+         * gst/deinterlace2/Makefile.am:
+         * gst/dvdspu/Makefile.am:
+         * gst/festival/Makefile.am:
+         * gst/filter/Makefile.am:
+         * gst/flacparse/Makefile.am:
+         * gst/flv/Makefile.am:
+         * gst/games/Makefile.am:
+         * gst/h264parse/Makefile.am:
+         * gst/librfb/Makefile.am:
+         * gst/mixmatrix/Makefile.am:
+         * gst/modplug/Makefile.am:
+         * gst/mpeg1sys/Makefile.am:
+         * gst/mpeg4videoparse/Makefile.am:
+         * gst/mpegdemux/Makefile.am:
+         * gst/mpegtsmux/Makefile.am:
+         * gst/mpegvideoparse/Makefile.am:
+         * gst/mve/Makefile.am:
+         * gst/nsf/Makefile.am:
+         * gst/nuvdemux/Makefile.am:
+         * gst/overlay/Makefile.am:
+         * gst/passthrough/Makefile.am:
+         * gst/pcapparse/Makefile.am:
+         * gst/playondemand/Makefile.am:
+         * gst/rawparse/Makefile.am:
+         * gst/real/Makefile.am:
+         * gst/rtjpeg/Makefile.am:
+         * gst/rtpmanager/Makefile.am:
+         * gst/scaletempo/Makefile.am:
+         * gst/sdp/Makefile.am:
+         * gst/selector/Makefile.am:
+         * gst/smooth/Makefile.am:
+         * gst/smoothwave/Makefile.am:
+         * gst/speed/Makefile.am:
+         * gst/speexresample/Makefile.am:
+         * gst/stereo/Makefile.am:
+         * gst/subenc/Makefile.am:
+         * gst/tta/Makefile.am:
+         * gst/vbidec/Makefile.am:
+         * gst/videodrop/Makefile.am:
+         * gst/videosignal/Makefile.am:
+         * gst/virtualdub/Makefile.am:
+         * gst/vmnc/Makefile.am:
+         * gst/y4m/Makefile.am:
+         * sys/acmenc/Makefile.am:
+         * sys/cdrom/Makefile.am:
+         * sys/dshowdecwrapper/Makefile.am:
+         * sys/dshowsrcwrapper/Makefile.am:
+         * sys/dvb/Makefile.am:
+         * sys/dxr3/Makefile.am:
+         * sys/fbdev/Makefile.am:
+         * sys/oss4/Makefile.am:
+         * sys/qcam/Makefile.am:
+         * sys/qtwrapper/Makefile.am:
+         * sys/vcd/Makefile.am:
+         * sys/wininet/Makefile.am:
+         * win32/common/config.h:
+         Don't install static libs for plugins. Fixes #550851 for -bad.
+
+2008-09-02 09:56:44 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         [MOVED FROM BAD] Enable/fix up translations for these plugins.
+         Original commit message from CVS:
+         * ext/resindvd/plugin.c: (plugin_init):
+         * ext/resindvd/resindvdsrc.c:
+         * ext/twolame/gsttwolame.c: (plugin_init):
+         * gst/aiffparse/aiffparse.c: (plugin_init):
+         Enable/fix up translations for these plugins.
+         * po/LINGUAS:
+         Add 'ca' to LINGUAS.
+         * po/POTFILES.in:
+         * po/POTFILES.skip:
+         Add more files for translation and more files which tools
+         should skip.
+
+2008-08-07 14:34:03 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         [MOVED FROM BAD] ext/twolame/gsttwolame.*: Allow raw float samples as input for encoding.
+         Original commit message from CVS:
+         * ext/twolame/gsttwolame.c: (gst_two_lame_sink_setcaps),
+         (gst_two_lame_chain):
+         * ext/twolame/gsttwolame.h:
+         Allow raw float samples as input for encoding.
+
+2008-08-02 17:39:13 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         [MOVED FROM BAD] Add TwoLAME MP2 encoding element, based on the LAME element.
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/Makefile.am:
+         * ext/twolame/Makefile.am:
+         * ext/twolame/gsttwolame.c: (gst_two_lame_mode_get_type),
+         (gst_two_lame_padding_get_type), (gst_two_lame_emphasis_get_type),
+         (gst_two_lame_release_memory), (gst_two_lame_finalize),
+         (gst_two_lame_base_init), (gst_two_lame_class_init),
+         (gst_two_lame_src_setcaps), (gst_two_lame_sink_setcaps),
+         (gst_two_lame_init), (gst_two_lame_set_property),
+         (gst_two_lame_get_property), (gst_two_lame_sink_event),
+         (gst_two_lame_chain), (gst_two_lame_setup),
+         (gst_two_lame_change_state), (gst_two_lame_get_default_settings),
+         (plugin_init):
+         * ext/twolame/gsttwolame.h:
+         Add TwoLAME MP2 encoding element, based on the LAME element.
+
+2009-03-09 23:13:20 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 7032163 to f8b3d91
+
+2009-03-08 12:05:57 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From ffa738d to 7032163
+
+2009-03-08 11:21:32 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 3f13e4e to ffa738d
+
+2009-03-07 11:47:06 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 3c7456b to 3f13e4e
+
+2009-03-07 10:47:13 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * common:
+         Automatic update of common submodule
+         From 57c83f2 to 3c7456b
+
+2009-03-06 12:30:36 -0800  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: be more conservative when changing layer/rate/etc.
+         Don't allow a change in sample rate/channels/layer/version unless we can
+         see another frame at the correct offset. Prevents accidently flipping
+         due to simple single-bit corruption.
+
+2009-03-04 16:52:59 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * gst/realmedia/realhash.c:
+         rmdemux: Fix strict-aliasing warnings.
+         Use existing GST_READ_UINT32 and GST_WRITE_UINT32 macros instead of
+         hand-rolled ones.
+
+2009-03-04 16:15:00 +0200  René Stadler <mail@renestadler.de>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: Remove empty lines added by buggy indent.
+
+2009-02-27 13:41:58 +0100  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mpegaudioparse: Provide SEEKING query handling.
+         Since SEEK event handling might perform some conversion
+         from TIME to BYTES, do not let upstream fool application
+         into (TIME) seeking not being possible.
+
+2009-02-25 13:34:05 -0800  Michael Smith <msmith@songbirdnest.com>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+         mp3parse: fix accurate seeks to near 0
+         Integer underflow made accurate seeks to near zero fail and seek to
+         completely the wrong place. Fix by clamping to zero, since we can't seek
+         to negative times anyway.
+
+2009-02-25 20:52:08 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+       * configure.ac:
+         build: Update shave init statement for changes in common. Bump common.
+
+2009-02-25 18:19:20 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rtspreal.c:
+         rtspreal: ignore data streams. Fixes #527112
+         Ignore data streams when parsing the SDP as they don't contain anything we need
+         to put in the realmedia header.
+
+2009-02-25 11:32:37 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 9cf8c9b to a6ce5c6
+
+2009-02-24 15:25:16 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * ext/mad/gstid3tag.c:
+         Forward unknown events
+         Forward unknown events upstream instead of dropping them. Also return the result
+         of the seek event instead of a fixed value.
+
+2009-02-23 10:50:50 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/asfdemux/gstrtpasfdepay.c:
+         rtpasfdepay: Fix the build by adding the needed include for atoi.
+
+2009-02-22 19:19:12 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * configure.ac:
+       * docs/plugins/Makefile.am:
+         Use shave for the build output
+
+2009-02-22 16:00:02 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Automatic update of common submodule
+         From 5d7c9cc to 9cf8c9b
+
+2009-02-22 14:22:30 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/asfdemux/gstasf.c:
+       * gst/asfdemux/gstrtpasfdepay.c:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rdtdepay.c:
+       * gst/synaesthesia/gstsynaesthesia.c:
+       * gst/synaesthesia/synaescope.c:
+         Fix indentation.
+
+2009-02-22 14:21:22 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * gst/realmedia/pnmsrc.c:
+         pnmsrc: Error out gracefully if location is NULL. Run gst-indent
+
+2009-02-21 11:13:55 -0800  David Schleef <ds@schleef.org>
+
+       * common:
+         Automatic update of common submodule
+         From 80c627d to 5d7c9cc
+
+2009-02-20 15:53:34 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/Makefile.am:
+       * gst/realmedia/pnmsrc.c:
+       * gst/realmedia/pnmsrc.h:
+       * gst/realmedia/rademux.c:
+       * gst/realmedia/rademux.h:
+       * gst/realmedia/realmedia.c:
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rmdemux.h:
+         Add pnm:// uri source
+         Add a new utri handler for pnm:// that for now just redirects to the same uri
+         with the rtsp:// protocol, which usually works nowadays.
+         Separate the registration of the various plugins into a separate source file.
+
+2009-02-20 13:48:08 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/asfdemux/Makefile.am:
+       * gst/asfdemux/gstasf.c:
+       * gst/asfdemux/gstrtpasfdepay.c:
+       * gst/asfdemux/gstrtpasfdepay.h:
+         Add ASF depayloader
+         Add ASF depayloader based on latest public MicroSoft docs (MS-RTSP).
+         Fixes #335067.
+
+2009-02-19 19:10:53 +0000  Zaheer Merali <zaheerabbas@merali.org>
+
+       * ext/mad/gstmad.c:
+         mad: remove log line added in error
+
+2009-02-19 19:08:10 +0000  Zaheer Merali <zaheerabbas@merali.org>
+
+       * ext/mad/gstmad.c:
+         mad: just flush data when seeing BADDATAPTR instead of going into error state
+
+2009-02-18 12:55:16 +0100  Roland Moser <rmoser@gmx.at>
+
+       * gst/realmedia/rmdemux.c:
+         Fix parsing of the flags in rmdemux
+         Fix parsing of the flags in version 1 realmedia streams.
+         Fixes #571358.
+
+2009-02-09 12:03:15 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * common:
+         Bump revision to use for common submodule.
+
+2009-01-30 22:27:05 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         Add releaseinfo with online url.
+
+2009-01-30 17:34:27 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * common:
+         Bump common
+
+2009-01-30 14:35:40 +0100  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         Remove redundant push_mode struct member
+
+2009-01-30 09:04:46 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * autogen.sh:
+         Fix previous commit, wasn't actually setting up a symbolic link
+
+2009-01-30 08:56:33 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * autogen.sh:
+       * common:
+         Use a symbolic link for the pre-commit client-side hook
+
+2009-01-30 08:56:24 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * .gitignore:
+         Ignore some more files
+
+2009-01-26 22:40:10 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/synaescope.c:
+       * gst/synaesthesia/synaescope.h:
+         Precalculate some size dependent variables. Demystify the height scaling a bit.
+         Adds more comments to the code about the height scaling. RIght now only certain heights are screen filling.
+
+2009-01-26 21:26:46 +0200  Stefan Kost <ensonic@users.sf.net>
+
+         Merge branch 'master' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-ugly
+
+2009-01-26 20:12:41 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/rdtdepay.c:
+         Set flags on the realmedia chunks
+         Set the keyframe flags from the RDT packet to the realmedia chunk so that the
+         descrambler can be reset on keyframes. Fixes #556714.
+
+2009-01-26 20:10:36 +0100  Wim Taymans <wim.taymans@collabora.co.uk>
+
+       * gst/realmedia/gstrdtbuffer.c:
+       * gst/realmedia/gstrdtbuffer.h:
+         Add method to get RDT flags
+         Add a method to get the RDT flags. We need these flags to mark keyframes to
+         reset the descrambing queue. See #556714.
+
+2009-01-26 10:00:57 +0100  Hans de Goede <jwrdegoede@fedoraproject.org>
+
+       * gst/asfdemux/asfpacket.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+         Add seeking support to asfdemux in push mode
+         Fixes bug #568836.
+
+2009-01-26 09:57:26 +0100  Hans de Goede <jwrdegoede@fedoraproject.org>
+
+       * gst/asfdemux/asfpacket.c:
+         Drop packets with an invalid replicated data length
+         Drop packets with an invalid replicated data length
+         instead of continuing with an invalid timestamp
+         and uninitialized payload metadata.
+         All other code assumes that the timestamps are valid.
+
+2009-01-25 22:31:52 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/synaescope.h:
+         Change comment to refer to right variable.
+
+2009-01-24 23:27:08 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+       * gst/synaesthesia/gstsynaesthesia.h:
+       * gst/synaesthesia/synaescope.c:
+       * gst/synaesthesia/synaescope.h:
+         Bring synaesthesia to next century.
+         Do proper size negotiation. Change engine API to allow resizes. Small cleanups elsewhere.
+
+2009-01-23 17:51:00 -0800  David Schleef <ds@schleef.org>
+
+       * gst/asfdemux/gstasfdemux.c:
+         Fix leak of converted string
+
+2009-01-23 23:44:01 +0000  Jan Schmidt <thaytan@noraisin.net>
+
+       * .gitignore:
+       * po/.gitignore:
+         Add more to the gitignores
+
+2009-01-23 23:59:38 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * gst/synaesthesia/gstsynaesthesia.c:
+         Make synaesthesia build again.
+         _init() has no params.
+
+2009-01-22 18:15:36 +0200  Stefan Kost <ensonic@users.sf.net>
+
+       * common:
+         Update common snapshot.
+
+2009-01-22 13:50:09 +0100  Sebastian Dröge <slomo@circular-chaos.org>
+
+       * common:
+         Fix pre-commit hook
+
+2009-01-22 06:14:31 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * autogen.sh:
+       * common:
+         Install and use pre-commit indentation hook from common
+
+2009-01-21 04:32:33 +0100  Edward Hervey <bilboed@bilboed.com>
+
+       * autogen.sh:
+         autogen.sh : Use git submodule
+
+2009-01-08 08:19:25 +0000  Yves Lefebvre <ivanohe@abacom.com>
+
+         gst/mpegstream/: Fix some caps leaks. Fixes bug #564885.
+         Original commit message from CVS:
+         Patch by: Yves Lefebvre <ivanohe at abacom dot com>
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_video_stream),
+         (gst_dvd_demux_get_audio_stream),
+         (gst_dvd_demux_get_subpicture_stream), (gst_dvd_demux_reset):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init_stream),
+         (gst_mpeg_demux_get_video_stream),
+         (gst_mpeg_demux_get_audio_stream), (gst_mpeg_demux_reset):
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
+         Fix some caps leaks. Fixes bug #564885.
+
+2009-01-02 00:43:53 +0000  Alessandro Decina <alessandro.d@gmail.com>
+
+         ext/cdio/gstcdio.c: Remove unused format argument.
+         Original commit message from CVS:
+         * ext/cdio/gstcdio.c:
+         Remove unused format argument.
+
+2008-12-13 20:41:40 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         win32/common/: Hardcode cpu for win32 build, just like we do in the other modules, to remove VCS conflicts and incons...
+         Original commit message from CVS:
+         * win32/common/.cvsignore:
+         * win32/common/config.h:
+         * win32/common/config.h.in:
+         Hardcode cpu for win32 build, just like we do in the other modules,
+         to remove VCS conflicts and inconsistent defines between modules,
+         and update version defines to CVS.
+
+2008-12-13 16:29:38 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         m4/Makefile.am: Removed two more .m4 that aren't shipped with gettext 0.17 anymore.
+         Original commit message from CVS:
+         * m4/Makefile.am:
+         Removed two more .m4 that aren't shipped with gettext 0.17 anymore.
+
+2008-12-13 13:01:49 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         m4/Makefile.am: inttypes.m4 hasn't been available since gettext-0.15, and since we now require gettext >= 0.17 ... we...
+         Original commit message from CVS:
+         * m4/Makefile.am:
+         inttypes.m4 hasn't been available since gettext-0.15, and since we now
+         require gettext >= 0.17 ... we can remove it from the list of files to
+         dist.
+
+2008-12-10 15:42:21 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Do an initial class_ref on an internal enum type from within the class_init f...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (channel_mode_class),
+         (GST_TYPE_MP3_CHANNEL_MODE), (mp3_type_frame_length_from_header),
+         (gst_mp3parse_emit_frame), (mp3parse_get_query_types):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Do an initial class_ref on an internal enum type from within the
+         class_init function so that there aren't any issues when multiple
+         mp3parse elements are started in separate threads at the same
+         time. (Why we use an enum type here if the tag is registered as
+         a string type, I don't know). Also remove custom UNUSED macro
+         and use GLib's instead.
+
+2008-12-04 20:11:33 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Apparently AC_CONFIG_MACRO_DIR breaks when using more than one macro directory, reverting last change.
+         Original commit message from CVS:
+         * configure.ac:
+         Apparently AC_CONFIG_MACRO_DIR breaks when using more
+         than one macro directory, reverting last change.
+
+2008-12-04 19:48:20 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Set AC_CONFIG_MACRO_DIR to common/m4 to point autoconf to our M4 macros.
+         Original commit message from CVS:
+         * configure.ac:
+         Set AC_CONFIG_MACRO_DIR to common/m4 to point autoconf to
+         our M4 macros.
+
+2008-12-01 14:39:34 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Last change introduced a regression that made mpeg2dec handle some 4:2:2 videos as 4:4:4....
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format):
+         Last change introduced a regression that made mpeg2dec handle
+         some 4:2:2 videos as 4:4:4. Fixes bug #562086.
+
+2008-11-29 13:33:37 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Require gettext 0.17 because older versions don't mix with libtool 2.2. At build time an older gettext version will s...
+         Original commit message from CVS:
+         Patch by: Cygwin Ports maintainer
+         <yselkowitz at users dot sourceforge dot net>
+         * autogen.sh:
+         * configure.ac:
+         Require gettext 0.17 because older versions don't mix with libtool
+         2.2. At build time an older gettext version will still work.
+         Fixes bug #556091.
+
+2008-11-25 03:44:06 +0000  David Schleef <ds@schleef.org>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Add support for 4:4:4 video.  Fixes #562086
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c:
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Add support for 4:4:4 video.  Fixes #562086
+
+2008-11-24 09:51:39 +0000  Simon Holm Thøgersen <odie@cs.aau.dk>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Add support for the STATE_SEQUENCE_MODIFIED state in mpeg2dec >= 0.5.0. Fixes bug #562065.
+         Original commit message from CVS:
+         Patch by: Simon Holm Thøgersen <odie at cs dot aau dot dk>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_chain):
+         Add support for the STATE_SEQUENCE_MODIFIED state in mpeg2dec
+         >= 0.5.0. Fixes bug #562065.
+
+2008-11-20 21:31:19 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Remove duplicate and broken code for the streaming case and simply reuse the much better ...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_chain):
+         Remove duplicate and broken code for the streaming case and simply reuse
+         the much better working pull based code. Fixes #560348.
+
+2008-11-20 20:42:33 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Back to development -> 0.10.10.1
+         Original commit message from CVS:
+         * configure.ac:
+         Back to development -> 0.10.10.1
+
+=== release 0.10.10 ===
+
+2008-11-19 14:30:44 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * gst-plugins-ugly.doap:
+       * po/LINGUAS:
+         Release 0.10.10 - "Under the House"
+         Original commit message from CVS:
+         Release 0.10.10 - "Under the House"
+
+2008-11-19 13:59:12 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * po/bg.po:
+       * po/ca.po:
+       * po/da.po:
+       * po/id.po:
+       * po/it.po:
+       * po/mt.po:
+       * po/vi.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2008-11-17 09:53:39 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/sidplay/Makefile.am: Use GST_CXXFLAGS for C++ code instead of GST_CFLAGS. The latter could contain CFLAGS that do...
+         Original commit message from CVS:
+         * ext/sidplay/Makefile.am:
+         Use GST_CXXFLAGS for C++ code instead of GST_CFLAGS. The latter could
+         contain CFLAGS that do not exist for C++, like -Wvla or
+         -Wdeclaration-after-statement. Fixes bug #561161.
+
+2008-11-12 23:19:55 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: 0.10.9.3 pre-release
+         Original commit message from CVS:
+         * configure.ac:
+         0.10.9.3 pre-release
+
+2008-11-11 17:14:46 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Only copy sane aspect ratio values on the caps. Fixes #559682.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_video_stream):
+         Only copy sane aspect ratio values on the caps. Fixes #559682.
+
+2008-11-06 13:29:37 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+       * ChangeLog:
+         Add bug number to the mp3parse mpeg 2.5 fix
+         Original commit message from CVS:
+         Add bug number to the mp3parse mpeg 2.5 fix
+
+2008-11-05 11:03:07 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/amrnbdec.*: Add a property to select the amr variant. Fixes #424070.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnb_variant_get_type),
+         (gst_amrnbdec_class_init), (gst_amrnbdec_set_property),
+         (gst_amrnbdec_get_property), (gst_amrnbdec_chain):
+         * ext/amrnb/amrnbdec.h:
+         Add a property to select the amr variant. Fixes #424070.
+
+2008-11-03 11:31:49 +0000  Tal Shalif <tshalif@nargila.org>
+
+         gst/mpegstream/: Fix memmory corruption due to not storing the new updated pointer after a g_renew(). Fixes #558896.
+         Original commit message from CVS:
+         Patch by: Tal Shalif <tshalif at nargila dot org>
+         * gst/mpegstream/gstdvddemux.c:
+         (gst_dvd_demux_get_subpicture_stream):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
+         (gst_mpeg_demux_get_audio_stream):
+         Fix memmory corruption due to not storing the new updated pointer
+         after a g_renew(). Fixes #558896.
+
+2008-10-30 14:50:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         tests/check/Makefile.am: Blacklist cdiocddasrc from state-change tests. Fixes #558277.
+         Original commit message from CVS:
+         * tests/check/Makefile.am:
+         Blacklist cdiocddasrc from state-change tests. Fixes #558277.
+
+2008-10-24 20:44:13 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: oops, forgot to bump the version back to devel after the last release 0.10.9.1
+         Original commit message from CVS:
+         * configure.ac:
+         oops, forgot to bump the version back to devel
+         after the last release 0.10.9.1
+
+2008-10-24 12:47:05 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Add suport for mpeg4 and aac audio. See #556714.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_descramble_mp4a_audio),
+         (gst_rmdemux_handle_scrambled_packet):
+         Add suport for mpeg4 and aac audio. See #556714.
+
+2008-10-14 19:28:05 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Calculate samples per frame correctly for "MPEG 2.5" layer 3.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         Calculate samples per frame correctly for "MPEG 2.5" layer 3.
+         Fixes skipping on these files.
+
+2008-10-14 12:51:41 +0000  Robin Stocker <robin@nibor.org>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Prefer the container's PAR over the stream's PAR if it's given in the srcpad caps. Fixes ...
+         Original commit message from CVS:
+         Patch by: Robin Stocker <robin at nibor dot org>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+         (handle_sequence), (gst_mpeg2dec_setcaps):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Prefer the container's PAR over the stream's PAR if it's
+         given in the srcpad caps. Fixes bug #556184.
+
+2008-10-13 18:10:25 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Don't install static libs for plugins. Fixes #550851 for ugly.
+         Original commit message from CVS:
+         * ext/a52dec/Makefile.am:
+         * ext/amrnb/Makefile.am:
+         * ext/cdio/Makefile.am:
+         * ext/dvdnav/Makefile.am:
+         * ext/dvdread/Makefile.am:
+         * ext/lame/Makefile.am:
+         * ext/mad/Makefile.am:
+         * ext/mpeg2dec/Makefile.am:
+         * ext/sidplay/Makefile.am:
+         * gst/ac3parse/Makefile.am:
+         * gst/asfdemux/Makefile.am:
+         * gst/dvdlpcmdec/Makefile.am:
+         * gst/dvdsub/Makefile.am:
+         * gst/iec958/Makefile.am:
+         * gst/mpegaudioparse/Makefile.am:
+         * gst/mpegstream/Makefile.am:
+         * gst/realmedia/Makefile.am:
+         * gst/synaesthesia/Makefile.am:
+         Don't install static libs for plugins. Fixes #550851 for ugly.
+
+2008-10-13 09:04:15 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Post a GST_ELEMENT_ERROR if we get EOS before seeing any valid frames. Partia...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event):
+         Post a GST_ELEMENT_ERROR if we get EOS before seeing any valid
+         frames. Partially fixes bug #552237.
+
+2008-10-09 09:23:00 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/amrnb/amrnbparse.c: use #defines for HEADER. Unref the object in _sink_activate_pull().
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c:
+         use #defines for HEADER. Unref the object in _sink_activate_pull().
+
+2008-10-08 13:59:57 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mad/gstmad.*: track discont on incomming buffers and set discont on outgoing buffers.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_src_event), (gst_mad_chain),
+         (gst_mad_change_state):
+         * ext/mad/gstmad.h:
+         track discont on incomming buffers and set discont on outgoing
+         buffers.
+         Pass unknown events upstreams instead of dropping them.
+
+2008-09-28 17:33:43 +0000  Sameer Naik <sameer.subscriptions@damagehead.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Fix compilation with --disable-index. Fixes bug #554150.
+         Original commit message from CVS:
+         Patch by: Sameer Naik <sameer dot subscriptions at damagehead dot com>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_class_init),
+         (handle_slice), (gst_mpeg2dec_sink_event),
+         (gst_mpeg2dec_src_event):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Fix compilation with --disable-index. Fixes bug #554150.
+
+2008-09-28 17:31:37 +0000  Sameer Naik <sameer.subscriptions@damagehead.com>
+
+         ext/mad/gstmad.*: Fix compilation with --disable-index. Fixes bug #554142.
+         Original commit message from CVS:
+         Patch by: Sameer Naik <sameer dot subscriptions at damagehead dot com>
+         * ext/mad/gstmad.c: (gst_mad_class_init), (gst_mad_dispose),
+         (gst_mad_src_event), (gst_mad_chain):
+         * ext/mad/gstmad.h:
+         Fix compilation with --disable-index. Fixes bug #554142.
+
+2008-09-27 00:20:48 +0000  Thijs Vermeir <thijsvermeir@gmail.com>
+
+         ext/a52dec/gsta52dec.*: Fix channel re-negotiation on a change of the incoming stream.
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c:
+         * ext/a52dec/gsta52dec.h:
+         Fix channel re-negotiation on a change of the incoming stream.
+         Patch By: Thijs Vermeir <thijsvermeir@gmail.com>
+         Fixes: #551660
+
+2008-09-26 14:39:42 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/amrnbenc.*: Pass the discont flag from the input buffer on to the output buffer in the AMR encoder.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_chain),
+         (gst_amrnbenc_state_change):
+         * ext/amrnb/amrnbenc.h:
+         Pass the discont flag from the input buffer on to the output buffer in
+         the AMR encoder.
+
+2008-09-26 10:04:35 +0000  Benoit Fouet <benoit.fouet@purplelabs.com>
+
+         ext/amrnb/amrnbparse.*: Add flush seek handler. Fixes #536274.
+         Original commit message from CVS:
+         Patch by: Benoit Fouet <benoit dot fouet at purplelabs dot com>
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+         (gst_amrnbparse_handle_pull_seek),
+         (gst_amrnbparse_handle_push_seek), (gst_amrnbparse_src_event),
+         (gst_amrnbparse_sink_activate_push),
+         (gst_amrnbparse_sink_activate_pull):
+         * ext/amrnb/amrnbparse.h:
+         Add flush seek handler. Fixes #536274.
+
+2008-09-26 09:57:02 +0000  Benoit Fouet <benoit.fouet@purplelabs.com>
+
+         ext/amrnb/amrnbparse.*: Fix the duration query. Fixes #536226.
+         Original commit message from CVS:
+         Patch by: Benoit Fouet <benoit dot fouet at purplelabs dot com>
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_query),
+         (gst_amrnbparse_chain), (gst_amrnbparse_loop),
+         (gst_amrnbparse_state_change):
+         * ext/amrnb/amrnbparse.h:
+         Fix the duration query. Fixes #536226.
+         Also set caps on the pads and buffers more correctly.
+
+2008-09-02 09:43:10 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         po/LINGUAS: Add 'ca' to LINGUAS.
+         Original commit message from CVS:
+         * po/LINGUAS:
+         Add 'ca' to LINGUAS.
+
+2008-08-28 09:57:30 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/gstasfdemux.c: Fix aggregated GST_FLOW_RETURN check for when to send an error message on the bus.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_loop):
+         Fix aggregated GST_FLOW_RETURN check for when to send an error message
+         on the bus.
+         Re-fixes #546859
+
+2008-08-27 15:55:05 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtdepay.*: Parse other values from the incomming caps.
+         Original commit message from CVS:
+         * gst/realmedia/rdtdepay.c: (gst_rdt_depay_init),
+         (gst_rdt_depay_setcaps), (gst_rdt_depay_sink_event),
+         (create_segment_event), (gst_rdt_depay_push),
+         (gst_rdt_depay_handle_data), (gst_rdt_depay_change_state):
+         * gst/realmedia/rdtdepay.h:
+         Parse other values from the incomming caps.
+         Add event handler to handle flushing and segments.
+         Create segment events.
+         * gst/realmedia/rdtjitterbuffer.c: (rdt_jitter_buffer_insert):
+         Do skew correction based on RDT timestamps.
+         * gst/realmedia/rdtmanager.c: (activate_session),
+         (gst_rdt_manager_parse_caps), (gst_rdt_manager_setcaps),
+         (create_recv_rtp):
+         Parse caps to get the clockrate needed for the jitterbuffer.
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
+         Apply timestamp fixup after correcting for initial timestamp and
+         internal base timestamp corrections.
+
+2008-08-27 11:28:50 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtdepay.*: Check seqnum gaps and drop duplicate packets or mark outgoing buffers with a DISCONT flag w...
+         Original commit message from CVS:
+         * gst/realmedia/rdtdepay.c: (gst_rdt_depay_handle_data),
+         (gst_rdt_depay_change_state):
+         * gst/realmedia/rdtdepay.h:
+         Check seqnum gaps and drop duplicate packets or mark outgoing buffers
+         with a DISCONT flag when needed.
+         * gst/realmedia/rdtmanager.c: (gst_rdt_manager_query_src):
+         Report the configure latency instead of a hardcoded value.
+
+2008-08-27 10:02:06 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtmanager.c: Include the new rdt jitterbuffer in the session manager.
+         Original commit message from CVS:
+         * gst/realmedia/rdtmanager.c: (create_session), (activate_session),
+         (free_session), (gst_rdt_manager_query_src),
+         (gst_rdt_manager_src_activate_push),
+         (gst_rdt_manager_handle_data_packet), (gst_rdt_manager_chain_rdt),
+         (gst_rdt_manager_loop), (create_recv_rtp):
+         Include the new rdt jitterbuffer in the session manager.
+
+2008-08-27 09:58:00 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtdepay.*: Use new RDT parsing helper functions.
+         Original commit message from CVS:
+         * gst/realmedia/rdtdepay.c: (gst_rdt_depay_class_init),
+         (gst_rdt_depay_finalize), (gst_rdt_depay_setcaps),
+         (gst_rdt_depay_push), (gst_rdt_depay_handle_data),
+         (gst_rdt_depay_chain), (gst_rdt_depay_change_state):
+         * gst/realmedia/rdtdepay.h:
+         Use new RDT parsing helper functions.
+         Copy discont flags correctly.
+         Push the header from the chain function instead of the setcaps function.
+         Copy incomming timestamp to the output buffers instead of doing magic
+         with the RDT timestamps.
+
+2008-08-27 09:52:49 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Add first support for parsing RDT messages.
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/gstrdtbuffer.c: (gst_rdt_buffer_validate_data),
+         (gst_rdt_buffer_validate), (gst_rdt_buffer_get_packet_count),
+         (read_packet_header), (gst_rdt_buffer_get_first_packet),
+         (gst_rdt_packet_move_to_next), (gst_rdt_packet_get_type),
+         (gst_rdt_packet_get_length), (gst_rdt_packet_to_buffer),
+         (gst_rdt_buffer_compare_seqnum), (gst_rdt_packet_data_get_seq),
+         (gst_rdt_packet_data_peek_data),
+         (gst_rdt_packet_data_get_stream_id),
+         (gst_rdt_packet_data_get_timestamp):
+         * gst/realmedia/gstrdtbuffer.h:
+         Add first support for parsing RDT messages.
+         * gst/realmedia/rdtjitterbuffer.c: (rdt_jitter_buffer_class_init),
+         (rdt_jitter_buffer_init), (rdt_jitter_buffer_finalize),
+         (rdt_jitter_buffer_new), (rdt_jitter_buffer_reset_skew),
+         (calculate_skew), (rdt_jitter_buffer_insert),
+         (rdt_jitter_buffer_pop), (rdt_jitter_buffer_peek),
+         (rdt_jitter_buffer_flush), (rdt_jitter_buffer_num_packets),
+         (rdt_jitter_buffer_get_ts_diff):
+         * gst/realmedia/rdtjitterbuffer.h:
+         Add first version of an RDT jitterbuffer.
+
+2008-08-27 09:47:17 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.*: Keep track of the first timestamp of the stream and add this to the outgoing buffer timestam...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_init),
+         (find_seek_offset_time), (gst_rmdemux_reset), (gst_rmdemux_chain),
+         (gst_rmdemux_parse_mdpr), (gst_rmdemux_descramble_cook_audio),
+         (gst_rmdemux_descramble_dnet_audio),
+         (gst_rmdemux_parse_video_packet), (gst_rmdemux_parse_audio_packet):
+         * gst/realmedia/rmdemux.h:
+         Keep track of the first timestamp of the stream and add this to the
+         outgoing buffer timestamps so that we can handle live streams.
+         Set discont flag on the first buffers and after a seek.
+
+=== release 0.10.9 ===
+
+2008-08-26 23:06:04 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-cdio.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * gst-plugins-ugly.doap:
+         Release 0.10.9
+         Original commit message from CVS:
+         Release 0.10.9
+
+2008-08-26 22:56:30 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/id.po:
+       * po/it.po:
+       * po/lt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2008-08-26 15:35:43 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/a52dec/gsta52dec.c: Set up a default time segment for output when receiving an incoming byte segment (as for raw ...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c:
+         Set up a default time segment for output when receiving
+         an incoming byte segment (as for raw AC3 files).
+         Fixes: #548194
+
+2008-08-12 09:16:13 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         0.10.8.2 pre-release.
+         Original commit message from CVS:
+         * configure.ac:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * docs/plugins/gst-plugins-ugly-plugins.args:
+         * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+         * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+         * docs/plugins/inspect/plugin-a52dec.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-cdio.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdread.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-iec958.xml:
+         * docs/plugins/inspect/plugin-lame.xml:
+         * docs/plugins/inspect/plugin-mad.xml:
+         * docs/plugins/inspect/plugin-mpeg2dec.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         * docs/plugins/inspect/plugin-realmedia.xml:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         * ext/Makefile.am:
+         0.10.8.2 pre-release.
+         * po/LINGUAS:
+         * po/POTFILES.in:
+         * po/id.po:
+         Add new translation.
+
+2008-08-11 18:44:35 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/asfdemux/gstasfdemux.c: Properly aggregate flow returns for both push and pull mode, so we shut down if all pads ...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         Properly aggregate flow returns for both push and pull mode, so we shut
+         down if all pads are unlinked.
+         Fixes #546859.
+
+2008-08-07 16:14:42 +0000  Frederic Crozat <fcrozat@mandriva.org>
+
+         Make sure gettext returns translations in UTF-8 encoding rather than in the current locale encoding (#546822).
+         Original commit message from CVS:
+         Patch by: Frederic Crozat <fcrozat@mandriva.org>
+         * ext/dvdread/dvdreadsrc.c: (plugin_init):
+         * ext/lame/gstlame.c: (plugin_init):
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         Make sure gettext returns translations in UTF-8 encoding rather
+         than in the current locale encoding (#546822).
+
+2008-07-31 14:35:40 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Don't recurse from mp3parse_bytepos_to_time() to mp3parse_total_time() if we'...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (gst_mp3parse_emit_frame),
+         (mp3parse_total_time), (mp3parse_bytepos_to_time):
+         Don't recurse from mp3parse_bytepos_to_time() to mp3parse_total_time()
+         if we're called from there already. Otherwise we end up in a endless
+         recursion and crash with a stack overflow.
+         This can happen when a Xing or VBRI header with TOC exists but it
+         doesn't contain the total time. Fixes bug #545370.
+
+2008-07-31 14:24:27 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.c: Use the default for the strict-iso property too.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_class_init),
+         (gst_lame_get_default_settings):
+         Use the default for the strict-iso property too.
+         Allow a bitrate setting of 0, which lets lame choose the default value
+         and which makes it possible to set the compression-ratio property.
+
+2008-07-29 16:57:16 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.*: Get the defaults settings of LAME in the plugin initialization function and return FALSE here if ...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_class_init), (gst_lame_init),
+         (gst_lame_chain), (gst_lame_get_default_settings), (plugin_init):
+         * ext/lame/gstlame.h:
+         Get the defaults settings of LAME in the plugin initialization
+         function and return FALSE here if something goes wrong. This removes
+         the hacky failing instance init function.
+         Use LAMEs default value for all settings instead of overwriting some
+         of them. Overwriting some of them gives unexpected results if one only
+         sets a preset. Fixes bug #498004.
+
+2008-07-27 15:56:27 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.c: Use LAME's default for the min/max/mean VBR bitrate. Setting our own defaults will restrict the b...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_init):
+         Use LAME's default for the min/max/mean VBR bitrate. Setting our own
+         defaults will restrict the bitrate when using the presets in a bad way.
+         Fixes bug #498004.
+
+2008-07-27 11:01:12 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Put the MPEG audio version into the caps as "mpegaudioversion".
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mp3_type_frame_length_from_header), (mp3_caps_create),
+         (gst_mp3parse_chain):
+         Put the MPEG audio version into the caps as "mpegaudioversion".
+         This is different from "mpegversion".
+
+2008-07-22 18:25:08 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.*: Fix build with lame >= 3.97. The padding type and cwlimit settings are deprecated now and the fun...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_class_init), (gst_lame_init),
+         (gst_lame_set_property), (gst_lame_get_property), (gst_lame_setup):
+         * ext/lame/gstlame.h:
+         Fix build with lame >= 3.97. The padding type and cwlimit settings
+         are deprecated now and the function declarations are hidden in the
+         headers so deprecate the GObject properties for them and remove them
+         in 0.11. Fixes bug #544039.
+
+2008-07-13 10:13:06 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Don't allow width/height outside the spec (i.e. smaller than 16 and higher than 4096). Su...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence):
+         Don't allow width/height outside the spec (i.e. smaller than 16
+         and higher than 4096). Such files are corrupted ones and setting
+         caps that are not a subset of the template caps confuses playbin.
+         Fixes bug #542646.
+
+2008-07-11 12:30:22 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/sidplay/Makefile.am: Fix the build.
+         Original commit message from CVS:
+         * ext/sidplay/Makefile.am:
+         Fix the build.
+
+2008-07-08 14:01:51 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Don't include ERROR_CFLAGS in GST_CXXFLAGS as it might include flags that are invalid for C++.
+         Original commit message from CVS:
+         * configure.ac:
+         Don't include ERROR_CFLAGS in GST_CXXFLAGS as it might include
+         flags that are invalid for C++.
+
+2008-07-05 18:57:30 +0000  Tal Shalif <tshalif@nargila.org>
+
+         ext/dvdnav/dvdnavsrc.c: Prevent double free. Fixes bug #541697.
+         Original commit message from CVS:
+         Patch by: Tal Shalif <tshalif at nargila dot org>
+         * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_stop):
+         Prevent double free. Fixes bug #541697.
+
+2008-07-05 15:56:56 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         gst/mpegstream/: Resend tags event after a FLUSH (seek) to support prerolling a partial pipeline.
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
+         (gst_dvd_demux_get_audio_stream),
+         (gst_dvd_demux_get_subpicture_stream),
+         (gst_dvd_demux_parse_packhead), (gst_dvd_demux_reset):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init),
+         (gst_mpeg_demux_process_event), (gst_mpeg_demux_init_stream),
+         (gst_mpeg_demux_parse_packhead), (gst_mpeg_demux_reset):
+         * gst/mpegstream/gstmpegdemux.h:
+         Resend tags event after a FLUSH (seek) to support prerolling
+         a partial pipeline.
+
+2008-07-03 13:12:26 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Use correct error code for encrypted streams.
+         Original commit message from CVS:
+         * configure.ac:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_object):
+         Use correct error code for encrypted streams.
+
+2008-07-02 07:49:19 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         gst/mpegstream/gstmpegdemux.c: Bridge gaps in stream by NEWSEGMENT sending.  Fixes #540194.
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer),
+         (gst_mpeg_demux_sync_stream_to_time):
+         Bridge gaps in stream by NEWSEGMENT sending.  Fixes #540194.
+
+2008-06-27 12:58:35 +0000  Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+
+         ext/dvdread/dvdreadsrc.c: Allow and implement non-flushing and/or segment seek (mainly in TIME and chapter format).
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_read),
+         (gst_dvd_read_src_create), (gst_dvd_read_src_handle_seek_event):
+         Allow and implement non-flushing and/or segment seek
+         (mainly in TIME and chapter format).
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
+         (gst_dvd_demux_get_subpicture_stream),
+         (gst_dvd_demux_synchronise_pads),
+         (gst_dvd_demux_sync_stream_to_time):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_process_event),
+         (gst_mpeg_demux_send_subbuffer),
+         (gst_mpeg_demux_sync_stream_to_time),
+         (gst_mpeg_streams_reset_cur_ts):
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
+         (gst_mpeg_parse_pad_added), (gst_mpeg_parse_handle_src_query):
+         Delegate a query to upstream if it can't be handled.
+         Make segment stop aware.
+         Fix (subtitle) stream synchronization.
+         Add some debug statements.
+
+2008-06-26 10:40:03 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Fix build on macosx.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (head_check):
+         Fix build on macosx.
+
+2008-06-13 06:57:21 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Add missing elements to docs. Restore alphabetical order in section file. Document mad (it was included in docs alrea...
+         Original commit message from CVS:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * ext/a52dec/gsta52dec.c:
+         * ext/amrnb/amrnbdec.c:
+         * ext/amrnb/amrnbenc.c:
+         * ext/amrnb/amrnbparse.c:
+         * ext/lame/gstlame.c:
+         * ext/mad/gstmad.c:
+         * ext/sidplay/gstsiddec.cc:
+         * gst/asfdemux/gstrtspwms.c:
+         * gst/mpegaudioparse/gstxingmux.c:
+         * gst/realmedia/rademux.c:
+         * gst/realmedia/rdtmanager.c:
+         * gst/realmedia/rtspreal.c:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         Add missing elements to docs. Restore alphabetical order in section
+         file. Document mad (it was included in docs already).
+         Fix doc-markup: use convinience syntax for examples
+         (produces valid docbook), add several refsec2 when we have several
+         titles. Fix some types.
+
+2008-06-13 05:52:17 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Do not use short_description in section docs for elements. We extract them from element details and there will be war...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         * ext/sidplay/gstsiddec.cc:
+         * gst/mpegaudioparse/gstxingmux.c:
+         Do not use short_description in section docs for elements. We extract
+         them from element details and there will be warnings if they differ.
+
+2008-06-09 20:02:05 +0000  Benjamin Kampmann <benjamin@fluendo.com>
+
+         ext/cdio/: Also extract album title and album genre from CD-TEXT if available (#537021).
+         Original commit message from CVS:
+         Patch by: Benjamin Kampmann  <benjamin at fluendo dot com>
+         * ext/cdio/gstcdio.c: (gst_cdio_get_cdtext),
+         (gst_cdio_add_cdtext_album_tags):
+         * ext/cdio/gstcdio.h:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open):
+         Also extract album title and album genre from CD-TEXT if
+         available (#537021).
+
+2008-06-09 07:51:00 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Don't mark MPEG headers with emphasis == 0x2 as invalid. This emphasis value ...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (head_check):
+         Don't mark MPEG headers with emphasis == 0x2 as invalid. This
+         emphasis value is reserved but unfortunately files with that
+         value exist and the information is not important for the decoder
+         anyway. Fixes bug #537235.
+
+2008-06-07 18:48:54 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Require libcdio >= 0.76.
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/cdio/gstcdio.c:
+         * ext/cdio/gstcdio.h:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open):
+         Require libcdio >= 0.76.
+
+2008-06-02 15:44:57 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/a52dec/gsta52dec.c: Drain queued buffers before forwarding the segment event.
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_sink_event):
+         Drain queued buffers before forwarding the segment event.
+
+2008-06-02 11:59:07 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/a52dec/gsta52dec.*: Add segment handling, buffer clipping and basic reverse playback.
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (clear_queued), (flush_queued),
+         (gst_a52dec_drain), (gst_a52dec_push), (gst_a52dec_sink_event),
+         (gst_a52dec_chain), (gst_a52dec_change_state):
+         * ext/a52dec/gsta52dec.h:
+         Add segment handling, buffer clipping and basic reverse playback.
+
+2008-05-28 11:43:01 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Random doc of the day. Also print human readable format of newsegment in log message if we complain about it.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * docs/plugins/gst-plugins-ugly-plugins.args:
+         * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+         * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+         * docs/plugins/inspect/plugin-a52dec.xml:
+         * docs/plugins/inspect/plugin-amrnb.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdread.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-iec958.xml:
+         * docs/plugins/inspect/plugin-lame.xml:
+         * docs/plugins/inspect/plugin-mad.xml:
+         * docs/plugins/inspect/plugin-mpeg2dec.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         * docs/plugins/inspect/plugin-realmedia.xml:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         * docs/plugins/inspect/plugin-synaesthesia.xml:
+         * ext/a52dec/gsta52dec.c:
+         Random doc of the day. Also print human readable format of newsegment
+         in log message if we complain about it.
+
+2008-05-26 09:06:54 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/a52dec/gsta52dec.*: Mark discont on outgoing buffers after receiving a DISCONT buffer or when we have a decoding ...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_init), (gst_a52dec_push),
+         (gst_a52dec_sink_event), (gst_a52dec_handle_frame),
+         (gst_a52dec_chain), (gst_a52dec_change_state):
+         * ext/a52dec/gsta52dec.h:
+         Mark discont on outgoing buffers after receiving a DISCONT buffer or
+         when we have a decoding error.
+         We don't need to clear the cache when we receive a NEWSEGMENT event.
+         Clear buffer cache in DISCONT.
+         Add beginnings of GstSegment handling.
+
+2008-05-26 07:41:24 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstxingmux.c: Fix alignment issues that caused SIGBUS on some architectures.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstxingmux.c: (generate_xing_header):
+         Fix alignment issues that caused SIGBUS on some architectures.
+
+2008-05-25 21:30:40 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/ac3parse/gstac3parse.c: Fix alignment issue which isn't really an issue at all because the plugin hasn't been por...
+         Original commit message from CVS:
+         * gst/ac3parse/gstac3parse.c: (gst_ac3parse_chain):
+         Fix alignment issue which isn't really an issue at all because
+         the plugin hasn't been ported to 0.10 yet.
+
+2008-05-25 21:03:41 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Back to devel -> 0.10.8.1
+         Original commit message from CVS:
+         * configure.ac:
+         Back to devel -> 0.10.8.1
+
+=== release 0.10.8 ===
+
+2008-05-21 23:03:13 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * gst-plugins-ugly.doap:
+       * po/LINGUAS:
+         Release 0.10.8
+         Original commit message from CVS:
+         Release 0.10.8
+
+2008-05-21 22:43:42 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * common:
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/fr.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/lt.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/ru.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2008-05-19 21:38:16 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: 0.10.7.4 pre-release
+         Original commit message from CVS:
+         * configure.ac:
+         0.10.7.4 pre-release
+
+2008-05-19 15:07:07 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/mad/gstmad.c: Fix inconsistent use of rate and channels.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_convert_src), (gst_mad_chain):
+         Fix inconsistent use of rate and channels.
+         Fixes #533581
+
+2008-05-19 10:23:46 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Flush timestamp correction variables on a flush. Fixes #533832.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_send_event):
+         Flush timestamp correction variables on a flush. Fixes #533832.
+
+2008-05-19 10:02:41 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * common:
+       * configure.ac:
+         Commit 0.10.7.3 pre-rel marker
+         Original commit message from CVS:
+         Commit 0.10.7.3 pre-rel marker
+
+2008-05-13 09:33:09 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/realmedia/rmdemux.c: Properly aggregate GstFlowReturn from downstream in order to properly stop, and doing that a...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
+         Properly aggregate GstFlowReturn from downstream in order to properly
+         stop, and doing that as early as possible.
+         Fixes #532807
+
+2008-05-10 15:32:41 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: 0.10.7.2 pre-release
+         Original commit message from CVS:
+         * configure.ac:
+         0.10.7.2 pre-release
+
+2008-05-10 00:44:00 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         Always let FLUSH_START events flow downstream.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_sink_event):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event):
+         Always let FLUSH_START events flow downstream.
+
+2008-05-07 08:00:24 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Error out if we don't have the required core/base versions.
+         Original commit message from CVS:
+         * configure.ac:
+         Error out if we don't have the required core/base versions.
+
+2008-05-06 17:53:26 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Fix video timestamps by adjusting it with the first timestamp found.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_fix_timestamp), (gst_rmdemux_parse_video_packet),
+         (gst_rmdemux_parse_audio_packet), (gst_rmdemux_parse_packet):
+         Fix video timestamps by adjusting it with the first timestamp found.
+         Don't assume we have a complete fragment when flushing the adapter,
+         packets might have been lost or the stream might just be broken.
+
+2008-05-06 10:30:18 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtmanager.c: Set Rank to NONE so that we don't accidentally try to autoplug the rdtmanager.
+         Original commit message from CVS:
+         * gst/realmedia/rdtmanager.c: (gst_rdt_manager_plugin_init):
+         Set Rank to NONE so that we don't accidentally try to autoplug the
+         rdtmanager.
+
+2008-05-05 08:43:38 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Send a new duration message if the average bitrate changed and we don't know ...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         Send a new duration message if the average bitrate changed and
+         we don't know the duration from the Xing or VBRI header.
+         Fixes bug #321857.
+
+2008-04-30 17:16:47 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rtspreal.*: Move assembly rule parsing to the place where we parse the SDP as it's also there that we c...
+         Original commit message from CVS:
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_before_send),
+         (rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select):
+         * gst/realmedia/rtspreal.h:
+         Move assembly rule parsing to the place where we parse the SDP as it's
+         also there that we create the MDPR and we need the currently selected
+         asmrule in order to select the right MTLI.
+         Fixes #529359.
+
+2008-04-29 17:34:19 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/realmedia/: Include generated "_stdint.h" instead of <stdint.h> which might not exist on some systems.
+         Original commit message from CVS:
+         * gst/realmedia/realhash.c:
+         * gst/realmedia/rtspreal.c:
+         Include generated "_stdint.h" instead of <stdint.h> which might not
+         exist on some systems.
+
+2008-04-25 23:10:54 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/sidplay/gstsiddec.cc: Cast NULL sentinels to void * as NULL is defined as an integer constant in most environment...
+         Original commit message from CVS:
+         * ext/sidplay/gstsiddec.cc:
+         Cast NULL sentinels to void * as NULL is defined as an integer
+         constant in most environments when using C++ and it's size might
+         be different from a pointer. Fixes #529488.
+
+2008-04-22 12:11:30 +0000  Edgard Lima <edgard.lima@indt.org.br>
+
+       * ChangeLog:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstrtspwms.c:
+         Fix "unused var" compiler error when --disable-gst-debug is used.
+         Original commit message from CVS:
+         Fix "unused var" compiler error when --disable-gst-debug is used.
+
+2008-04-17 20:58:00 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/amrnb/amrnbparse.c: We should also stop the streaming task when we get a NOT_LINKED flow return, which is not cov...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_loop):
+         We should also stop the streaming task when we get a NOT_LINKED
+         flow return, which is not covered by FLOW_IS_FATAL.
+
+2008-04-17 10:24:32 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/: gst_atomic_int_set ==> g_atomic_int_set
+         Original commit message from CVS:
+         * ext/cdio/gstcdiocddasrc.c:
+         * ext/dv/gstdvdemux.c:
+         gst_atomic_int_set ==> g_atomic_int_set
+
+2008-04-11 08:09:55 +0000  Julien Moutte <julien@moutte.net>
+
+         gst/mpegaudioparse/gstxingmux.c: Fix argument formats.
+         Original commit message from CVS:
+         2008-04-11  Julien Moutte  <julien@fluendo.com>
+         * gst/mpegaudioparse/gstxingmux.c: (generate_xing_header): Fix
+         argument formats.
+
+2008-04-06 08:57:33 +0000  Damien Lespiau <damien.lespiau@gmail.com>
+
+         configure.ac: Actually build dlls when cross-compiling with mingw32.
+         Original commit message from CVS:
+         Patch by: Damien Lespiau <damien dot lespiau at gmail dot com>
+         * configure.ac:
+         Actually build dlls when cross-compiling with mingw32.
+         Fixes bug #526247.
+
+2008-04-04 19:04:20 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Depend on GLib 2.12 and use it unconditionally as we do in other modules too already.
+         Original commit message from CVS:
+         * configure.ac:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mpeg_audio_seek_entry_free):
+         * gst/mpegaudioparse/gstxingmux.c: (gst_xing_seek_entry_free):
+         Depend on GLib 2.12 and use it unconditionally as we do in other
+         modules too already.
+
+2008-04-03 15:21:50 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/: Use GSlice for allocating the seek table entries if we compile with
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mpeg_audio_seek_entry_new), (mpeg_audio_seek_entry_free),
+         (gst_mp3parse_reset), (gst_mp3parse_emit_frame):
+         * gst/mpegaudioparse/gstxingmux.c: (gst_xing_seek_entry_new),
+         (gst_xing_seek_entry_free), (gst_xing_mux_finalize), (xing_reset),
+         (gst_xing_mux_chain):
+         Use GSlice for allocating the seek table entries if we compile with
+         GLib 2.10 or newer.
+
+2008-04-01 14:39:24 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Remove some debug code.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_process_ext_stream_props):
+         Remove some debug code.
+
+2008-04-01 14:29:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Guard against division by 0 and fall back to 25/1 framerate.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_process_ext_stream_props):
+         Guard against division by 0 and fall back to 25/1 framerate.
+
+2008-04-01 14:00:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Instead of adding a fixes 25/1 framerate to the video caps, use the average frame duratio...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_ext_stream_props):
+         Instead of adding a fixes 25/1 framerate to the video caps, use the
+         average frame duration in the extended properties of the video stream as
+         the framerate. Fixes #524346.
+
+2008-03-21 14:15:27 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Check if the compiler supports do { } while (0) macros. This fixes a warning when compiling with g++ 4....
+         Original commit message from CVS:
+         * configure.ac:
+         Check if the compiler supports do { } while (0) macros. This fixes
+         a warning when compiling with g++ 4.3, resulting in a build failure
+         because of -Werror.
+
+2008-03-19 11:01:25 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/asmrules.c: make ) also a delimiter for rules.
+         Original commit message from CVS:
+         * gst/realmedia/asmrules.c: (gst_asm_scan_string), (main):
+         make ) also a delimiter for rules.
+         Skip \\ when scanning strings.
+         Add new testcase for these problems.
+
+2008-03-12 16:09:48 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Don't take the stream lock when caching events. This is not necessary and res...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event):
+         Don't take the stream lock when caching events. This is not necessary
+         and results in a deadlock when seeking with rhythmbox (but not with
+         totem or banshee for some reason).
+
+2008-03-10 15:17:24 +0000  Pizpot Gargravarr <pgargravarr@siriuscybernetics.org>
+
+         gst/realmedia/rtspreal.c: Add the version field when creating the CONT chunk resulting in the Author, Comment and Cop...
+         Original commit message from CVS:
+         Patch by: Pizpot Gargravarr <pgargravarr at siriuscybernetics dot org>
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp):
+         Add the version field when creating the CONT chunk resulting in
+         the Author, Comment and Copyright tags not being parsed correctly.
+         Fixes #521459.
+
+2008-03-10 15:13:10 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Remove trailing newlines from debug statements.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain):
+         Remove trailing newlines from debug statements.
+
+2008-03-04 22:54:21 +0000  Simone Gotti <simone.gotti@email.it>
+
+         ext/dvdnav/dvdnavsrc.*: Apply patch that adds some seeking support to dvdnav, and fixes it in various other ways. Thi...
+         Original commit message from CVS:
+         * ext/dvdnav/dvdnavsrc.c:
+         * ext/dvdnav/dvdnavsrc.h:
+         Apply patch that adds some seeking support to dvdnav, and fixes it
+         in various other ways. This doesn't make dvdnavsrc fully functional,
+         but moves it forward.
+         Fixes: #476149
+         Patch By: Simone Gotti <simone.gotti@email.it>
+         * ext/dvdnav/gst-dvd:
+         Update the simple dvdnavsrc gst-launch example to work for 0.10
+
+2008-03-03 12:50:56 +0000  Peter Kjellerstedt <pkj@axis.com>
+
+         configure.ac: Use AG_GST_CHECK_PLUGIN and AG_GST_DISABLE_PLUGIN to simplify which plug-ins are included/excluded. (#4...
+         Original commit message from CVS:
+         * configure.ac:
+         Use AG_GST_CHECK_PLUGIN and AG_GST_DISABLE_PLUGIN to simplify which
+         plug-ins are included/excluded. (#498222)
+
+2008-02-27 15:23:51 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Push EOS, FLUSH_STOP and NEWSEGMENT immediately instead of dropping and leaking them.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_sink_event):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event):
+         Push EOS, FLUSH_STOP and NEWSEGMENT immediately instead
+         of dropping and leaking them.
+
+2008-02-27 13:18:57 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Cache all events except EOS if we still have to send a NEWSEGMENT event. This will let TAG events be forwarded until ...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_dispose), (gst_mad_sink_event),
+         (gst_mad_chain):
+         * ext/mad/gstmad.h:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_dispose),
+         (gst_mp3parse_sink_event), (gst_mp3parse_emit_frame):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Cache all events except EOS if we still have to send a NEWSEGMENT
+         event. This will let TAG events be forwarded until after decodebin
+         to an encoder for example as decodebin only links the pads
+         after NEWSEGMENT. Fixes bug #518933.
+
+2008-02-27 12:48:41 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstxingmux.c: Write Xing header at the correct position in the MP3 frame for stereo files. Fixes b...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstxingmux.c: (get_xing_offset):
+         Write Xing header at the correct position in the MP3 frame for
+         stereo files. Fixes bug #518676.
+
+2008-02-23 12:35:53 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Check for and define ERROR_CXXFLAGS and GST_CXXFLAGS and use them when building C++ code (#516509).
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/sidplay/Makefile.am:
+         Check for and define ERROR_CXXFLAGS and GST_CXXFLAGS and use them
+         when building C++ code (#516509).
+
+2008-02-22 14:55:57 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: Fix broken GST_ELEMENT_ERROR macro, fixes compile with the Sun
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps):
+         Fix broken GST_ELEMENT_ERROR macro, fixes compile with the Sun
+         Workshop 12 compiler, but probably also crashes (#517985).
+
+2008-02-22 07:11:17 +0000  Thiago Sousa Santos <thiagoss@lcc.ufcg.edu.br>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Post channel mode and CRC as tags. Fixes bug #504493.
+         Original commit message from CVS:
+         Patch by: Thiago Sousa Santos <thiagoss at lcc dot ufcg dot edu dot br>
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3_channel_mode_get_type),
+         (mp3_type_frame_length_from_header), (gst_mp3parse_class_init),
+         (gst_mp3parse_reset), (gst_mp3parse_emit_frame),
+         (gst_mp3parse_chain):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Post channel mode and CRC as tags. Fixes bug #504493.
+
+2008-02-22 06:27:11 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/dvdnav/dvdnavsrc.c: Correctly chain up to the parent's finalize function.
+         Original commit message from CVS:
+         * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_finalize):
+         Correctly chain up to the parent's finalize function.
+
+2008-02-22 06:25:28 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Try a bit harder to get valid timestamps, especially if upstream gives us one...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame), (gst_mp3parse_chain):
+         Try a bit harder to get valid timestamps, especially if upstream
+         gives us one and we are at the first frame or resyncing.
+         Return UNEXPECTED if we get a valid timestamp that is outside of
+         our configured segment. After all changes done so far this doesn't
+         seem to cause any regression, please test.
+
+2008-02-22 06:19:41 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/asfdemux/gstasfdemux.c: If we don't have the position to seek to in our index first try to convert from TIME to B...
+         Original commit message from CVS:
+         Patch by:
+         Hans de Goede <j dot w dot r dot degoede at hhs dot nl>
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_seek_event):
+         If we don't have the position to seek to in our index first try
+         to convert from TIME to BYTES upstream and only if that fails
+         too use the old hack to simply seek to an earlier position
+         and let the sink drop everything before segment start.
+         Partially fixes bug #469930.
+
+2008-02-21 23:54:25 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Back to development...
+         Original commit message from CVS:
+         * configure.ac:
+         Back to development...
+
+=== release 0.10.7 ===
+
+2008-02-21 00:15:22 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+       * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+       * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+       * docs/plugins/gst-plugins-ugly-plugins.signals:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-realmedia.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+       * gst-plugins-ugly.doap:
+       * po/LINGUAS:
+         Release 0.10.7 - I Cheated Time
+         Original commit message from CVS:
+         Release 0.10.7 - I Cheated Time
+
+2008-02-20 23:51:56 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * po/af.po:
+       * po/az.po:
+       * po/bg.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/es.po:
+       * po/fi.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/pl.po:
+       * po/pt_BR.po:
+       * po/sk.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+       * po/zh_CN.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2008-02-18 20:40:29 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         tests/check/Makefile.am: Exclude dvdreadsrc from the states test too.
+         Original commit message from CVS:
+         * tests/check/Makefile.am:
+         Exclude dvdreadsrc from the states test too.
+
+2008-02-18 10:25:16 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Handler buffers without valid timestamp more correctly: Don't drop them and d...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         Handler buffers without valid timestamp more correctly: Don't drop
+         them and don't use the invalid timestamp to calculate the next
+         timestamp. Fixes bug #516811.
+
+2008-02-18 05:16:44 +0000  Tal Shalif <tshalif@nargila.org>
+
+         ext/dvdread/dvdreadsrc.c: Add some gint64 casts to prevent 32 bit integer overflows.
+         Original commit message from CVS:
+         Patch by: Tal Shalif <tshalif at nargila dot org>
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_create),
+         (gst_dvd_read_src_do_seek), (gst_dvd_read_src_do_position_query):
+         Add some gint64 casts to prevent 32 bit integer overflows.
+         Fixes bug #516989.
+
+2008-02-17 18:49:30 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Revert previous commit to mp3parse, as it breaks playback of AVI files.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         Revert previous commit to mp3parse, as it breaks playback
+         of AVI files.
+
+2008-02-14 13:58:42 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Return GST_FLOW_UNEXPECTED if we get data that is after our configured segmen...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         Return GST_FLOW_UNEXPECTED if we get data that is after our
+         configured segment. This makes upstream go EOS immediately instead
+         of sending us the complete stream. Also improve debugging a bit.
+
+2008-02-13 22:57:54 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/dvdread/dvdreadsrc.c: Fix regression in DVD seeking - when a pack we expect to be a NAV block turns out not to be...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c:
+         Fix regression in DVD seeking - when a pack we
+         expect to be a NAV block turns out not to be, scan forwards
+         for up to 2MB (at most ~1sec) until we find one.
+         Fixes: #516278
+
+2008-02-12 21:42:19 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         win32/vs6/libgstmpegaudioparse.dsp: Add xing files to VS project file.
+         Original commit message from CVS:
+         * win32/vs6/libgstmpegaudioparse.dsp:
+         Add xing files to VS project file.
+
+2008-02-11 13:31:06 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/dvdsub/gstdvdsubparse.c: Stop leaking src pad templates. Fixes bug #515708.
+         Original commit message from CVS:
+         * gst/dvdsub/gstdvdsubparse.c: (gst_dvd_sub_parse_init):
+         Stop leaking src pad templates. Fixes bug #515708.
+
+2008-02-11 13:29:07 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstxingmux.c: Correctly write the size in bytes on big endian systems.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstxingmux.c: (generate_xing_header):
+         Correctly write the size in bytes on big endian systems.
+         Fixes bug #515725.
+
+2008-02-11 09:13:33 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.c: Don't leak the allowed caps.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_setup):
+         Don't leak the allowed caps.
+         * tests/check/pipelines/lame.c: (GST_START_TEST):
+         Stop leaking all buffers. Fixes bug #515575.
+
+2008-02-08 10:17:11 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/plugin.c: Commit new file I forgot to add.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/plugin.c:
+         Commit new file I forgot to add.
+
+2008-02-08 01:09:53 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Make DISABLE_DEPRECATED defined *only* during CVS, not during pre-releases or releases.
+         Original commit message from CVS:
+         * configure.ac:
+         Make DISABLE_DEPRECATED defined *only* during CVS, not during
+         pre-releases or releases.
+
+2008-02-08 00:44:19 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+         Mention bug 511497 fixed in previous commit
+         Original commit message from CVS:
+         Mention bug 511497 fixed in previous commit
+
+2008-02-08 00:36:51 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         Move xingmux from -bad.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * gst/mpegaudioparse/Makefile.am:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         * gst/mpegaudioparse/gstxingmux.c:
+         * tests/check/Makefile.am:
+         * tests/check/elements/.cvsignore:
+         Move xingmux from -bad.
+
+2008-02-07 19:25:08 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Use gst_guint64_to_gdouble for conversion
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:(mp3parse_time_to_bytepos):
+         Use gst_guint64_to_gdouble for conversion
+         * win32/vs6/libgstasfdemux.dsp:
+         * win32/vs6/libgstdvdsub.dsp:
+         * win32/vs6/libgstrealmedia.dsp:
+         Update project dependencies and add new source files
+
+2008-02-04 14:27:32 +0000  Zaheer Abbas Merali <zaheerabbas@merali.org>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Reset decoder when handling sequence where libmpeg2 has set frame period to 0, probably d...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c:
+         Reset decoder when handling sequence where libmpeg2 has set
+         frame period to 0, probably due to a corrupt packet.
+         Fixes bug #514297
+
+2008-01-29 19:10:38 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Don't set new caps on the srcpad everytime the bitrate or MPEG version change...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_caps_create),
+         (gst_mp3parse_chain):
+         Don't set new caps on the srcpad everytime the bitrate or MPEG
+         version changes but calculate new spf value when the MPEG version
+         changes.
+
+2008-01-23 10:34:40 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Add documentation for the xingheader plugin.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-bad-plugins-sections.txt:
+         * gst/xingheader/gstxingmux.c:
+         * gst/xingheader/gstxingmux.h:
+         Add documentation for the xingheader plugin.
+         * tests/check/elements/xingmux.c: (GST_START_TEST):
+         Set element state to PLAYING before doing something else.
+
+2008-01-23 10:11:44 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         tests/check/: Add simple unit test for the xingmux element.
+         Original commit message from CVS:
+         * tests/check/Makefile.am:
+         * tests/check/elements/.cvsignore:
+         * tests/check/elements/xingmux.c: (setup_xingmux),
+         (cleanup_xingmux), (GST_START_TEST), (xingmux_suite), (main):
+         * tests/check/elements/xingmux_testdata.h:
+         Add simple unit test for the xingmux element.
+         * gst/xingheader/gstxingmux.c: (generate_xing_header),
+         (gst_xing_mux_finalize), (xing_reset):
+         Fix a memleak and invalid seek tables with less than 100 MP3 frames.
+
+2008-01-21 13:35:02 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         docs/plugins/: Add the real and rtsp elements and update the lists.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         Add the real and rtsp elements and update the lists.
+         * docs/plugins/inspect/plugin-amrnb.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         * docs/plugins/inspect/plugin-realmedia.xml:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         * docs/plugins/inspect/plugin-synaesthesia.xml:
+         Regenerate docs.
+         * gst/iec958/ac3_padder.c:
+         * gst/iec958/ac3_padder.h:
+         Do not use gtk-doc style comments for non gtk-doc comments. Note -
+         there are functions defined using extern in the .c file - does that
+         make sense?
+
+2008-01-21 12:43:37 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/mad/gstmad.c: Chain up at the end of the function.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c:
+         Chain up at the end of the function.
+
+2008-01-19 16:04:14 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mad/gstid3tag.c: Don't add pad templates for the base class but only in the subclasses.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_id3_tag_class_init):
+         Don't add pad templates for the base class but only in the
+         subclasses.
+
+2008-01-17 17:26:48 +0000  Zaheer Abbas Merali <zaheerabbas@merali.org>
+
+         ext/lame/gstlame.*: Fix the case where you initially have stereo input, and so lame's mode is not set to mono, and th...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         * ext/lame/gstlame.h:
+         Fix the case where you initially have stereo input, and so lame's
+         mode is not set to mono, and then you get input with mono audio and
+         soon after you get stereo input again. What happened before this
+         commit is that it would keep the encoding mode as mono. It should
+         change it back to the one requested by the app (or the default one)
+         if not requested.
+
+2008-01-15 17:18:31 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Interpolate the VBRI seek table entries to get better results, support 3 byte...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_handle_first_frame), (mp3parse_time_to_bytepos),
+         (mp3parse_bytepos_to_time):
+         Interpolate the VBRI seek table entries to get better results,
+         support 3 byte seek table entries and prevent overflows in the
+         seek table by adding the relative offsets when using the seek
+         table in a large enough data type.
+
+2008-01-14 15:02:13 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Add support for seeking based on the VBRI seek table. Might make sense to use...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_reset),
+         (gst_mp3parse_handle_first_frame), (mp3parse_time_to_bytepos),
+         (mp3parse_bytepos_to_time):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Add support for seeking based on the VBRI seek table. Might make
+         sense to use interpolation in the table later to get hopefully a
+         bit more accurate values.
+
+2008-01-14 11:41:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Fix compilation error. Fixes #509313.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (clear_queued), (flush_queued),
+         (handle_picture), (handle_slice):
+         Fix compilation error. Fixes #509313.
+
+2008-01-14 11:24:57 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/lame/gstlame.c: Use gst_util_uint64_scale instead of gst_util_uint64_scale_int as 8 * GST_SECOND is too large for...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_event):
+         Use gst_util_uint64_scale instead of gst_util_uint64_scale_int
+         as 8 * GST_SECOND is too large for int.
+
+2008-01-14 10:52:20 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/xingheader/gstxingmux.c: Bitrate is 4 bits, not 8 so check for 0xe as maximum value instead of 0xfe.
+         Original commit message from CVS:
+         * gst/xingheader/gstxingmux.c: (generate_xing_header):
+         Bitrate is 4 bits, not 8 so check for 0xe as maximum value instead
+         of 0xfe.
+
+2008-01-14 10:42:48 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Add initial support for reading VBRI headers as found in VBR files created by...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_reset),
+         (gst_mp3parse_emit_frame), (gst_mp3parse_handle_first_frame),
+         (mp3parse_total_bytes), (mp3parse_total_time):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Add initial support for reading VBRI headers as found in VBR files
+         created by some Fraunhofer encoders. Currently we only read the
+         number of frames and bytes (and calculate duration, etc from this)
+         but there is also a seek table that we currently don't use.
+
+2008-01-14 09:17:47 +0000  Mark Nauwelaerts <manauw@syknet.be>
+
+         ext/lame/gstlame.c: Correctly set number of channels when using mono-encoding mode and fix the duration calculation o...
+         Original commit message from CVS:
+         Patch by: Mark Nauwelaerts <manauw at syknet dot be>
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps),
+         (gst_lame_sink_event):
+         Correctly set number of channels when using mono-encoding mode
+         and fix the duration calculation of the EOS buffer.
+
+2008-01-14 09:13:29 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Guard against 0 values in the Xing header as frame count and byte count and c...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_handle_first_frame):
+         Guard against 0 values in the Xing header as frame count and
+         byte count and calculate the bitrate when we have all values
+         we need and not before.
+
+2008-01-14 09:09:49 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/xingheader/gstxingmux.c: Remove accidentially leftover debug printf.
+         Original commit message from CVS:
+         * gst/xingheader/gstxingmux.c: (generate_xing_header):
+         Remove accidentially leftover debug printf.
+
+2008-01-14 08:56:31 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/xingheader/gstxingmux.c: Choose smallest possible frame size for the Xing header, properly set the timestamp, dur...
+         Original commit message from CVS:
+         * gst/xingheader/gstxingmux.c: (has_xing_header),
+         (generate_xing_header), (gst_xing_mux_chain),
+         (gst_xing_mux_sink_event):
+         Choose smallest possible frame size for the Xing header, properly
+         set the timestamp, duration and offset on the outgoing buffers,
+         only send NEWSEGMENT events in BYTE format downstream and also
+         drop VBRI headers if already existing.
+
+2008-01-12 09:22:06 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/xingheader/: Major cleanup and rewrite of xingmux with less bugs and new features:
+         Original commit message from CVS:
+         * gst/xingheader/Makefile.am:
+         * gst/xingheader/gstxingmux.c: (parse_header), (get_xing_offset),
+         (has_xing_header), (generate_xing_header),
+         (gst_xing_mux_base_init), (gst_xing_mux_finalize), (xing_reset),
+         (gst_xing_mux_init), (gst_xing_mux_chain),
+         (gst_xing_mux_sink_event), (gst_xing_mux_change_state):
+         * gst/xingheader/gstxingmux.h:
+         Major cleanup and rewrite of xingmux with less bugs and new features:
+         - Handles other layers as 3
+         - Write TOC
+
+2008-01-10 17:24:09 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Call g_type_class_ref() from a thread-safe context and not from the streaming thread to avoid GLib ...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (GST_TYPE_MAD_MODE),
+         (GST_TYPE_MAD_EMPHASIS), (GST_TAG_EMPHASIS), (CHECK_HEADER):
+         Call g_type_class_ref() from a thread-safe context and not
+         from the streaming thread to avoid GLib screwing up (see
+         bug #349410 and #493432). Comment out unused code.
+
+2008-01-10 15:24:08 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Add buffer clipping.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (clear_queued), (flush_queued),
+         (handle_picture), (clip_buffer), (handle_slice),
+         (gst_mpeg2dec_chain), (gst_mpeg2dec_sink_event),
+         (gst_mpeg2dec_change_state):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Add buffer clipping.
+         Add basic reverse playback support. Not complete yet when dealing with
+         non-closed GOPs.
+
+2008-01-10 12:28:19 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         autogen.sh: Add -Wno-portability to the automake parameters to stop warnings about GNU make extensions being used. We...
+         Original commit message from CVS:
+         * autogen.sh:
+         Add -Wno-portability to the automake parameters to stop warnings
+         about GNU make extensions being used. We require GNU make in almost
+         every Makefile anyway.
+         * configure.ac:
+         Use AM_PROG_CC_C_O as a compiler that accepts both -c and -o
+         at the same time is required for per target flags.
+
+2008-01-09 13:51:38 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Makefile.am: Include lcov.mak to allow building coverage reports.
+         Original commit message from CVS:
+         * Makefile.am:
+         Include lcov.mak to allow building coverage reports.
+
+2008-01-08 19:42:38 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Make sure that the Xing TOC starts with 0 and the entries are increasing over time. Otherwise it's broken and should ...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (mpg123_parse_xing_header):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_handle_first_frame):
+         Make sure that the Xing TOC starts with 0 and the entries
+         are increasing over time. Otherwise it's broken and should
+         be skipped. Fixes bug #507821.
+
+2008-01-08 16:31:29 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.*: Parse metadata object and extract pixel aspect ratio. Fixes #507844.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (asfdemux_dbg), (gst_asf_demux_reset),
+         (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_ext_content_desc),
+         (gst_asf_demux_get_metadata_for_stream),
+         (gst_asf_demux_process_metadata), (gst_asf_demux_process_object),
+         (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Parse metadata object and extract pixel aspect ratio. Fixes #507844.
+
+2007-12-31 21:41:52 +0000  David Schleef <ds@schleef.org>
+
+         docs/plugins/.cvsignore: Add *-undeclared.txt
+         Original commit message from CVS:
+         * docs/plugins/.cvsignore:
+         Add *-undeclared.txt
+
+2007-12-21 14:01:06 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtmanager.*: Implement some more signals that rtspsrc connects to.
+         Original commit message from CVS:
+         * gst/realmedia/rdtmanager.c:
+         (gst_rdt_manager_marshal_VOID__UINT_UINT),
+         (gst_rdt_manager_class_init):
+         * gst/realmedia/rdtmanager.h:
+         Implement some more signals that rtspsrc connects to.
+         Fixes #504671.
+
+2007-12-18 09:07:53 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Makefile.am: Include common/win32.mak for CRLF check of win32 project files (see #393626).
+         Original commit message from CVS:
+         * Makefile.am:
+         Include common/win32.mak for CRLF check of win32 project
+         files (see #393626).
+
+2007-12-13 11:20:11 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Don't post SEGMENT_START messages on the bus, only the element driving the pi...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (mp3parse_handle_seek):
+         Don't post SEGMENT_START messages on the bus, only the element
+         driving the pipeline should do that.
+
+2007-12-09 04:29:35 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Don't define GST_DISABLE_DEPRECATED for releases. Fixes #498181.
+         Original commit message from CVS:
+         * configure.ac:
+         Don't define GST_DISABLE_DEPRECATED for releases. Fixes #498181.
+
+2007-12-03 19:05:20 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.h: Use G_GINT64_CONSTANT, fixes compilation with MSVC 6.0.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Use G_GINT64_CONSTANT, fixes compilation with MSVC 6.0.
+         Fixes #500808.
+
+2007-11-20 12:15:51 +0000  Julien Moutte <julien@moutte.net>
+
+         gst/realmedia/rtspreal.c: Fix build on Mac OS X.
+         Original commit message from CVS:
+         2007-11-20  Julien MOUTTE  <julien@moutte.net>
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp): Fix build
+         on Mac OS X.
+
+2007-11-19 11:38:49 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Restore the segment handling logic.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         Restore the segment handling logic.
+         Please don't do behavioural changes under the heading of 'leak fixes'
+         or 'whitespace changes', people.
+
+2007-11-19 09:50:58 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Plug some leaks.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         Plug some leaks.
+
+2007-11-13 06:57:57 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfdemux.c: Sync _activate_pull() a little more with other demuxers.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         Sync _activate_pull() a little more with other demuxers.
+
+2007-11-11 20:41:32 +0000  Thijs Vermeir <thijsvermeir@gmail.com>
+
+         gst/mpegstream/gstmpegdemux.c: recognize the padding stream
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegdemux.c:
+         recognize the padding stream
+
+2007-10-31 14:33:03 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Convert tags that come as string into the type required by
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_ext_content_desc):
+         Convert tags that come as string into the type required by
+         GstTagList.
+
+2007-10-30 12:27:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Remove some more broken code, it seems to clip even when it should not.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         Remove some more broken code, it seems to clip even when it should not.
+         See #491305.
+
+2007-10-30 11:13:49 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: When the element is not driving the streaming thread it is not supposed to em...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         When the element is not driving the streaming thread it is not supposed
+         to emit EOS or post SEGMENT done. It is allowed to return UNEXPECTED
+         upstream when it detects EOS. See #491305.
+
+2007-10-13 15:13:34 +0000  Mark Nauwelaerts <mnauw@users.sourceforge.net>
+
+         gst/dvdsub/: Add dvd subtitle parser, which just packetizes the input stream. This is needed to mux dvd subtitles int...
+         Original commit message from CVS:
+         Patch by: Mark Nauwelaerts <mnauw at users.sourceforge.net>
+         * gst/dvdsub/Makefile.am:
+         * gst/dvdsub/gstdvdsubdec.c:
+         * gst/dvdsub/gstdvdsubparse.c:
+         * gst/dvdsub/gstdvdsubparse.h:
+         Add dvd subtitle parser, which just packetizes the input
+         stream. This is needed to mux dvd subtitles into matroska
+         files, since the muxer expects unfragmented and properly
+         timestamped input (#415754).
+
+2007-10-10 12:02:30 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Update requirements from past CVS versions to released versions (0.10.14 in this case).
+         Original commit message from CVS:
+         * configure.ac:
+         Update requirements from past CVS versions to released
+         versions (0.10.14 in this case).
+         * ext/sidplay/gstsiddec.cc:
+         Fix compilation with g++-4.2.
+
+2007-10-08 17:51:33 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/realmedia/: Fix some compiler warnings shown on Forte.
+         Original commit message from CVS:
+         * gst/realmedia/asmrules.c: (gst_asm_scan_parse_expression),
+         (gst_asm_scan_parse_condition):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_video_packet):
+         Fix some compiler warnings shown on Forte.
+
+2007-10-05 08:51:44 +0000  Gautier Portet <kassoulet@gmail.com>
+
+         gst/xingheader/gstxingmux.c: The size of the Xing header is actually 417 as it's rounded to the next smaller integer....
+         Original commit message from CVS:
+         Patch by: Gautier Portet <kassoulet at gmail dot com>
+         * gst/xingheader/gstxingmux.c:
+         The size of the Xing header is actually 417 as it's rounded to the
+         next smaller integer. Fixes #397759.
+         * gst/xingheader/gstxingmux.c: (xing_generate_header),
+         (xing_push_header):
+         Some random cleanup, add FIXMEs and TODOs and check if the newsegment
+         event to the beginning was successful before pushing the header again.
+
+2007-09-29 17:11:16 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Use gst_util_guint64_to_gdouble for conversions.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3parse_time_to_bytepos),
+         (mp3parse_bytepos_to_time):
+         Use gst_util_guint64_to_gdouble for conversions.
+         * win32/vs6/libgstmad.dsp:
+         Add a link to libgstaudio.
+
+2007-09-26 13:40:35 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: Fix up case where there is no peer, in which case _get_allowed_caps() will return NULL.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         Fix up case where there is no peer, in which case
+         _get_allowed_caps() will return NULL.
+
+2007-09-25 13:20:27 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: Use GST_PTR_FORMAT to print caps in debug statement.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         Use GST_PTR_FORMAT to print caps in debug statement.
+
+2007-09-25 09:16:05 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         configure.ac: Use AG_GST_ARG_WITH_PLUGINS, AG_GST_ARG_ENABLE_EXTERNAL and
+         Original commit message from CVS:
+         * configure.ac:
+         Use AG_GST_ARG_WITH_PLUGINS, AG_GST_ARG_ENABLE_EXTERNAL and
+         AG_GST_ARG_ENABLE_EXPERIMENTAL instead of duplicating those macros
+         in configure.ac.
+
+2007-09-24 10:26:21 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         ext/lame/gstlame.c: Allow fixing the sample rate lame converts to by negotiating fixed sample rate on the src pad caps.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         Allow fixing the sample rate lame converts to by negotiating fixed
+         sample rate on the src pad caps.
+         Add docs for it.
+         * tests/check/Makefile.am:
+         * tests/check/pipelines/lame.c:
+         Add a check for it.
+
+2007-09-22 18:22:12 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Updated translations.
+         Original commit message from CVS:
+         * po/LINGUAS:
+         * po/da.po:
+         Updated translations.
+
+2007-09-22 18:20:50 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/pl.po: Added Polish translation.
+         Original commit message from CVS:
+         translated by: Jakub Bogusz <qboosh@pld-linux.org>
+         * po/pl.po:
+         Added Polish translation.
+
+2007-09-22 18:19:08 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/fi.po: Added Finnish translation.
+         Original commit message from CVS:
+         translated by: Ilkka Tuohela <hile@iki.fi>
+         * po/fi.po:
+         Added Finnish translation.
+
+2007-09-22 18:17:52 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/es.po: Added Spanish translation.
+         Original commit message from CVS:
+         translated by: Jorge González González <aloriel@gmail.com>
+         * po/es.po:
+         Added Spanish translation.
+
+2007-09-22 18:17:08 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/bg.po: Added Bulgarian translation.
+         Original commit message from CVS:
+         translated by: Alexander Shopov <ash@contact.bg>
+         * po/bg.po:
+         Added Bulgarian translation.
+
+2007-09-20 11:47:52 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/iec958/ac3iec.c: Chainup in finalize.
+         Original commit message from CVS:
+         * gst/iec958/ac3iec.c:
+         Chainup in finalize.
+         * tests/check/Makefile.am:
+         * tests/check/generic/states.c:
+         Improved state change unit test.
+
+2007-09-19 18:20:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Ignore registries in any format.
+         Original commit message from CVS:
+         * docs/plugins/.cvsignore:
+         * tests/check/.cvsignore:
+         Ignore registries in any format.
+
+2007-09-08 20:54:54 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Use AC_TRY_COMPILE instead of AC_TRY_RUN to check for a define in the lame headers.  This has the advan...
+         Original commit message from CVS:
+         * configure.ac:
+         Use AC_TRY_COMPILE instead of AC_TRY_RUN to check for a
+         define in the lame headers.  This has the advantage that
+         it should still work when we're cross-compiling (#452025).
+
+2007-08-24 15:55:03 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.c: Add other allowed rates to the pad templates.
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         Add other allowed rates to the pad templates.
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_dispose):
+         Reset the parser to release memory in dispose.
+
+2007-08-17 06:56:53 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/: Fix more leaks.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c:
+         * ext/amrnb/amrnbenc.c:
+         * ext/amrnb/amrnbparse.c:
+         * ext/sidplay/gstsiddec.cc:
+         Fix more leaks.
+
+2007-08-16 14:49:11 +0000  Daniel Charles <dcharles@ti.com>
+
+         ext/amrnb/amrnbenc.*: Add property to select the BandMode of the AMR encoder.
+         Original commit message from CVS:
+         Patch by: Daniel Charles <dcharles at ti dot com>
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_bandmode_get_type),
+         (gst_amrnbenc_set_property), (gst_amrnbenc_get_property),
+         (gst_amrnbenc_base_init), (gst_amrnbenc_class_init),
+         (gst_amrnbenc_chain), (gst_amrnbenc_state_change):
+         * ext/amrnb/amrnbenc.h:
+         Add property to select the BandMode of the AMR encoder.
+         See #466442.
+
+2007-08-16 12:15:32 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/realmedia/asmrules.c: Make ro memory to share.
+         Original commit message from CVS:
+         * gst/realmedia/asmrules.c:
+         Make ro memory to share.
+
+2007-08-16 11:52:57 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Queue segment event and push it after we know the caps on the pad or else an ...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (gst_mp3parse_emit_frame):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Queue segment event and push it after we know the caps on the pad or
+         else an autoplugger might not have plugged the element yet and the
+         segment is lost.
+
+2007-08-16 07:17:13 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/iec958/ac3iec.c: Fix tests.
+         Original commit message from CVS:
+         * gst/iec958/ac3iec.c:
+         Fix tests.
+
+2007-08-16 06:48:13 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         tests/check/: Add generic state-change test suite to help to fi leaks.
+         Original commit message from CVS:
+         * tests/check/Makefile.am:
+         * tests/check/generic/.cvsignore:
+         * tests/check/generic/states.c:
+         Add generic state-change test suite to help to fi leaks.
+
+2007-08-09 10:57:11 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Added Portuguese (Brazilian) translation.
+         Original commit message from CVS:
+         translated by: Raphael Higino <phhigino@gmail.com>
+         * po/LINGUAS:
+         * po/pt_BR.po:
+         Added Portuguese (Brazilian) translation.
+
+2007-08-09 10:55:59 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Updated translations.
+         Original commit message from CVS:
+         * po/hu.po:
+         * po/nl.po:
+         * po/sv.po:
+         * po/uk.po:
+         Updated translations.
+
+2007-08-07 11:50:44 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Activate timestamp fixing code.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_fix_timestamp),
+         (gst_rmdemux_parse_video_packet):
+         Activate timestamp fixing code.
+
+2007-08-07 10:57:09 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Do fragment collection in the demuxer so that we can now work with both ffmpeg and realvideo...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_reset),
+         (gst_rmdemux_chain), (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_fix_timestamp), (gst_rmdemux_parse_video_packet),
+         (gst_rmdemux_parse_audio_packet), (gst_rmdemux_parse_packet):
+         Do fragment collection in the demuxer so that we can now work with
+         both ffmpeg and realvideodec to decoder real video content.
+
+2007-08-04 12:59:24 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/realmedia/asmrules.c: Include stdlib.h.
+         Original commit message from CVS:
+         * gst/realmedia/asmrules.c:
+         Include stdlib.h.
+
+2007-08-03 16:21:19 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtmanager.c: Fix caps.
+         Original commit message from CVS:
+         * gst/realmedia/rdtmanager.c:
+         Fix caps.
+
+2007-08-03 16:11:09 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rtspreal.c: Disable UDP transport for now.
+         Original commit message from CVS:
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_get_transports),
+         (rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select):
+         Disable UDP transport for now.
+
+2007-08-03 16:09:01 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Add simple rdt manager.
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rdtmanager.c: (find_session_by_id),
+         (create_session), (free_session), (gst_rdt_manager_base_init),
+         (gst_rdt_manager_marshal_BOXED__UINT_UINT),
+         (gst_rdt_manager_class_init), (gst_rdt_manager_init),
+         (gst_rdt_manager_finalize), (gst_rdt_manager_query_src),
+         (gst_rdt_manager_chain_rtp), (gst_rdt_manager_chain_rtcp),
+         (gst_rdt_manager_set_property), (gst_rdt_manager_get_property),
+         (gst_rdt_manager_provide_clock), (gst_rdt_manager_change_state),
+         (create_recv_rtp), (create_recv_rtcp), (create_rtcp),
+         (gst_rdt_manager_request_new_pad), (gst_rdt_manager_release_pad),
+         (gst_rdt_manager_plugin_init):
+         * gst/realmedia/rdtmanager.h:
+         * gst/realmedia/rmdemux.c: (plugin_init):
+         Add simple rdt manager.
+
+2007-08-03 14:19:50 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtdepay.c: Fix the encoding-name so that it matches what the rtsp extension sets.
+         Original commit message from CVS:
+         * gst/realmedia/rdtdepay.c:
+         Fix the encoding-name so that it matches what the rtsp extension sets.
+
+2007-08-02 19:37:41 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Use g_hash_table_destroy instead of _unref which is too new.
+         Original commit message from CVS:
+         * gst/realmedia/asmrules.c: (gst_asm_node_free),
+         (gst_asm_node_evaluate), (gst_asm_scan_new), (gst_asm_scan_free),
+         (gst_asm_scan_string), (gst_asm_scan_number),
+         (gst_asm_scan_identifier), (gst_asm_scan_print_token),
+         (gst_asm_scan_next_token), (gst_asm_rule_free),
+         (gst_asm_rule_add_property), (gst_asm_scan_parse_operand),
+         (gst_asm_scan_parse_expression), (gst_asm_scan_parse_condition),
+         (gst_asm_scan_parse_property), (gst_asm_scan_parse_rule),
+         (gst_asm_rule_evaluate), (gst_asm_rule_book_new),
+         (gst_asm_rule_book_n_rules), (gst_asm_rule_book_free),
+         (gst_asm_rule_book_match), (main):
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp),
+         (rtsp_ext_real_stream_select), (gst_rtsp_real_plugin_init):
+         Use g_hash_table_destroy instead of _unref which is too new.
+
+2007-08-02 19:30:05 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/.cvsignore: Add test to ignore.
+         Original commit message from CVS:
+         * gst/realmedia/.cvsignore:
+         Add test to ignore.
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/asmrules.c: (gst_asm_node_new),
+         (gst_asm_node_free), (gst_asm_operator_eval),
+         (gst_asm_node_evaluate), (gst_asm_scan_new), (gst_asm_scan_free),
+         (gst_asm_scan_string), (gst_asm_scan_number),
+         (gst_asm_scan_identifier), (gst_asm_scan_print_token),
+         (gst_asm_scan_next_token), (gst_asm_rule_new), (gst_asm_rule_free),
+         (gst_asm_rule_add_property), (gst_asm_scan_parse_operand),
+         (gst_asm_scan_parse_expression), (gst_asm_scan_parse_condition),
+         (gst_asm_scan_parse_property), (gst_asm_scan_parse_rule),
+         (gst_asm_rule_evaluate), (gst_asm_rule_book_new),
+         (gst_asm_rule_book_n_rules), (gst_asm_rule_book_free),
+         (gst_asm_rule_book_match), (main):
+         * gst/realmedia/asmrules.h:
+         Added asembler rule book parser and evaluator.
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_parse_sdp),
+         (rtsp_ext_real_stream_select), (gst_rtsp_real_plugin_init):
+         * gst/realmedia/rtspreal.h:
+         Keep per stream config info.
+         Parse and evaluate asm rule books for stream selection.
+
+2007-07-31 19:16:44 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/realmedia/rtspreal.c: Include stdlib.
+         Original commit message from CVS:
+         * gst/realmedia/rtspreal.c:
+         Include stdlib.
+
+2007-07-27 16:39:45 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Split out hash code in separate file.
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/realhash.c: (hash), (call_hash),
+         (gst_rtsp_ext_real_calc_response_and_checksum):
+         * gst/realmedia/realhash.h:
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_get_transports),
+         (rtsp_ext_real_after_send), (rtsp_ext_real_stream_select):
+         Split out hash code in separate file.
+
+2007-07-27 10:12:55 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/: Fix include paths and link dependecies for rtsp extension.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         * gst/asfdemux/gstrtspwms.c: (gst_rtsp_wms_parse_sdp), (_do_init),
+         (gst_rtsp_wms_class_init):
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_get_transports),
+         (rtsp_ext_real_before_send), (rtsp_ext_real_after_send),
+         (rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select),
+         (_do_init), (gst_rtsp_real_class_init):
+         Fix include paths and link dependecies for rtsp extension.
+
+2007-07-26 15:52:43 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Add RealMedia RTSP extension module. It has rank NONE until it is fully functional.
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rmdemux.c: (plugin_init):
+         * gst/realmedia/rtspreal.c: (rtsp_ext_real_get_transports),
+         (rtsp_ext_real_before_send), (rtsp_ext_real_after_send), (hash),
+         (call_hash), (rtsp_ext_real_calc_response_and_checksum),
+         (rtsp_ext_real_parse_sdp), (rtsp_ext_real_stream_select),
+         (_do_init), (gst_rtsp_real_base_init), (gst_rtsp_real_class_init),
+         (gst_rtsp_real_init), (gst_rtsp_real_finalize),
+         (gst_rtsp_real_change_state), (gst_rtsp_real_extension_init),
+         (gst_rtsp_real_plugin_init):
+         * gst/realmedia/rtspreal.h:
+         Add RealMedia RTSP extension module. It has rank NONE until it is fully
+         functional.
+
+2007-07-25 18:38:42 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/: Move WMS RTSP extension from -good to here.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         * gst/asfdemux/gstrtspwms.c: (gst_rtsp_wms_before_send),
+         (gst_rtsp_wms_after_send), (gst_rtsp_wms_parse_sdp),
+         (gst_rtsp_wms_configure_stream), (_do_init),
+         (gst_rtsp_wms_base_init), (gst_rtsp_wms_class_init),
+         (gst_rtsp_wms_init), (gst_rtsp_wms_finalize),
+         (gst_rtsp_wms_change_state), (gst_rtsp_wms_extension_init):
+         * gst/asfdemux/gstrtspwms.h:
+         Move WMS RTSP extension from -good to here.
+         Port it to the new pluggable extension interface.
+
+2007-07-24 06:58:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/mad/Makefile.am: Link to audio helper from plugins-base.
+         Original commit message from CVS:
+         * ext/mad/Makefile.am:
+         Link to audio helper from plugins-base.
+
+2007-07-24 05:05:29 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         Use the new buffer clipping function from gstaudio here and require gst-plugins-base CVS.
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Use the new buffer clipping function from gstaudio here and
+         require gst-plugins-base CVS.
+
+2007-07-23 09:07:19 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: Sync liboil check with plugins-base. Add libm check.
+         Original commit message from CVS:
+         * configure.ac:
+         Sync liboil check with plugins-base. Add libm check.
+         * gst/synaesthesia/Makefile.am:
+         Link against libm. We're using sqrt here.
+
+2007-07-20 07:58:25 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfdemux.c: Include stdlib.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         Include stdlib.
+
+2007-07-20 07:41:57 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/annodex/Makefile.am: Fix CFLAGS/LIBS.
+         Original commit message from CVS:
+         * ext/annodex/Makefile.am:
+         Fix CFLAGS/LIBS.
+         * ext/cdio/gstcdiocddasrc.c:
+         * ext/libpng/gstpngdec.c: (gst_pngdec_task):
+         Include stdlib
+         * ext/cairo/Makefile.am:
+         * gst/videofilter/Makefile.am:
+         * tests/examples/level/Makefile.am:
+         Use $(LIBM) instead of -lm
+
+2007-07-18 17:51:55 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Save some memory for each frame by only saving the start timestamp and start ...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_reset),
+         (gst_mp3parse_emit_frame), (mp3parse_handle_seek):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Save some memory for each frame by only saving the start timestamp
+         and start byte position instead of additionally the stop timestamp
+         and stop byte position. This requires us to use a doubly-linked list
+         but still saves 8-12 bytes per frame.
+
+2007-07-16 09:14:18 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mad/gstmad.c: Fix buffer clipping to correctly clip to the segment stop.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (clip_outgoing_buffer):
+         Fix buffer clipping to correctly clip to the segment stop.
+
+2007-07-15 19:39:46 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Fix a calculation that was causing mp3parse to drop every incoming frame when...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_emit_frame):
+         Fix a calculation that was causing mp3parse to drop every incoming
+         frame when upstream delivered a segment in TIME format, breaking
+         playback of all mpeg system streams.
+
+2007-07-13 16:46:35 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         Remove bogus check for libcheck, since we check for gstreamer-check and it pulls in the required info from and we wer...
+         Original commit message from CVS:
+         * Makefile.am:
+         * configure.ac:
+         * tests/Makefile.am:
+         Remove bogus check for libcheck, since we check for
+         gstreamer-check and it pulls in the required info from
+         and we weren't actually _using_ the information for
+         libcheck ourselves anyway.
+
+2007-07-13 16:27:56 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Implement accurate seeking in mpegaudioparse. Fixes #308312.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_reset),
+         (gst_mp3parse_init), (gst_mp3parse_dispose),
+         (gst_mp3parse_sink_event), (mp3parse_seek_table_last_entry),
+         (gst_mp3parse_emit_frame), (gst_mp3parse_chain),
+         (mp3parse_handle_seek), (mp3parse_src_query):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Implement accurate seeking in mpegaudioparse. Fixes #308312.
+         Also implement segment seeks.
+
+2007-07-13 15:46:13 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mad/gstmad.*: Implement buffer clipping and use GST_BOILERPLATE instead of manual
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (_do_init), (gst_mad_init), (index_seek),
+         (normal_seek), (gst_mad_sink_event), (clip_outgoing_buffer),
+         (gst_mad_chain), (gst_mad_change_state):
+         * ext/mad/gstmad.h:
+         Implement buffer clipping and use GST_BOILERPLATE instead of manual
+         GType magic. Part one of bug #308312.
+
+2007-07-12 11:21:23 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: Use pkg-config to locate check.
+         Original commit message from CVS:
+         * configure.ac:
+         Use pkg-config to locate check.
+
+2007-07-11 23:18:14 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Fix build against core CVS by not using deprecated API. Bump requirements for new API (overdue anyway).
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/mpeg2dec/gstmpeg2dec.c: (crop_buffer):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_descramble_buffer):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_raw):
+         Fix build against core CVS by not using deprecated API. Bump
+         requirements for new API (overdue anyway).
+
+2007-07-09 06:05:48 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         REQUIREMENTS: Also add amr-libs here and update a little.
+         Original commit message from CVS:
+         * REQUIREMENTS:
+         Also add amr-libs here and update a little.
+
+2007-07-06 17:59:29 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         docs/plugins/inspect/: Add inspect file for synaesthesia so the docs can be built even if the plugin isn't built yet....
+         Original commit message from CVS:
+         * docs/plugins/inspect/plugin-dvdnav.xml:
+         * docs/plugins/inspect/plugin-realmedia.xml:
+         * docs/plugins/inspect/plugin-synaesthesia.xml:
+         Add inspect file for synaesthesia so the docs can be built even if
+         the plugin isn't built yet. Fixes #454311. Also add inspect files
+         for dvdnavsrc and realmedia.
+
+2007-07-05 08:44:30 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         docs/plugins/Makefile.am: Simplify --extra-dir as gtkdoc scans recursively.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         Simplify --extra-dir as gtkdoc scans recursively.
+
+2007-07-03 13:05:01 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         And yet more docs enabled.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * gst/synaesthesia/Makefile.am:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         * gst/synaesthesia/gstsynaesthesia.h:
+         And yet more docs enabled.
+
+2007-07-03 11:55:45 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         docs/plugins/: Add new docs. Scan c++ files too.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * docs/plugins/inspect/plugin-a52dec.xml:
+         * docs/plugins/inspect/plugin-amrnb.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-iec958.xml:
+         * docs/plugins/inspect/plugin-lame.xml:
+         * docs/plugins/inspect/plugin-mad.xml:
+         * docs/plugins/inspect/plugin-mpeg2dec.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         Add new docs. Scan c++ files too.
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_base_init),
+         (gst_amrnbdec_event):
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_base_init):
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_base_init),
+         (gst_amrnbparse_loop):
+         Add documentation headers.
+         * ext/mad/gstmad.c:
+         * ext/mad/gstmad.h:
+         Refactor for docs.
+
+2007-07-01 19:12:32 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Use GST_BOILERPLATE instead of manual GType magic.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_base_init),
+         (gst_mp3parse_init):
+         Use GST_BOILERPLATE instead of manual GType magic.
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_handle_first_frame), (mp3parse_time_to_bytepos),
+         (mp3parse_bytepos_to_time):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Implement seeking, byte->time, time->byte conversions with the Xing
+         seek table if available. This allows better at least a bit more
+         accurate seeks and file position reporting.
+
+2007-06-28 20:33:51 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Copy the complete Xing seek table in the 100 byte array instead of copying th...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_handle_first_frame):
+         Copy the complete Xing seek table in the 100 byte array instead of
+         copying the first byte 100 times.
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3parse_total_bytes),
+         (mp3parse_total_time), (mp3parse_time_to_bytepos):
+         Add seeking support based on the Xing header but comment it out for
+         now as it seems to yield worse result than the other method.
+         Also use gst_pad_query_peer_duration() instead of getting the peer pad
+         ourself, creating a new GstQuery, etc.
+
+2007-06-25 12:46:47 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         docs/plugins/: Update docs with caps info.
+         Original commit message from CVS:
+         * docs/plugins/gst-plugins-ugly-plugins.args:
+         * docs/plugins/inspect/plugin-a52dec.xml:
+         * docs/plugins/inspect/plugin-amrnb.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdread.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-iec958.xml:
+         * docs/plugins/inspect/plugin-lame.xml:
+         * docs/plugins/inspect/plugin-mad.xml:
+         * docs/plugins/inspect/plugin-mpeg2dec.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         Update docs with caps info.
+
+2007-06-25 12:25:09 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         po/POTFILES.in: Make sure dvdnav strings get translated too (no reason not to have them in the .po file, even if the ...
+         Original commit message from CVS:
+         * po/POTFILES.in:
+         Make sure dvdnav strings get translated too (no reason not to have
+         them in the .po file, even if the plugin is disabled for now).
+         Fixes #450879.
+
+2007-06-25 11:46:24 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/amrnb/: Add newsegment and discont handling. Some code cleanups.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_base_init),
+         (gst_amrnbdec_event), (gst_amrnbdec_chain),
+         (gst_amrnbdec_state_change):
+         * ext/amrnb/amrnbdec.h:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_base_init),
+         (gst_amrnbparse_loop):
+         Add newsegment and discont handling. Some code cleanups.
+
+2007-06-25 07:55:51 +0000  David Schleef <ds@schleef.org>
+
+         ext/dvdread/dvdreadsrc.c: check for an error from
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: check for an error from
+         DVDReadBlocks() correctly.
+
+2007-06-25 07:22:10 +0000  David Schleef <ds@schleef.org>
+
+         ext/dvdread/dvdreadsrc.c: If we can't read a nav packet, or it doesn't look like a nav packet, that's an error.  Prev...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c:
+         If we can't read a nav packet, or it doesn't look like a nav
+         packet, that's an error.  Previous behavior was to look at
+         the next packet; I can't find any justification for doing that.
+         Fixes: #358891.
+
+2007-06-23 22:57:29 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/it.po: Updated Italian translation.
+         Original commit message from CVS:
+         * po/it.po:
+         Updated Italian translation.
+
+2007-06-23 11:22:39 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/vi.po: Updated Vietnames translation.
+         Original commit message from CVS:
+         * po/vi.po:
+         Updated Vietnames translation.
+
+2007-06-23 11:21:54 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Added Chinese (simplified) translation.
+         Original commit message from CVS:
+         contributed by: Wenzheng Hu <db_lobster@163.com>
+         * po/LINGUAS:
+         * po/zh_CN.po:
+         Added Chinese (simplified) translation.
+
+2007-06-22 14:27:18 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         MAINTAINERS: Updating all the maintainers files
+         Original commit message from CVS:
+         * MAINTAINERS:
+         Updating all the maintainers files
+
+2007-06-22 10:57:06 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         Fix leaks some more.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_init):
+         * gst/ac3parse/gstac3parse.c: (gst_ac3parse_init):
+         * gst/asfdemux/gstasfmux.c: (gst_asfmux_init):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_init):
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_init):
+         * gst/iec958/ac3iec.c: (ac3iec_init):
+         * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_init):
+         Fix leaks some more.
+
+2007-06-21 14:33:58 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: "She's leaking me", said valgrind.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_init):
+         "She's leaking me", said valgrind.
+
+2007-06-19 14:40:20 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Fix "pad caps are not a real subset of its template caps" warning.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_caps_create):
+         Fix "pad caps are not a real subset of its template caps" warning.
+
+2007-06-19 14:15:50 +0000  Laurent Glayal <spglegle@yahoo.fr>
+
+         ext/amrnb/amrnbdec.c: Don't leak the adapter, unref it in a new finalize method instead.
+         Original commit message from CVS:
+         Patch by: Laurent Glayal <spglegle at yahoo dot fr>
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_class_init),
+         (gst_amrnbdec_finalize):
+         Don't leak the adapter, unref it in a new finalize method instead.
+         Fixes #448782.
+
+2007-06-19 10:43:26 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Back to CVS
+         Original commit message from CVS:
+         * configure.ac:
+         Back to CVS
+         * gst-plugins-ugly.doap:
+         Add 0.10.6 to the list of releases.
+
+=== release 0.10.6 ===
+
+2007-06-19 10:31:04 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+         Release 0.10.6
+         Original commit message from CVS:
+         Release 0.10.6
+
+2007-06-19 10:21:25 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/da.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2007-06-15 09:31:16 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         win32/vs6/: Convert line endings to CRLF and mark as binary files.
+         Original commit message from CVS:
+         * win32/vs6/gst_plugins_ugly.dsw:
+         * win32/vs6/libgstac3parse.dsp:
+         * win32/vs6/libgstasfdemux.dsp:
+         * win32/vs6/libgstdvdlpcmdec.dsp:
+         * win32/vs6/libgstdvdsub.dsp:
+         * win32/vs6/libgstiec958.dsp:
+         * win32/vs6/libgstlame.dsp:
+         * win32/vs6/libgstmad.dsp:
+         * win32/vs6/libgstmpegaudioparse.dsp:
+         * win32/vs6/libgstmpegstream.dsp:
+         * win32/vs6/libgstrealmedia.dsp:
+         * win32/vs6/libgstsynaesthesia.dsp:
+         Convert line endings to CRLF and mark as binary files.
+
+2007-06-13 14:29:39 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdnav/dvdnavsrc.c: Don't forget to unlock when setting the device property, or we'll sooner or later deadlock.
+         Original commit message from CVS:
+         * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_set_property):
+         Don't forget to unlock when setting the device property, or
+         we'll sooner or later deadlock.
+
+2007-06-12 21:46:10 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         gst/dvdsub/gstdvdsubdec.c: Use gst_util_guint64_to_gdouble for conversion.
+         Original commit message from CVS:
+         * gst/dvdsub/gstdvdsubdec.c:(gst_dvd_sub_dec_parse_subpic):
+         Use gst_util_guint64_to_gdouble for conversion.
+         * win32/vs6/libgstasfdemux.dsp:
+         Add asfpacket.c to the build.
+
+2007-06-08 08:39:43 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: If the Xing header provides a total time, use it to calculate the correct ave...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_reset),
+         (gst_mp3parse_emit_frame), (gst_mp3parse_handle_first_frame):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         If the Xing header provides a total time, use it to calculate the
+         correct average bitrate immediately, instead of sending updates as
+         we parse the stream.
+
+2007-06-05 21:47:29 +0000  by Mark Nauwelaerts <manauw@skynet.be>
+
+         gst/dvdsub/gstdvdsubdec.c: Use GstClockTime instead of guint for a time variable to prevent overflows on too large su...
+         Original commit message from CVS:
+         Patch by by: Mark Nauwelaerts <manauw at skynet dot be>
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_parse_subpic):
+         Use GstClockTime instead of guint for a time variable to prevent
+         overflows on too large subtitle durations. Fixes #444514.
+
+2007-05-31 22:33:26 +0000  Mark Nauwelaerts <manauw@skynet.be>
+
+         gst/dvdsub/gstdvdsubdec.c: Clear state when handling the serialized FLUSH_STOP event instead of the FLUSH_START event...
+         Original commit message from CVS:
+         Patch by: Mark Nauwelaerts <manauw at skynet be>
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_sink_event):
+         Clear state when handling the serialized FLUSH_STOP event instead of
+         the FLUSH_START event, thereby making sure we don't free buffers the
+         chain function is still using. Fixes dvdsubdec crashing when flusing
+         or seeking (#442706).
+
+2007-05-23 11:16:09 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Initialise variable to make fc4 build bot happy.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+         Initialise variable to make fc4 build bot happy.
+
+2007-05-21 15:11:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegdemux.c: Add sanity check so we don't abort for broken or non-MPEG streams, but instead error o...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
+         Add sanity check so we don't abort for broken or non-MPEG streams,
+         but instead error out. Fixes crashes/aborts for when our typefinder
+         wrongly identifies quicktime files as mpeg (which should be fixed in
+         -base now too). (#440120).
+
+2007-05-18 09:35:17 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+       * ChangeLog:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrnb/amrnbparse.c:
+         ext/amrnb/amrnbdec.c (gst_amrnbdec_debug, GST_CAT_DEFAULT, block_size, _do_init, gst_amrnbdec_base_init, gst_amrnbdec...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c (gst_amrnbdec_debug, GST_CAT_DEFAULT,
+         block_size, _do_init, gst_amrnbdec_base_init,
+         gst_amrnbdec_class_init, gst_amrnbdec_init):
+         * ext/amrnb/amrnbenc.c (gst_amrnbenc_debug, GST_CAT_DEFAULT, _do_init,
+         gst_amrnbenc_base_init, gst_amrnbenc_class_init, gst_amrnbenc_init):
+         * ext/amrnb/amrnbparse.c (gst_amrnbparse_debug, GST_CAT_DEFAULT,
+         block_size, _do_init, gst_amrnbparse_base_init,
+         gst_amrnbparse_class_init, gst_amrnbparse_init):
+         First round of cleanups, that use GST_BOILERPLATE, GST_ELEMENT_DETAILS,
+         GST_DEBUG_FUNCPTR and add log-category.
+
+2007-05-18 08:42:25 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Implement parsing of Xing headers from the first frame of the stream, and use...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mp3_type_frame_length_from_header), (gst_mp3parse_reset),
+         (gst_mp3parse_emit_frame), (gst_mp3parse_handle_first_frame),
+         (gst_mp3parse_chain), (mp3parse_total_bytes),
+         (mp3parse_total_time):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Implement parsing of Xing headers from the first frame of the stream,
+         and use it to report duration correctly where possible.
+
+2007-05-16 19:15:13 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: After descrambling, push the packets out as individual packets instead of one big descramble...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_cook_audio):
+         After descrambling, push the packets out as individual packets
+         instead of one big descrambled buffer. Makes cook audio decoding
+         work with the 'realaudiodec' decoder from gst-plugins-bad.
+
+2007-05-16 19:07:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.*: Remember first timestamp encountered in stream and re-timestamp stream to start from zero (f...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_init),
+         (gst_rmdemux_sink_event), (gst_rmdemux_perform_seek),
+         (gst_rmdemux_reset), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_packet):
+         * gst/realmedia/rmdemux.h:
+         Remember first timestamp encountered in stream and re-timestamp
+         stream to start from zero (fixes #397219); only send one newsegment
+         event, not two; when seeking, send newsegment events from the
+         streaming thread and not from the seeking thread.
+
+2007-05-16 12:48:43 +0000  Mark Nauwelaerts <manauw@skynet.be>
+
+         gst/mpegstream/: Reset last_flow values for the various streams after a flushing seek, otherwise we might aggregate w...
+         Original commit message from CVS:
+         Based on patch by: Mark Nauwelaerts  <manauw skynet be>
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
+         (gst_mpeg_demux_process_event), (gst_mpeg_streams_reset_last_flow):
+         * gst/mpegstream/gstmpegdemux.h:
+         Reset last_flow values for the various streams after a flushing
+         seek, otherwise we might aggregate wrong flow returns afterwards
+         that will make upstream pause silently. This should fix seeking
+         in DVDs and also fix the Thoggen cropping dialog (#438610).
+
+2007-05-07 13:51:43 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.*: Activate streams (ie. add the pads to the element) depending on whether we actually get d...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_reset),
+         (gst_asf_demux_chain_headers),
+         (gst_asf_demux_parse_data_object_start), (all_streams_prerolled),
+         (gst_asf_demux_have_mutually_exclusive_active_stream),
+         (gst_asf_demux_check_activate_streams),
+         (gst_asf_demux_find_stream_with_complete_payload),
+         (gst_asf_demux_push_complete_payloads), (gst_asf_demux_loop),
+         (gst_asf_demux_activate_ext_props_streams),
+         (gst_asf_demux_process_object):
+         * gst/asfdemux/gstasfdemux.h:
+         Activate streams (ie. add the pads to the element) depending on
+         whether we actually get data for those streams within the ASF
+         preroll value specified. Currently only done in pull-mode though
+         (this will fix problems with playbin hanging on mms streams once
+         we use this in push-mode as well).
+
+2007-05-04 11:04:16 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Make all timestamps start from zero in pull-mode too; some small clean-ups and FIXMEs here and there.
+         Original commit message from CVS:
+         * gst/asfdemux/asfpacket.c: (gst_asf_payload_queue_for_stream):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_reset),
+         (gst_asf_demux_init), (gst_asf_demux_push_complete_payloads),
+         (gst_asf_demux_process_file):
+         * gst/asfdemux/gstasfdemux.h:
+         Make all timestamps start from zero in pull-mode too; some small
+         clean-ups and FIXMEs here and there.
+
+2007-05-01 11:10:31 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/asfpacket.c: If packet size is specified within the packet and smaller than the actual packet size, don'...
+         Original commit message from CVS:
+         * gst/asfdemux/asfpacket.c: (gst_asf_demux_parse_payload),
+         (gst_asf_demux_parse_packet):
+         If packet size is specified within the packet and smaller than
+         the actual packet size, don't parse beyond the size specified in
+         the packet (this makes us parse some cases of packets with single
+         compressed payloads cleanly, see e.g stream from #431318). Also
+         add a sanity check when parsing compressed single payloads.
+
+2007-05-01 09:19:13 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Seeking improvements: honour the KEY_UNIT seek flag; after a seek, only send data from the keyframe ri...
+         Original commit message from CVS:
+         * gst/asfdemux/asfpacket.c: (gst_asf_payload_queue_for_stream):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_seek_index_lookup),
+         (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_push_complete_payloads):
+         Seeking improvements: honour the KEY_UNIT seek flag; after a seek, only
+         send data from the keyframe right before the new segment start to
+         make sure the decoder doesn't have to decode more than absolutely
+         necessary.
+
+2007-04-30 15:36:00 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Implement payload extension system/extended replicated data parsing, so we can extract payload duratio...
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.c:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/asfpacket.c:
+         (asf_payload_parse_replicated_data_extensions),
+         (gst_asf_demux_parse_payload):
+         * gst/asfdemux/asfpacket.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_free_stream),
+         (gst_asf_demux_push_complete_payloads),
+         (gst_asf_demux_process_ext_stream_props):
+         * gst/asfdemux/gstasfdemux.h:
+         Implement payload extension system/extended replicated data parsing,
+         so we can extract payload durations if they're specified.
+
+2007-04-30 11:41:22 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Refactor stream parse/activation a bit (stream activation heuristics are still the same though); some ...
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_free_stream),
+         (gst_asf_demux_reset), (gst_asf_demux_parse_data_object_start),
+         (gst_asf_demux_loop), (gst_asf_demux_setup_pad),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_activate_stream),
+         (gst_asf_demux_parse_stream_object),
+         (gst_asf_demux_process_ext_stream_props),
+         (gst_asf_demux_process_queued_extended_stream_objects),
+         (gst_asf_demux_activate_ext_props_streams),
+         (gst_asf_demux_process_object):
+         * gst/asfdemux/gstasfdemux.h:
+         Refactor stream parse/activation a bit (stream activation heuristics
+         are still the same though); some more clean-ups.
+
+2007-04-28 12:23:16 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         win32/common/.cvsignore: Ignore generated config.h file to make build bot happy.
+         Original commit message from CVS:
+         * win32/common/.cvsignore:
+         Ignore generated config.h file to make build bot happy.
+
+2007-04-28 10:49:17 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Init debug category before using it.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init):
+         * gst/asfdemux/gstasfdemux.h:
+         Init debug category before using it.
+
+2007-04-27 18:39:21 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Fix silly bug when we can't pull as much data as we want; don't forget to announce pendin...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_pull_data),
+         (gst_asf_demux_push_complete_payloads), (gst_asf_demux_loop):
+         Fix silly bug when we can't pull as much data as we want; don't
+         forget to announce pending tags in the new packet parsing code.
+
+2007-04-25 17:23:33 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Generate a win32 config.h into win32/common and add to MANIFEST so it gets disted (#393890). Looks like win32/common/...
+         Original commit message from CVS:
+         * configure.ac:
+         * win32/MANIFEST:
+         Generate a win32 config.h into win32/common and add to MANIFEST so
+         it gets disted (#393890). Looks like win32/common/config.h.in needs
+         some work though.
+
+2007-04-22 22:41:20 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/amrnb/amrnbparse.c: Fix pull mode operation some more: send newsegment event before sending data; handle EOS and ...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_get_type),
+         (gst_amrnbparse_class_init), (gst_amrnbparse_init),
+         (gst_amrnbparse_pull_header), (gst_amrnbparse_loop):
+         Fix pull mode operation some more: send newsegment event before
+         sending data; handle EOS and fatal flow returns a bit better; don't
+         leak buffers in some cases. Misc. minor cleanups. Fixes #431707.
+
+2007-04-20 20:57:56 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: New packet parsing code: should put halfway decent timestamps on buffers, and might even set the appro...
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         * gst/asfdemux/asfpacket.c: (asf_packet_read_varlen_int),
+         (asf_packet_create_payload_buffer),
+         (asf_payload_find_previous_fragment),
+         (gst_asf_payload_queue_for_stream), (gst_asf_demux_parse_payload),
+         (gst_asf_demux_parse_packet):
+         * gst/asfdemux/asfpacket.h:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_reset_stream_state_after_discont),
+         (gst_asf_demux_push_complete_payloads), (gst_asf_demux_loop),
+         (gst_asf_demux_setup_pad), (gst_asf_demux_descramble_buffer),
+         (gst_asf_demux_process_chunk):
+         * gst/asfdemux/gstasfdemux.h:
+         New packet parsing code: should put halfway decent timestamps on
+         buffers, and might even set the appropriate keyframe/discont buffer
+         flags from time to time (and even if it doesn't, I'm at least able
+         to debug this code); only used in pull-mode so far. Still needs
+         some more work, like payload extensions parsing and proper flow
+         aggregation, and stream activation based on preroll. Stay tuned.
+
+2007-04-20 17:32:00 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Some clean-ups and small fixes: rename asf_stream_context structure to
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_free_stream),
+         (gst_asf_demux_seek_index_lookup),
+         (gst_asf_demux_handle_seek_event), (gst_asf_demux_get_stream),
+         (gst_asf_demux_setup_pad), (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_ext_content_desc),
+         (gst_asf_demux_process_file), (gst_asf_demux_descramble_segment),
+         (gst_asf_demux_push_buffer), (gst_asf_demux_process_chunk),
+         (gst_asf_demux_process_segment), (gst_asf_demux_handle_data):
+         * gst/asfdemux/gstasfdemux.h:
+         Some clean-ups and small fixes: rename asf_stream_context structure to
+         AsfStream; inline some three-line utility functions that are only used
+         once anyway and get rid of their associated helper structs; make debug
+         category global so that it is used by the debug statements in the other
+         file as well; simplify gst_asf_demux_get_stream(); fix accidental
+         implicit initialisation of stream->last_buffer_timestamp to 0, which
+         would lead to missing timestamps on the first buffer; put fourcc format
+         into video caps to make certain proprietary wmv decoders happy (for the
+         case of WMVA in particular); play_time is offset by preroll as well, so
+         fix overreporting of duration for some files.
+
+2007-04-17 10:21:50 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Printf format fixes.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_pull_indices):
+         Printf format fixes.
+
+2007-04-16 16:30:50 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegparse.c: Post an error message if EOS wasn't handled by anything downstream.
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
+         (gst_mpeg_parse_send_event):
+         Post an error message if EOS wasn't handled by anything downstream.
+         This should fix playbin freezing/hanging with small VobSub subtitle
+         files (background: not-linked flow returns from downstream are
+         ignored for a while at the beginning, so if the file is small
+         upstream will never get a not-linked flow return even if nothing
+         is connected downstream). (#429960).
+
+2007-04-16 15:15:07 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/amrnb/amrnbparse.c: Rewrite terminally broken sinkpad activation code. and push mode activation doesn't leave the...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+         (gst_amrnbparse_sink_activate),
+         (gst_amrnbparse_sink_activate_pull):
+         Rewrite terminally broken sinkpad activation code.
+         Now actually supports pull-mode activation (didn't before), and push
+         mode activation doesn't leave the sinkpad flushing.
+
+2007-04-12 13:38:03 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Make asfdemux work in pull mode where possible. If there's an index at the end of the file, read it an...
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.c:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_free_stream),
+         (gst_asf_demux_reset), (gst_asf_demux_init),
+         (gst_asf_demux_activate), (gst_asf_demux_activate_push),
+         (gst_asf_demux_activate_pull), (gst_asf_demux_sink_event),
+         (gst_asf_demux_seek_index_lookup),
+         (gst_asf_demux_reset_stream_state_after_discont),
+         (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_handle_src_event), (gst_asf_demux_chain_headers),
+         (gst_asf_demux_chain), (gst_asf_demux_pull_data),
+         (gst_asf_demux_pull_indices),
+         (gst_asf_demux_parse_data_object_start),
+         (gst_asf_demux_pull_headers), (gst_asf_demux_loop),
+         (gst_asf_demux_setup_pad), (gst_asf_demux_process_file),
+         (gst_asf_demux_process_simple_index),
+         (gst_asf_demux_process_object),
+         (gst_asf_demux_send_event_unlocked), (gst_asf_demux_push_buffer),
+         (gst_asf_demux_handle_data), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Make asfdemux work in pull mode where possible. If there's an index
+         at the end of the file, read it and use it for seeking purposes.
+
+2007-04-12 10:19:18 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/synaesthesia/gstsynaesthesia.c: Some timestamp fixes.
+         Original commit message from CVS:
+         * gst/synaesthesia/gstsynaesthesia.c: (gst_synaesthesia_init),
+         (gst_synaesthesia_sink_setcaps), (gst_synaesthesia_src_setcaps),
+         (gst_synaesthesia_chain), (gst_synaesthesia_change_state):
+         Some timestamp fixes.
+         * gst/synaesthesia/synaescope.c: (synaescope_coreGo):
+         Fix for 64-bit machines.
+
+2007-04-12 10:10:22 +0000  René Stadler <mail@renestadler.de>
+
+         gst/realmedia/rmdemux.*: Make rmdemux handle any number of logical streams. Fixes #428698.
+         Original commit message from CVS:
+         Patch by: René Stadler <mail at renestadler dot de>
+         * gst/realmedia/rmdemux.c: (find_seek_offset_bytes),
+         (find_seek_offset_time), (gst_rmdemux_reset),
+         (gst_rmdemux_get_stream_by_id), (gst_rmdemux_send_event),
+         (gst_rmdemux_add_stream), (gst_rmdemux_combine_flows):
+         * gst/realmedia/rmdemux.h:
+         Make rmdemux handle any number of logical streams. Fixes #428698.
+
+2007-04-05 13:48:52 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * po/nl.po:
+         update dutch
+         Original commit message from CVS:
+         update dutch
+
+2007-04-05 13:48:12 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Added Danish translation.
+         Original commit message from CVS:
+         submitted by: Mogens Jaeger <mogens@jaeger.tf>
+         * po/LINGUAS:
+         * po/da.po:
+         Added Danish translation.
+
+2007-03-28 16:01:06 +0000  Zaheer Abbas Merali <zaheerabbas@merali.org>
+
+         po/.cvsignore: Add pot.
+         Original commit message from CVS:
+         * po/.cvsignore:
+         Add pot.
+
+2007-03-27 12:02:49 +0000  Julien Moutte <julien@moutte.net>
+
+         ext/mad/gstmad.c: Generate a perfect stream and try to adapt to incoming timestamps lack of precision up to half a fr...
+         Original commit message from CVS:
+         2007-03-27  Julien MOUTTE  <julien@moutte.net>
+         * ext/mad/gstmad.c: (gst_mad_chain): Generate a perfect
+         stream and try to adapt to incoming timestamps lack of
+         precision up to half a frame. This allows generating
+         a perfect stream even with muxed formats like FLV where
+         the timestamps are stored in milliseconds.
+
+2007-03-22 21:44:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Remove unused zlib.h include. Fixes #421594.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c:
+         Remove unused zlib.h include. Fixes #421594.
+
+2007-03-21 12:53:57 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/lame/gstlame.c: Disable the bitrate checking when the user has requested
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_setup):
+         Disable the bitrate checking when the user has requested
+         Free Format mode, as all bitrates less than the maximum
+         are valid then.
+
+2007-03-14 15:21:41 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         po/: Update translations.
+         Original commit message from CVS:
+         * po/hu.po:
+         * po/it.po:
+         * po/sv.po:
+         Update translations.
+
+2007-03-12 17:26:13 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mad/gstmad.c: When handling seeks, don't convert -1 start or stop values to a bogus byte position - pass them ups...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_convert_sink), (gst_mad_convert_src):
+         When handling seeks, don't convert -1 start or stop values to a bogus
+         byte position - pass them upstream as -1.
+
+2007-03-12 10:47:01 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Implement seeking via average bitrate, and position+duration querying in mp3p...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mp3_type_frame_length_from_header), (gst_mp3parse_reset),
+         (gst_mp3parse_init), (gst_mp3parse_sink_event),
+         (gst_mp3parse_emit_frame), (gst_mp3parse_chain),
+         (gst_mp3parse_change_state), (mp3parse_time_to_bytepos),
+         (mp3parse_bytepos_to_time), (mp3parse_total_bytes),
+         (mp3parse_total_time), (mp3parse_handle_seek),
+         (mp3parse_src_event), (mp3parse_src_query),
+         (mp3parse_get_query_types), (plugin_init):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Implement seeking via average bitrate, and position+duration
+         querying in mp3parse. Later, it will support frame-accurate seeking by
+         building a seek table as it parses.
+         Add 'parsed=false' to the sink pad caps, and 'parsed=true' to the src
+         pad caps. Bump the priority to PRIMARY+1 so that it is autoplugged
+         before any extant MP3 decoder plugin. This allows us to remove framing
+         support from the decoders, if we want, and will provide them with
+         accurate seeking automatically once it is finished.
+         Fix the handling of MPEG-1 Layer 1 files.
+         Partially fix timestamping of packets arriving from a demuxer by
+         queueing the incoming timestamp until the next packet starts, rather
+         than applying it immediately to the next pushed buffer.
+
+2007-03-10 15:56:26 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Printf format fix.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_header_ext):
+         Printf format fix.
+
+2007-03-04 17:13:19 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/cdio/gstcdiocddasrc.c: Make sure we always destroy our libcdio handle.
+         Original commit message from CVS:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open),
+         (gst_cdio_cdda_src_finalize):
+         Make sure we always destroy our libcdio handle.
+
+2007-03-02 16:08:17 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/cdio/gstcdiocddasrc.c: Small code cleanups.
+         Original commit message from CVS:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_probe_devices),
+         (gst_cdio_cdda_src_read_sector), (gst_cdio_cdda_src_open),
+         (gst_cdio_cdda_src_finalize):
+         Small code cleanups.
+         Don't use pad_alloc as the base class cannot deal with the error codes.
+
+2007-03-02 13:01:48 +0000  Zaheer Abbas Merali <zaheermerali@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Never post a (fatal) error message on the bus on decoding errors. We should only do this ...
+         Original commit message from CVS:
+         Patch by: Zaheer Abbas Merali  <zaheermerali at gmail com>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_chain):
+         Never post a (fatal) error message on the bus on decoding errors. We
+         should only do this if we can't recover, but mpeg2dec can always
+         recover. This is needed for DVB streams, for example, where there
+         may be temporary glitches in the stream. Instead of an error
+         message, post a warning message on the bus for every N decoding
+         errors. Fixes #370020.
+
+2007-02-28 19:30:35 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         configure.ac: Convert to new AG_GST style.
+         Original commit message from CVS:
+         * configure.ac:
+         Convert to new AG_GST style.
+
+2007-02-28 18:41:38 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/lame/gstlame.c: Display sensible defaults and limits for the vbr-min/max/mean properties. Fix the 'hard-limit' VB...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_class_init), (gst_lame_init),
+         (gst_lame_setup):
+         Display sensible defaults and limits for the
+         vbr-min/max/mean properties. Fix the 'hard-limit' VBR min
+         property - it's supposed to be a boolean 0/1 value.
+
+2007-02-28 16:01:08 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/lame/gstlame.c: Initialise the variables so gcc doesn't complain about possibly uninitialised uses, even though t...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c:
+         Initialise the variables so gcc doesn't complain about possibly
+         uninitialised uses, even though they can't actually happen.
+
+2007-02-28 15:52:23 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.*: Implement all sample rates.
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcm_reset),
+         (update_timestamps), (parse_header), (gst_dvdlpcmdec_chain_dvd),
+         (gst_dvdlpcmdec_chain_raw), (dvdlpcmdec_sink_event):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         Implement all sample rates.
+         Implement sample permutation a little smarter avoiding a memcpy.
+         Fix timestamps, use segments, fix seeking.
+
+2007-02-28 15:49:35 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         Document siddec.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         * ext/sidplay/gstsiddec.cc:
+         * ext/sidplay/gstsiddec.h:
+         Document siddec.
+
+2007-02-21 16:02:33 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         ext/lame/gstlame.c: Fix up bitrate checking macro.  Make it give us a
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps),
+         (gst_lame_set_property), (gst_lame_setup):
+         Fix up bitrate checking macro.  Make it give us a
+         GST_ELEMENT_WARNING message so the application has a chance of
+         reporting this to the user.  Move the checking to _setup, so we
+         are sure it runs in the READY state, when we hope to have a pipeline
+         and a bus that is not flushing.
+         This fixes e.g. using 96 kbit/sec as a bitrate.
+
+2007-02-15 19:55:55 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.*: Parse advanced mutual exclusion object and only add pads for 'hidden' streams (those in a...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_file),
+         (gst_asf_demux_process_advanced_mutual_exclusion),
+         (gst_asf_demux_process_queued_extended_stream_objects),
+         (gst_asf_demux_process_object), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Parse advanced mutual exclusion object and only add pads for
+         'hidden' streams (those in an extended stream header) that are
+         mutually exclusive with an already existing 'main stream' if
+         the broadcasting flag is not set. If the broadcasting flag is set,
+         assume that data for this stream isn't sent. (This should ideally be
+         solved better by making playbin more robust against this and/or by
+         making mmssrc send some information downstream about which streams
+         will be streamed). Fixes #353116.
+
+2007-02-13 12:00:59 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/synaesthesia/: Move all the mutable engine state into a structure so that multiple element instances can run with...
+         Original commit message from CVS:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         (gst_synaesthesia_class_init), (gst_synaesthesia_init),
+         (gst_synaesthesia_finalize), (gst_synaesthesia_chain):
+         * gst/synaesthesia/synaescope.c: (synaescope_coreGo),
+         (synaescope32), (synaescope_set_data), (synaesthesia_update),
+         (synaesthesia_init), (synaesthesia_new), (synaesthesia_close):
+         * gst/synaesthesia/synaescope.h:
+         Move all the mutable engine state into a structure so that
+         multiple element instances can run without interfering.
+
+2007-02-13 09:15:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Add crossreferences to glib/gobject/gstream docs.
+         Original commit message from CVS:
+         * configure.ac:
+         * docs/plugins/Makefile.am:
+         Add crossreferences to glib/gobject/gstream docs.
+
+2007-02-12 12:46:20 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/synaesthesia/: More source cleanups and add FIXME comments.
+         Original commit message from CVS:
+         * gst/synaesthesia/gstsynaesthesia.c: (gst_synaesthesia_init),
+         (gst_synaesthesia_sink_setcaps), (gst_synaesthesia_src_getcaps),
+         (gst_synaesthesia_src_setcaps), (gst_synaesthesia_chain),
+         (plugin_init):
+         * gst/synaesthesia/synaescope.c: (synaescope_coreGo),
+         (synaescope8):
+         More source cleanups and add FIXME comments.
+
+2007-02-11 13:42:45 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         gst/realmedia/rmdemux.c: Use gst_guint64_to_gdouble for conversions.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c:(gst_rmdemux_parse_indx_data):
+         Use gst_guint64_to_gdouble for conversions.
+         * gst/synaesthesia/synaescope.c:
+         Define M_PI and do not include <pthread.h> and
+         <sys/time.h> for G_OS_WIN32
+         * win32/vs6/libgstrealmedia.dsp:
+         * win32/vs6/synaesthesia.dsp:
+         Update projects files.
+         * win32/common/config.h.in:
+         Add config.h.in for autogen of config.h
+
+2007-02-11 10:51:42 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: Add --enable-experimental support. Activate synaesthesia when building with --enable-experimental. Fix ...
+         Original commit message from CVS:
+         * configure.ac:
+         Add --enable-experimental support. Activate synaesthesia when building
+         with --enable-experimental. Fix --enable external configure switch
+         description.
+
+2007-02-09 16:24:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.*: On receiving EOS, we try to push a last buffer with the remaining samples. Don't do that if we go...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_event), (gst_lame_chain),
+         (gst_lame_change_state):
+         * ext/lame/gstlame.h:
+         On receiving EOS, we try to push a last buffer with the remaining
+         samples. Don't do that if we got an unclean flow return on the last
+         gst_pad_push(), downstream might not handle this very gracefully
+         (see #403168).
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+         Pass flow returns upstream (helps #403168).
+
+2007-02-09 08:03:09 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/synaesthesia/gstsynaesthesia.c: check result of gst_pad_push() in _chain.
+         Original commit message from CVS:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         (gst_synaesthesia_class_init), (gst_synaesthesia_init),
+         (gst_synaesthesia_sink_setcaps), (gst_synaesthesia_src_getcaps),
+         (gst_synaesthesia_chain), (plugin_init):
+         check result of gst_pad_push() in _chain.
+
+2007-02-09 07:48:50 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/synaesthesia/: Added docs (not yet added to gst-plugins-ugl/docs/plugins as plugin is not built by default). Fixe...
+         Original commit message from CVS:
+         * gst/synaesthesia/Makefile.am:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         (gst_synaesthesia_class_init), (gst_synaesthesia_init),
+         (gst_synaesthesia_sink_setcaps), (gst_synaesthesia_src_getcaps),
+         (gst_synaesthesia_chain), (plugin_init):
+         * gst/synaesthesia/synaescope.c:
+         * gst/synaesthesia/synaescope.h:
+         Added docs (not yet added to gst-plugins-ugl/docs/plugins as plugin is not
+         built by default). Fixed Makefile.am. Fixed license headers (its GPL as it
+         is derived from GPL code). Fixed GST_SYNAESTHESIA_CLASS macro. Added
+         GST_DEBUG_FUNCPTR. Reflowed _setcaps. Updated pad setup in _init. Fix
+         possible leak in _chain. (#356882)
+
+2007-02-08 21:07:27 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Refactor and clean up header parsing and chain function a bit; get rid of some cruft; make header pars...
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.c:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
+         (gst_asf_demux_sink_event), (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_identify_guid), (asf_demux_peek_object),
+         (gst_asf_demux_chain_headers), (gst_asf_demux_chain),
+         (gst_asf_demux_setup_pad), (gst_asf_demux_process_stream),
+         (gst_asf_demux_process_ext_content_desc),
+         (gst_asf_demux_get_object_header), (gst_asf_demux_process_header),
+         (gst_asf_demux_process_file), (gst_asf_demux_process_comment),
+         (gst_asf_demux_process_bitrate_props_object),
+         (gst_asf_demux_process_header_ext),
+         (gst_asf_demux_process_language_list),
+         (gst_asf_demux_process_ext_stream_props),
+         (gst_asf_demux_process_queued_extended_stream_objects),
+         (gst_asf_demux_process_object), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Refactor and clean up header parsing and chain function a bit; get
+         rid of some cruft; make header parsing a tad more robust, fixing
+         #403188.
+
+2007-02-01 11:12:25 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Post an error if we receive an EOS event while still waiting for the
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_sink_event):
+         Post an error if we receive an EOS event while still waiting for the
+         ASF header object to come through.
+
+2007-01-24 17:36:36 +0000  Xavier B <xavierb@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Guard places where we assume that a certain amount of data is available better against le...
+         Original commit message from CVS:
+         Patch by: Xavier B. <xavierb gmail com>
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_guid),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_ext_content_desc),
+         (gst_asf_demux_process_data),
+         (gst_asf_demux_process_language_list),
+         (gst_asf_demux_process_ext_stream_props),
+         (gst_asf_demux_process_segment), (gst_asf_demux_handle_data):
+         Guard places where we assume that a certain amount of data is
+         available better against less data being available (should fix
+         infamous assertion crasher bug #336370). Also fixes a small
+         memory leak.
+
+2007-01-11 12:49:23 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/: Add demuxer for RealAudio files (#349779).
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rademux.c:
+         * gst/realmedia/rademux.h:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_descramble_dnet_audio), (gst_rmdemux_plugin_init):
+         * gst/realmedia/rmutils.c: (gst_rm_utils_descramble_dnet_buffer):
+         * gst/realmedia/rmutils.h:
+         Add demuxer for RealAudio files (#349779).
+
+2007-01-07 13:37:19 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         Makefile.am: Add win32/MANIFEST to EXTRA_DIST so win32 files will be include in the next release.
+         Original commit message from CVS:
+         * Makefile.am:
+         Add win32/MANIFEST to EXTRA_DIST so win32 files will
+         be include in the next release.
+         * win32/MANIFEST:
+         Remove win32/common/config.h is which is not autogenerated yet.
+
+2006-12-30 20:01:35 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         ext/lame/gstlame.c: warn when outgoing sample rate is different from incoming
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps), (gst_lame_chain):
+         warn when outgoing sample rate is different from incoming
+
+2006-12-29 14:51:19 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: All sample-rates < 32khz come from the LSF extensions, which only use 1 granu...
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+         All sample-rates < 32khz come from the LSF extensions, which only
+         use 1 granule. Fixes parsing of 22.05khz, 24khz and 16khz files.
+         Use gst_util_uint64_scale because we can.
+
+2006-12-22 13:06:24 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         tests/check/elements/amrnbenc.c: and fix compilation of this test
+         Original commit message from CVS:
+         * tests/check/elements/amrnbenc.c: (setup_amrnbenc),
+         (cleanup_amrnbenc):
+         and fix compilation of this test
+
+2006-12-22 12:41:52 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         tests/check/elements/: re-apply as it was -bad and not -ugly that is frozen, doh
+         Original commit message from CVS:
+         * tests/check/elements/amrnbenc.c: (setup_amrnbenc),
+         (cleanup_amrnbenc):
+         * tests/check/elements/mpeg2dec.c: (setup_mpeg2dec),
+         (cleanup_mpeg2dec):
+         re-apply as it was -bad and not -ugly that is frozen, doh
+
+2006-12-21 12:50:00 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         tests/check/elements/: revert my freeze breakage
+         Original commit message from CVS:
+         * tests/check/elements/amrnbenc.c: (setup_amrnbenc),
+         (cleanup_amrnbenc):
+         * tests/check/elements/mpeg2dec.c: (setup_mpeg2dec),
+         (cleanup_mpeg2dec):
+         revert my freeze breakage
+
+2006-12-21 08:16:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfdemux.c: add a comment about a future change
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_get_gst_tag_from_tag_name),
+         (gst_asf_demux_process_ext_content_desc):
+         add a comment about a future change
+         * tests/check/elements/amrnbenc.c: (setup_amrnbenc),
+         (cleanup_amrnbenc):
+         * tests/check/elements/mpeg2dec.c: (setup_mpeg2dec),
+         (cleanup_mpeg2dec):
+         consistent pad (de)activation
+
+2006-12-15 18:26:41 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Update query_types function too.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_src_query_types):
+         Update query_types function too.
+
+2006-12-15 18:25:17 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Implement SEEKING query, make query function thread-safe.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_src_query),
+         (gst_rmdemux_src_query_types):
+         Implement SEEKING query, make query function thread-safe.
+
+2006-12-15 17:59:47 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Use alignment-safe macros here too (subbuffers ...); guard against hypothetical memory acces...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_descramble_dnet_audio):
+         Use alignment-safe macros here too (subbuffers ...); guard against
+         hypothetical memory access beyond our given buffer in the case
+         where the buffer size is not a multiple of 2.
+
+2006-12-15 17:54:48 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.*: Don't crash in the seek event handling code when playtime is 0, as may be the case with l...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_process_data), (gst_asf_demux_process_file),
+         (gst_asf_demux_handle_src_query), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Don't crash in the seek event handling code when playtime is 0,
+         as may be the case with live streams (#386218). Implement SEEKING
+         query so applications can query seekability without second-guessing
+         based on whether we have a duration or not.
+
+2006-12-15 11:12:21 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         add doap file
+         Original commit message from CVS:
+         * Makefile.am:
+         * gst-plugins-ugly.doap:
+         * gst-plugins-ugly.spec.in:
+         add doap file
+
+2006-12-14 12:05:49 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegparse.c: Use our alignment-safe macros here too, since we can't assume that
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
+         Use our alignment-safe macros here too, since we can't assume that
+         GST_BUFFER_DATA is aligned (these are subbuffers we're dealing with
+         here).
+
+2006-12-14 11:49:39 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Also, don't read the index for a stream a second time when operating in pull-mode and reachi...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_indx_data):
+         Also, don't read the index for a stream a second time when
+         operating in pull-mode and reaching the end of the file.
+
+2006-12-14 11:25:00 +0000  Roland Kay <roland.kay@ox.compsoc.net>
+
+         gst/realmedia/rmdemux.c: Don't leak stream index (#385292).
+         Original commit message from CVS:
+         Patch by: Roland Kay  <roland.kay at ox compsoc net>
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_reset):
+         Don't leak stream index (#385292).
+
+2006-12-14 10:15:24 +0000  Roland Kay <roland.kay@ox.compsoc.net>
+
+         ext/lame/gstlame.*: Fix leak (by calling lame_init_params() before lame_close()); handle
+         Original commit message from CVS:
+         Based on patch by: Roland Kay  <roland.kay at ox compsoc net>
+         * ext/lame/gstlame.c: (gst_lame_init), (gst_lame_chain),
+         (gst_lame_setup):
+         * ext/lame/gstlame.h:
+         Fix leak (by calling lame_init_params() before lame_close()); handle
+         NULL return from lame_init() more gracefully. Fixes #385311.
+
+2006-12-14 09:57:12 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Back to CVS
+         Original commit message from CVS:
+         * configure.ac:
+         Back to CVS
+
+=== release 0.10.5 ===
+
+2006-12-13 21:04:12 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+         Release 0.10.5
+         Original commit message from CVS:
+         Release 0.10.5
+
+2006-12-12 21:09:16 +0000  David Schleef <ds@schleef.org>
+
+         gst/mpegstream/gstmpegparse.c: Use the GST_READ macro I meant to in the previous checkin.  see #385192.  You can have...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: Use the GST_READ macro I meant
+         to in the previous checkin.  see #385192.  You can have your
+         cheese back now.
+
+2006-12-12 20:56:58 +0000  David Schleef <ds@schleef.org>
+
+         gst/mpegstream/gstmpegparse.c: Fix unaligned load that loads from the dereferenced integer, not the pointer itself.  ...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: Fix unaligned load that loads
+         from the dereferenced integer, not the pointer itself.  Fixes
+         #385192.
+         I'm takin ur cheese!
+
+2006-12-12 10:29:32 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+       * ChangeLog:
+         ChangeLog surgery: fix bug number
+         Original commit message from CVS:
+         ChangeLog surgery: fix bug number
+
+2006-12-12 10:24:40 +0000  Roland Kay <roland.kay@ox.compsoc.net>
+
+         gst/realmedia/rmdemux.c: For version 4 streams, read the extra codec data size from the header instead of assuming it...
+         Original commit message from CVS:
+         Based on patch by: Roland Kay  <roland.kay at ox compsoc net>
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr):
+         For version 4 streams, read the extra codec data size from the
+         header instead of assuming it is always 16 (also read it from the
+         right position) (#384989). For version 4 and 5 streams, check that
+         the specified extra codec data size doesn't make us read beyond the
+         chunk boundary (#384989).
+
+2006-12-10 21:27:03 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2006-11-21 12:33:25 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Cosmetic changes: fix misleading debug statement, update comment, add cast.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_sized_buf):
+         Cosmetic changes: fix misleading debug statement, update
+         comment, add cast.
+
+2006-11-21 12:15:58 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Align buffers to a 16 byte boundary so the altivec optimisations don't crash. Fixes #327350.
+         Original commit message from CVS:
+         Patch by: Sebastian Dröge  <slomo@circular-chaos.org>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+         (gst_mpeg2dec_reset), (gst_mpeg2dec_alloc_sized_buf),
+         (gst_mpeg2dec_alloc_buffer), (init_dummybuf), (handle_slice):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Align buffers to a 16 byte boundary so the altivec optimisations
+         don't crash. Fixes #327350.
+
+2006-11-20 15:52:42 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: The availability of extra codec data isn't something that warrants debug messages at WARN...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_audio_stream):
+         The availability of extra codec data isn't something that
+         warrants debug messages at WARNING level (see #376958).
+
+2006-11-19 13:08:30 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Fix flow value combination; this fixes playbin/totem locking up if a VobSub file is specified as sub...
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
+         (gst_dvd_demux_class_init), (gst_dvd_demux_combine_flows),
+         (gst_dvd_demux_send_subbuffer):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
+         (gst_mpeg_demux_init_stream), (gst_mpeg_demux_parse_packet),
+         (gst_mpeg_demux_parse_pes), (gst_mpeg_demux_combine_flows),
+         (gst_mpeg_demux_send_subbuffer):
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
+         (gst_mpeg_parse_chain):
+         Fix flow value combination; this fixes playbin/totem locking up if
+         a VobSub file is specified as subtitle file (#334322). Flow value
+         combination should only happen once we are fairly sure we've got all
+         pads that are available for now. Since there isn't a well-specified
+         time when this is the case in MPEG, we'll just assume this is the
+         case once there has been a certain number of packets for each
+         stream we've found so far.
+
+2006-11-15 13:57:21 +0000  Jan Arne Petersen <jpetersen@jpetersen.org>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Simplify the framerate code and support more framerates. Fixes #361584.
+         Original commit message from CVS:
+         Patch by: Jan Arne Petersen <jpetersen at jpetersen dot org>
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence), (handle_slice):
+         Simplify the framerate code and support more framerates. Fixes #361584.
+
+2006-11-15 11:41:39 +0000  Sebastian Dröge <slomo@circular-chaos.org>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Fix minor memleak when creating pads from static pad templates (#369627).
+         Original commit message from CVS:
+         Patch by: Sebastian Dröge  <slomo@circular-chaos.org>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init):
+         Fix minor memleak when creating pads from static pad templates (#369627).
+         * tests/check/Makefile.am:
+         * tests/check/elements/.cvsignore:
+         * tests/check/elements/mpeg2dec.c: (setup_mpeg2dec),
+         (cleanup_mpeg2dec), (GST_START_TEST), (mpeg2dec_suite), (main):
+         Add unit tests for mpeg2dec (#369627).
+
+2006-11-14 10:31:11 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+       * ChangeLog:
+         give credit
+         Original commit message from CVS:
+         give credit
+
+2006-11-14 10:29:37 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/lame/gstlame.*: Make lame timestamp flushed eos buffer by some additional timestamp accounting. Fixes #374760.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_event), (gst_lame_chain),
+         (gst_lame_change_state):
+         * ext/lame/gstlame.h:
+         Make lame timestamp flushed eos buffer by some additional timestamp
+         accounting. Fixes #374760.
+
+2006-11-13 17:01:15 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Make timestamp handling in mp3parse saner; now works for at least simple cases.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mp3_type_frame_length_from_header), (gst_mp3parse_reset),
+         (gst_mp3parse_init), (gst_mp3parse_dispose),
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain), (head_check),
+         (gst_mp3parse_change_state):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Make timestamp handling in mp3parse saner; now works for at least
+         simple cases.
+
+2006-11-13 16:23:22 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/mpegaudioparse/: Bring mp3parse into the 21st century.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/Makefile.am:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (mp3_type_frame_length_from_header), (gst_mp3parse_class_init),
+         (gst_mp3parse_reset), (gst_mp3parse_init), (gst_mp3parse_dispose),
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain), (head_check),
+         (gst_mp3parse_change_state), (plugin_init):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Bring mp3parse into the 21st century.
+         Use its own debug category, use gstadapter, format nicely to 80
+         columns, and fix incorrect handling of 32 kHz and less files.
+
+2006-11-03 09:52:12 +0000  Sebastian Droege <slomo@ubuntu.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: libmpeg2 requires its output buffers to start at a 16byte aligned address or the altivec ...
+         Original commit message from CVS:
+         Patch by: Sebastian Droege <slomo at ubuntu dot com>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_finalize),
+         (gst_mpeg2dec_alloc_buffer), (init_dummybuf), (handle_slice):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         libmpeg2 requires its output buffers to start at a 16byte aligned
+         address or the altivec optimizations will explode.
+
+2006-11-02 14:43:11 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/cdio/: Move CD-TEXT utility function into common file so it can also be used by a future cdioparanoiasrc.
+         Original commit message from CVS:
+         * ext/cdio/gstcdio.c: (gst_cdio_get_cdtext):
+         * ext/cdio/gstcdio.h:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open):
+         Move CD-TEXT utility function into common file so it can also be
+         used by a future cdioparanoiasrc.
+
+2006-10-19 10:17:14 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Use dsi_pack.dsi_gi.vobu_ea correctly, add some more debugging information (fixes #340433).
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_read):
+         Use dsi_pack.dsi_gi.vobu_ea correctly, add some more debugging
+         information (fixes #340433).
+
+2006-10-16 18:07:23 +0000  Josep Torra Valles <josep@fluendo.com>
+
+         gst/: Misc. fixes for problems discovered by Forte (different return types in function declaration and definition, po...
+         Original commit message from CVS:
+         Patch by: Josep Torra Valles  <josep at fluendo com>
+         * gst/iec958/ac3_padder.c: (ac3p_init):
+         * gst/mpegstream/gstmpegparse.c:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse__rmf),
+         (gst_rmdemux_parse_prop), (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_parse_indx), (gst_rmdemux_parse_indx_data),
+         (gst_rmdemux_parse_data), (gst_rmdemux_parse_cont),
+         (gst_rmdemux_parse_packet):
+         Misc. fixes for problems discovered by Forte (different return types
+         in function declaration and definition, pointer arithmetics with
+         void pointers). Fixes #362639.
+
+2006-10-13 19:11:26 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Don't announce audio or subtitle streams that aren't really present, it makes dvddemux crea...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_goto_title):
+         Don't announce audio or subtitle streams that aren't really present,
+         it makes dvddemux create pads that will never carry any data, which
+         is not good.
+
+2006-10-13 14:45:11 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: Round up not allowed bitrates to the next higher allowed one (Closes: #361140).
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_set_property):
+         Round up not allowed bitrates to the next higher allowed one
+         (Closes: #361140).
+
+2006-10-13 14:19:24 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Add docs for lame and lame to docs. Specify allowed bitrates in the properties description (#361140). Canonicalise ob...
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-ugly-plugins-sections.txt:
+         * ext/lame/gstlame.c: (gst_lame_class_init):
+         * ext/lame/gstlame.h:
+         Add docs for lame and lame to docs. Specify allowed bitrates
+         in the properties description (#361140). Canonicalise object
+         property names (ie. use hyphen instead of underscore).
+         * docs/plugins/inspect/plugin-a52dec.xml:
+         * docs/plugins/inspect/plugin-amrnb.xml:
+         * docs/plugins/inspect/plugin-asf.xml:
+         * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+         * docs/plugins/inspect/plugin-dvdread.xml:
+         * docs/plugins/inspect/plugin-dvdsub.xml:
+         * docs/plugins/inspect/plugin-iec958.xml:
+         * docs/plugins/inspect/plugin-lame.xml:
+         * docs/plugins/inspect/plugin-mad.xml:
+         * docs/plugins/inspect/plugin-mpeg2dec.xml:
+         * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+         * docs/plugins/inspect/plugin-mpegstream.xml:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         Update version to CVS.
+
+2006-10-13 10:00:27 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Add i18n magic to lame plugin. Throw decent error message when we fail to setup the encoder (#361140, 361151); misc. ...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_setcaps),
+         (gst_lame_set_property), (gst_lame_get_property), (gst_lame_chain),
+         (plugin_init):
+         * po/POTFILES.in:
+         Add i18n magic to lame plugin. Throw decent error message when we
+         fail to setup the encoder (#361140, 361151); misc. minor clean-ups.
+
+2006-10-10 17:02:05 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rdtdepay.c: Change caps to x-rdt, because it's not x-rtp.
+         Original commit message from CVS:
+         * gst/realmedia/rdtdepay.c: (gst_rdt_depay_base_init),
+         (gst_rdt_depay_init), (gst_rdt_depay_setcaps),
+         (gst_rdt_depay_chain), (gst_rdt_depay_change_state):
+         Change caps to x-rdt, because it's not x-rtp.
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_packet),
+         (gst_rmdemux_plugin_init):
+         Activate pad before adding to the element.
+         Return the combined stream return values after pad_alloc.
+
+2006-10-10 16:58:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Add some debugging to timestamp handling.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_slice):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Add some debugging to timestamp handling.
+         Make sure we don't convert invalid timestamps.
+
+2006-10-09 12:09:14 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/: Active pads before adding them to the running element. Don't assert on non-BYTE format newsegment events in asf...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_sink_event),
+         (gst_asf_demux_setup_pad), (gst_asf_demux_process_segment):
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_audio_stream),
+         (gst_dvd_demux_get_subpicture_stream):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
+         (gst_mpeg_demux_get_audio_stream),
+         (gst_mpeg_demux_get_private_stream):
+         Active pads before adding them to the running element. Don't assert
+         on non-BYTE format newsegment events in asfdemux.
+
+2006-10-05 17:07:52 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Printf format fixes.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_goto_title),
+         (gst_dvd_read_src_handle_seek_event):
+         * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         * ext/mad/gstmad.c: (gst_mad_src_query), (gst_mad_chain):
+         * ext/sidplay/gstsiddec.cc:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_parse_data):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_loop),
+         (gst_rmdemux_parse_packet):
+         Printf format fixes.
+
+2006-10-03 10:55:42 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/: Added RDT depayloader.
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rdtdepay.c: (gst_rdt_depay_base_init),
+         (gst_rdt_depay_class_init), (gst_rdt_depay_init),
+         (gst_rdt_depay_setcaps), (gst_rdt_depay_chain),
+         (gst_rdt_depay_set_property), (gst_rdt_depay_get_property),
+         (gst_rdt_depay_change_state), (gst_rdt_depay_plugin_init):
+         * gst/realmedia/rdtdepay.h:
+         Added RDT depayloader.
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_plugin_init), (plugin_init):
+         Remove unused function.
+         Added some more mime-types.
+
+2006-09-28 21:44:49 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.c: If an incoming timestamp is within one sample of our current timestamp, then keep it....
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (update_timestamps):
+         If an incoming timestamp is within one sample of our current
+         timestamp, then keep it. This prevents imprecision in the
+         PTS (which only has 90khz granularity) from affecting our stream.
+
+2006-09-28 09:16:38 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegparse.c: Reflow code so that compiler doesn't complain about possible use of uninitialised vari...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query):
+         Reflow code so that compiler doesn't complain about possible use
+         of uninitialised variable any longer; but just in case, initialise
+         it anyway; also take object ref in query function and do peer pad
+         stuff in a more thread-safe way.
+
+2006-09-27 09:54:01 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/dvdread/dvdreadsrc.c: Init a variable to make compilers happy.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_do_convert_query):
+         Init a variable to make compilers happy.
+
+2006-09-21 13:34:59 +0000  Martin Zlomek <martin.zlomek@itonis.tv>
+
+         gst/mpegstream/: Send newsegment updates for sparse streams (#350778).
+         Original commit message from CVS:
+         Patch by: Martin Zlomek <martin dot zlomek at itonis dot tv>
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_reset),
+         (gst_dvd_demux_sync_stream_to_time):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer),
+         (gst_mpeg_demux_synchronise_pads),
+         (gst_mpeg_demux_sync_stream_to_time):
+         Send newsegment updates for sparse streams (#350778).
+
+2006-09-20 16:18:24 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         ext/dvdread/dvdreadsrc.c: fix compile warning
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_do_convert_query):
+         fix compile warning
+
+2006-09-20 16:16:18 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+         bump the nano bitches
+         Original commit message from CVS:
+         bump the nano bitches
+
+2006-09-20 11:55:00 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: As another attempt, synaesthesia can be enabled by passing
+         Original commit message from CVS:
+         * configure.ac:
+         As another attempt, synaesthesia can be enabled by passing
+         --with-plugins="synaesthesia" to configure
+
+2006-09-20 11:12:22 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: Don't build synaesthesia by default, until someone confirms that it is okay (filed as #356882)
+         Original commit message from CVS:
+         * configure.ac:
+         Don't build synaesthesia by default, until someone confirms that it
+         is okay (filed as #356882)
+
+2006-09-20 11:11:26 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         configure.ac: Don't build synaesthesia by default, until someone confirms that it is okay (filed as #356882)
+         Original commit message from CVS:
+         * configure.ac:
+         Don't build synaesthesia by default, until someone confirms that it
+         is okay (filed as #356882)
+
+2006-09-18 12:29:09 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Port synaesthesia.
+         Original commit message from CVS:
+         * configure.ac:
+         * gst/synaesthesia/Makefile.am:
+         * gst/synaesthesia/gstsynaesthesia.c: (gst_synaesthesia_init),
+         (gst_synaesthesia_sink_setcaps), (gst_synaesthesia_src_getcaps),
+         (gst_synaesthesia_src_setcaps), (gst_synaesthesia_chain),
+         (gst_synaesthesia_change_state), (plugin_init):
+         Port synaesthesia.
+
+2006-09-16 21:58:48 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         More G_OBJECT macro fixing.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c:
+         * gst/mpegstream/gstrfc2250enc.h:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         More G_OBJECT macro fixing.
+
+2006-09-15 16:14:15 +0000  Yves Lefebvre <ivanohe@abacom.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Fix initialisation dummy buffer, the offsets are relative to the start of the buffers. Fi...
+         Original commit message from CVS:
+         Patch by: Yves Lefebvre <ivanohe at abacom dot com>
+         * ext/mpeg2dec/gstmpeg2dec.c: (init_dummybuf):
+         Fix initialisation dummy buffer, the offsets are relative to the start
+         of the buffers. Fixes #356004.
+
+2006-09-12 10:14:29 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         update spec file
+         Original commit message from CVS:
+         update spec file
+
+2006-09-09 15:22:58 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Add convert query (needed for later when we just operate in time format and let the base so...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_read):
+         Add convert query (needed for later when we just operate in time
+         format and let the base source class handle all the seeking stuff).
+
+2006-09-07 16:05:31 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfdemux.c: Erm, lets properly fix it. The only non-text tag that we support is the track-number and ...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_get_gst_tag_from_tag_name),
+         (gst_asf_demux_process_ext_content_desc):
+         Erm, lets properly fix it. The only non-text tag that we support is
+         the track-number and that is an UINT. asfdemux was returning a GValue
+         initialized as INT. Further the Track and not the TrackNumber tag
+         (the latter is a string too).
+
+2006-09-07 14:08:42 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfdemux.c: Skip tags that are unknown (was producing an uninialized GValue).
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_get_gst_tag_from_tag_name),
+         (gst_asf_demux_process_ext_content_desc):
+         Skip tags that are unknown (was producing an uninialized GValue).
+
+2006-09-01 16:21:43 +0000  from Michal Benes <michal.benes@itonis.tv>
+
+         ext/a52dec/gsta52dec.*: Add two things to a52dec: configure the exact output format for ac3 decoding through properti...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_mode_get_type),
+         (gst_a52dec_class_init), (gst_a52dec_init), (gst_a52dec_channels),
+         (gst_a52dec_handle_frame), (gst_a52dec_change_state),
+         (gst_a52dec_set_property), (gst_a52dec_get_property):
+         * ext/a52dec/gsta52dec.h:
+         Patch from from Michal Benes <michal.benes@itonis.tv>:
+         Add two things to a52dec: configure the exact output format for ac3
+         decoding through properties, if desired.
+         By default, configure an output format preferred by downstream. Now
+         that audioconvert lists caps by preference, this means that a52dec
+         can do downmixing (iff required) rather than audioconvert, so it can
+         use the ac3 downmix levels from the bitstream.
+
+2006-08-31 13:04:31 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         Add missing GST_LIBS to the link flags
+         Original commit message from CVS:
+         * ext/lame/Makefile.am:
+         * ext/mpeg2dec/Makefile.am:
+         * gst/dvdlpcmdec/Makefile.am:
+         * gst/dvdsub/Makefile.am:
+         * gst/mpegaudioparse/Makefile.am:
+         Add missing GST_LIBS to the link flags
+
+2006-08-29 13:28:41 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Up requirements to core 0.10.6 for gst_event_new_new_segment_full().
+         Original commit message from CVS:
+         * configure.ac:
+         Up requirements to core 0.10.6 for gst_event_new_new_segment_full().
+
+2006-08-27 20:46:54 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/mpegstream/gstmpegpacketize.c: fix build for debug disabled
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_new):
+         fix build for debug disabled
+
+2006-08-22 15:52:16 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Use static pad templates with ANY caps for the source pads for simplicity and to avoid wa...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream):
+         Use static pad templates with ANY caps for the source pads for
+         simplicity and to avoid warnings when creating pads for unhandled
+         codec IDs (#351795).
+
+2006-08-16 10:34:57 +0000  Michal Benes <michal.benes@itonis.tv>
+
+         ext/mad/gstmad.c: Fix timestamping in mad by only activating a new timestamp when the previous frame has been decoded...
+         Original commit message from CVS:
+         Patch by: Michal Benes <michal dot benes at itonis dot tv>
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Fix timestamping in mad by only activating a new timestamp when the
+         previous frame has been decoded. Fixes #350723.
+         Also clean up some of the non fatal warnings when the input buffer is
+         too small to decode a header.
+
+=== release 0.10.4 ===
+
+2006-08-14 11:15:09 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+       * docs/plugins/inspect/plugin-siddec.xml:
+         releasing 0.10.4
+         Original commit message from CVS:
+         releasing 0.10.4
+
+2006-08-14 11:06:29 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+       * po/vi.po:
+         Update .po files
+         Original commit message from CVS:
+         Update .po files
+
+2006-08-14 10:19:41 +0000  Wim Taymans <wim@fluendo.com>
+
+         ext/a52dec/gsta52dec.c: Instead of forwarding the event in the wrong format, unref it and set a boolean that we still...
+         Original commit message from CVS:
+         Patch by: Wim Taymans <wim at fluendo dot com>
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_sink_event):
+         Instead of forwarding the event in the wrong format, unref it and set
+         a boolean that we still need to send it in the streaming thread.
+         Fixes #350554
+
+2006-08-14 09:50:26 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         ext/dvdread/dvdreadsrc.c: Put debug category initialization before use of GST_DEBUG, in order to remove a fatal warni...
+         Original commit message from CVS:
+         Patch by: Edward Hervey (edward at fluendo dot com)
+         * ext/dvdread/dvdreadsrc.c: (plugin_init):
+         Put debug category initialization before use of GST_DEBUG, in order
+         to remove a fatal warning.  Fixes #350895
+
+2006-08-08 13:23:27 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/dvdsub/gstdvdsubdec.c: Set rank to NONE for the time being until we make playbin handle subtitle pictures again (...
+         Original commit message from CVS:
+         * gst/dvdsub/gstdvdsubdec.c: (plugin_init):
+         Set rank to NONE for the time being until we make playbin handle
+         subtitle pictures again (dvdsubdec seems to be a bit shaky at
+         times when seeking, so it's probably better if it doesn't get
+         autoplugged for the time being).
+
+2006-08-07 19:01:40 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Handle audio streams with stream_version 3 properly; warn about unknown stream versions; han...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_mdpr):
+         Handle audio streams with stream_version 3 properly; warn about
+         unknown stream versions; handle unknown fourccs a tad more
+         gracefully (setting bogus caps). Also, use GST_FOURCC_ARGS
+         with GST_FOURCC_FORMAT.
+
+2006-08-07 16:25:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Error out properly if this is an interactive DVD (fixes #345694).
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_goto_title):
+         Error out properly if this is an interactive DVD (fixes #345694).
+
+2006-08-07 16:18:33 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/a52dec/gsta52dec.c: When the first_access is 1 or 0, we should copy the timestamp from the incoming buffer if the...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_chain):
+         When the first_access is 1 or 0, we should copy the timestamp from
+         the incoming buffer if there is one.
+
+2006-08-07 14:01:33 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/a52dec/gsta52dec.c: Use GST_ELEMENT_ERROR for error reporting; post errors in some more places; remove superfluou...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_channels), (gst_a52dec_push),
+         (gst_a52dec_reneg), (gst_a52dec_handle_frame), (gst_a52dec_chain):
+         Use GST_ELEMENT_ERROR for error reporting; post errors in some
+         more places; remove superfluous newlines from debug statements.
+
+2006-08-07 09:17:01 +0000  Frédéric Riss <frederic.riss@gmail.com>
+
+         gst/dvdsub/gstdvdsubdec.c: which happens when you use macros that got changed during the last unstable cycle because ...
+         Original commit message from CVS:
+         Patch by: Frédéric Riss  <frederic.riss at gmail com>
+         * gst/dvdsub/gstdvdsubdec.c: (gst_send_subtitle_frame):
+         Don't set negative durations on outgoing buffers (#350044),
+         which happens when you use macros that got changed during
+         the last unstable cycle because they were thought not to
+         be used anywhere.
+
+2006-08-06 19:47:40 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.*: Add basic support for time-based seeking; set timestamps on outgoing buffers if we have the...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_stop),
+         (gst_dvd_read_src_goto_chapter),
+         (gst_dvd_read_src_get_chapter_starts),
+         (gst_dvd_read_src_goto_title), (gst_dvd_read_src_get_next_cell),
+         (gst_dvd_read_src_get_time_for_sector),
+         (gst_dvd_read_src_get_sector_from_time), (gst_dvd_read_src_read),
+         (gst_dvd_read_src_handle_seek_event), (gst_dvd_read_src_do_seek),
+         (gst_dvd_read_src_goto_sector):
+         * ext/dvdread/dvdreadsrc.h:
+         Add basic support for time-based seeking; set timestamps on
+         outgoing buffers if we have them; create table with
+         chapter to time mapping when opening a title; rename
+         gst_dvd_read_src_get_next_cell_for() to _get_next_cell() and
+         make it take an explicit pgc argument; fix up some debugging
+         messages so that title/chapter numbers are printed as starting
+         from 1 for easier readability.
+
+2006-08-04 13:05:01 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/: Factor out some code into rmutils.[ch]; when reading strings, don't read beyond the available data; r...
+         Original commit message from CVS:
+         * gst/realmedia/Makefile.am:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_parse_cont):
+         * gst/realmedia/rmutils.c: (gst_rm_utils_read_string8),
+         (gst_rm_utils_read_string16), (gst_rm_utils_read_tags):
+         * gst/realmedia/rmutils.h:
+         Factor out some code into rmutils.[ch]; when reading
+         strings, don't read beyond the available data; read
+         metadata strings correctly (string length is 16 bits
+         here, not just 8).
+
+2006-07-31 09:53:05 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         Fix dist by including gst-libs/
+         Original commit message from CVS:
+         * Makefile.am:
+         * configure.ac:
+         * gst/asfdemux/gstasfdemux.c:
+         Fix dist by including gst-libs/
+
+2006-07-29 11:20:30 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Make custom error messages translatable.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (plugin_init):
+         * po/POTFILES.in:
+         Make custom error messages translatable.
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         Remove setlocale() call, doesn't seem to be needed or recommended for
+         plugins, at least not according to gstreamer/docs/random/i18n.
+
+2006-07-28 15:15:15 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Error out when the stream is encrypted (rather than feeding garbage to the decoders). Fixes #349025.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         * gst/asfdemux/asfheaders.c:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_object):
+         Error out when the stream is encrypted (rather than feeding
+         garbage to the decoders). Fixes #349025.
+
+2006-07-28 15:11:42 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Add/enable autofoo magic for translations.
+         Original commit message from CVS:
+         * Makefile.am:
+         * autogen.sh:
+         * configure.ac:
+         * po/POTFILES.in:
+         Add/enable autofoo magic for translations.
+
+2006-07-28 13:28:19 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Don't leak streams, strings or caps. Get rid of unnecessary getcaps() function.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_reset),
+         (gst_rmdemux_change_state), (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_cont), (gst_rmdemux_descramble_cook_audio),
+         (gst_rmdemux_handle_scrambled_packet), (gst_rmdemux_parse_packet):
+         Don't leak streams, strings or caps. Get rid of unnecessary
+         getcaps() function.
+
+2006-07-27 20:34:25 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Descramble cook audio streams before sending them to the decoder. Fixes #347292.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_class_init),
+         (gst_rmdemux_init), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_data),
+         (gst_rmdemux_stream_clear_cached_subpackets),
+         (gst_rmdemux_descramble_cook_audio),
+         (gst_rmdemux_descramble_dnet_audio),
+         (gst_rmdemux_handle_scrambled_packet), (gst_rmdemux_parse_packet):
+         Descramble cook audio streams before sending them to the
+         decoder. Fixes #347292.
+         Also miscellaneous clean-ups and log-level changes.
+
+2006-07-26 17:09:04 +0000  Zaheer Abbas Merali <zaheerabbas@merali.org>
+
+         ext/lame/gstlame.c: Fix lame putting lots of 0's at start of mp3.  Fixes bug #348786.
+         Original commit message from CVS:
+         2006-07-26  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+         * ext/lame/gstlame.c: (gst_lame_setup):
+         Fix lame putting lots of 0's at start of mp3.  Fixes bug #348786.
+
+2006-07-21 11:01:55 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/sidplay/gstsiddec.*: Remove old metadata thing.
+         Original commit message from CVS:
+         * ext/sidplay/gstsiddec.cc:
+         * ext/sidplay/gstsiddec.h:
+         Remove old metadata thing.
+
+2006-07-15 13:33:38 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Find language codes for audio streams if they are available.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c:
+         (gst_asf_demux_get_ext_stream_props_for_stream),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_change_state):
+         Find language codes for audio streams if they are available.
+
+2006-07-14 13:02:53 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Parse extended stream properties objects and stream objects hidden inside them (but delay creation of ...
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_obj_stream),
+         (gst_asf_demux_process_stream),
+         (gst_asf_demux_process_language_list),
+         (gst_asf_demux_process_ext_stream_props),
+         (gst_asf_demux_process_queued_extended_stream_objects),
+         (gst_asf_demux_process_object), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Parse extended stream properties objects and stream objects
+         hidden inside them (but delay creation of the appropriate
+         pads until after all the 'normal' stream objects have been
+         dealt with) (#343763). Also parse language list object.
+
+2006-07-13 11:28:32 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.*: Cleanups, use GstSegment for seeking.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_class_init),
+         (gst_rmdemux_finalize), (gst_rmdemux_src_event),
+         (find_seek_offset_time), (gst_rmdemux_perform_seek),
+         (gst_rmdemux_src_query), (gst_rmdemux_change_state),
+         (gst_rmdemux_loop), (gst_rmdemux_chain), (gst_rmdemux_send_event),
+         (gst_rmdemux_add_stream), (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_combine_flows), (gst_rmdemux_parse_packet):
+         * gst/realmedia/rmdemux.h:
+         Cleanups, use GstSegment for seeking.
+         Fix error handling.
+         Combine flow return from all streams.
+
+2006-07-11 22:46:47 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/cdio/gstcdiocddasrc.c: Remove g_assert that shouldn't be there.
+         Original commit message from CVS:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_close):
+         Remove g_assert that shouldn't be there.
+
+2006-07-10 11:52:58 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Fix refcounting when cropping. Fixes #341677.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (crop_buffer), (handle_slice):
+         Fix refcounting when cropping. Fixes #341677.
+
+2006-07-09 14:07:31 +0000  Grzegorz Lukasik <hauserx@gmail.com>
+
+         gst/asfdemux/gstasfdemux.c: Fix typo. Closes #347029.
+         Original commit message from CVS:
+         Patch by: Grzegorz Lukasik <hauserx at gmail dot com>
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_segment):
+         Fix typo. Closes #347029.
+
+2006-07-08 20:29:56 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Skip chunks for unknown streams properly. Fixes broken sound and/or video for files that ...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_chunk):
+         Skip chunks for unknown streams properly. Fixes broken sound
+         and/or video for files that have additional streams that
+         we don't recognise yet (e.g. if they are embedded in extended
+         stream properties). Partly fixes #343763.
+
+2006-07-07 19:26:40 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/: Add some more GUIDs and make debug log more readable and easier to follow when parsing the headers.
+         Original commit message from CVS:
+         * gst/asfdemux/asfheaders.c:
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_identify_guid),
+         (gst_asf_demux_process_header), (gst_asf_demux_push_obj),
+         (gst_asf_demux_pop_obj), (gst_asf_demux_process_object),
+         (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         Add some more GUIDs and make debug log more readable
+         and easier to follow when parsing the headers.
+
+2006-06-30 11:26:22 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.*: Rewrite seeking code and make seeking in DVDs work (#337834).
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_init),
+         (gst_dvd_read_src_is_seekable), (gst_dvd_read_src_class_init),
+         (gst_dvd_read_src_stop), (gst_dvd_read_src_goto_title),
+         (gst_dvd_read_src_create), (gst_dvd_read_src_handle_seek_event),
+         (gst_dvd_read_src_do_seek), (gst_dvd_read_src_src_event):
+         * ext/dvdread/dvdreadsrc.h:
+         Rewrite seeking code and make seeking in DVDs work (#337834).
+
+2006-06-29 14:31:55 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         autogen.sh: Check for automake-1.9 as well.
+         Original commit message from CVS:
+         * autogen.sh:
+         Check for automake-1.9 as well.
+
+2006-06-29 12:25:15 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Make check stronger.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_is_nav_pack):
+         Make check stronger.
+
+2006-06-28 11:20:03 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.*: Handle unknown codec IDs/fourccs properly (#345879); send tag events after newsegment eve...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_setup_pad),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_push_buffer):
+         * gst/asfdemux/gstasfdemux.h:
+         Handle unknown codec IDs/fourccs properly (#345879); send tag
+         events after newsegment event; fix use of GST_FOURCC_FORMAT
+         macro.
+
+2006-06-23 16:29:41 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/a52dec/gsta52dec.c: Call the channel positions get_type() method in plugin_init to ensure that it isn't simultane...
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (plugin_init):
+         Call the channel positions get_type() method in plugin_init
+         to ensure that it isn't simultaneously called later from
+         multiple threads.
+
+2006-06-23 12:24:56 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Also flush packetizer cache when we get a buffer that has the
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegpacketize.c:
+         (gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_put):
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
+         Also flush packetizer cache when we get a buffer that has the
+         DISCONT flag set; update current byte position from buffer
+         offset after a flush.
+
+2006-06-23 11:22:04 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Flush packetizer cache when we get a FLUSH_STOP event; remove unused source pad member from packetiz...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_new),
+         (gst_mpeg_packetize_flush_cache), (gst_mpeg_packetize_destroy),
+         (gst_mpeg_packetize_read):
+         * gst/mpegstream/gstmpegpacketize.h:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_process_event),
+         (gst_mpeg_parse_change_state):
+         Flush packetizer cache when we get a FLUSH_STOP event;
+         remove unused source pad member from packetizer; add debug
+         category for packetizer.
+
+2006-06-23 09:28:28 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/a52dec/gsta52dec.c: Treat dual-mono as stereo. It should really be output on 2 separate pads, but isn't for now.
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_channels), (plugin_init):
+         Treat dual-mono as stereo. It should really be output on 2 separate
+         pads, but isn't for now.
+
+2006-06-19 15:16:43 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Assume 4:3 DAR rather than 4:3 PAR (#345184).
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format):
+         Assume 4:3 DAR rather than 4:3 PAR (#345184).
+
+2006-06-19 11:59:14 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Assume pixel-aspect-ratio of 4:3 if libmpeg2dec doesn't give us any PAR whatsoever (rathe...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format):
+         Assume pixel-aspect-ratio of 4:3 if libmpeg2dec doesn't give us
+         any PAR whatsoever (rather than using 0/0, which will lead to
+         an abort later on). Fixes #345184.
+
+2006-06-17 19:35:41 +0000  Michael Dominic K <mdk@mdk.org.pl>
+
+         ext/mad/gstmad.c: Send newsegment event before calling gst_pad_alloc_buffer_and_set_caps(), makes mad behave better i...
+         Original commit message from CVS:
+         Patch by: Michael Dominic K.  < mdk at mdk org pl>
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Send newsegment event before calling
+         gst_pad_alloc_buffer_and_set_caps(), makes mad behave better
+         in connection with pad blocking (#342594). While we're at it,
+         do some minor clean-ups.
+
+2006-06-17 14:48:04 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Fix --disable-external (can't set conditionals conditionally, #343602).
+         Original commit message from CVS:
+         * configure.ac:
+         Fix --disable-external (can't set conditionals conditionally,
+         #343602).
+
+2006-06-15 17:10:09 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/a52dec/Makefile.am: ... and then he said "When you go and fix the build you better make sure you have some spare ...
+         Original commit message from CVS:
+         * ext/a52dec/Makefile.am:
+         ... and then he said "When you go and fix the build you
+         better make sure you have some spare backslashes in your
+         pocket".
+
+2006-06-13 15:46:09 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/sidplay/gstsiddec.cc: Fix copyright, email addresses and descriptions.
+         Original commit message from CVS:
+         * ext/sidplay/gstsiddec.cc:
+         Fix copyright, email addresses and descriptions.
+         Use saner defaults for arguments. Fixes #344667.
+         constify some stuff.
+         Fix memleaks.
+         Add tags.
+         Fix negotiation to do mono/44100 by default.
+         Post error messages.
+         Use _scale_int where possible.
+
+2006-06-12 14:09:20 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/dvdnav/.cvsignore: More ignore
+         Original commit message from CVS:
+         * ext/dvdnav/.cvsignore:
+         More ignore
+
+2006-06-12 13:49:42 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         tests/check/elements/amrnbenc.c: Init memory before feeding it to the encoder to make the valgrind test succeed.
+         Original commit message from CVS:
+         * tests/check/elements/amrnbenc.c: (push_data):
+         Init memory before feeding it to the encoder to make
+         the valgrind test succeed.
+
+2006-06-12 13:27:18 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/.cvsignore: More ignore
+         Original commit message from CVS:
+         * gst/asfdemux/.cvsignore:
+         More ignore
+
+2006-06-11 20:38:54 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         .cvsignore: Ignore files generated by 'make dist'.
+         Original commit message from CVS:
+         * .cvsignore:
+         Ignore files generated by 'make dist'.
+
+2006-06-11 17:08:11 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         update build files
+         Original commit message from CVS:
+         * autogen.sh:
+         * configure.ac:
+         * ext/a52dec/Makefile.am:
+         * ext/dvdnav/Makefile.am:
+         * ext/dvdread/Makefile.am:
+         * ext/lame/Makefile.am:
+         * ext/mad/Makefile.am:
+         * ext/mpeg2dec/Makefile.am:
+         * ext/sidplay/Makefile.am:
+         update build files
+
+2006-06-11 13:57:18 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         autogen.sh: require am17
+         Original commit message from CVS:
+         * autogen.sh:
+         require am17
+         * configure.ac:
+         * ext/annodex/Makefile.am:
+         * ext/cdio/Makefile.am:
+         * ext/dv/Makefile.am:
+         * ext/esd/Makefile.am:
+         * ext/flac/Makefile.am:
+         * ext/gdk_pixbuf/Makefile.am:
+         * ext/ladspa/Makefile.am:
+         * ext/libcaca/Makefile.am:
+         * ext/speex/Makefile.am:
+         * ext/taglib/Makefile.am:
+         * sys/oss/Makefile.am:
+         * sys/sunaudio/Makefile.am:
+         * sys/ximage/Makefile.am:
+         clean up build further
+
+2006-06-07 17:05:48 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Simplify and don't leak our buffer pool.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_finalize),
+         (gst_mpeg2dec_reset), (clear_buffers), (handle_picture),
+         (gst_mpeg2dec_sink_convert), (gst_mpeg2dec_src_convert),
+         (gst_mpeg2dec_change_state):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Simplify and don't leak our buffer pool.
+         Use _scale_int.
+         Remove unfixed bug number from previous ChangeLog entry.
+
+2006-06-07 16:15:42 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Fix padtemplate as we can now do fractional framerates.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_base_init),
+         (gst_mpeg2dec_class_init), (gst_mpeg2dec_init),
+         (gst_mpeg2dec_finalize), (gst_mpeg2dec_reset),
+         (gst_mpeg2dec_qos_reset), (gst_mpeg2dec_alloc_buffer),
+         (gst_mpeg2dec_negotiate_format), (init_dummybuf),
+         (handle_sequence), (handle_picture), (handle_slice),
+         (gst_mpeg2dec_chain), (gst_mpeg2dec_sink_event),
+         (gst_mpeg2dec_src_event), (gst_mpeg2dec_change_state):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Fix padtemplate as we can now do fractional framerates.
+         Small cleanups.
+         Use GstSegment.
+         Add simple frame dropping QoS.
+         Precalc buffer output sizes and UV offsets.
+         Always give libmpeg2 a valid fbuf when it wants one.
+         don't trust libmpeg to discard our buffers but manage it
+         ourselves.
+         Fixes #343627, #327350, #335288
+
+2006-06-05 20:57:12 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         win32/MANIFEST: Add a manifest for futures ugly win32 releases.
+         Original commit message from CVS:
+         * win32/MANIFEST:
+         Add a manifest for futures ugly win32 releases.
+         * gst/iec958/ac3iec.c: (ac3iec_chain_raw):
+         Move bufcaps declaration at the begining of the instructions
+         block.
+
+2006-06-01 22:00:26 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
+         Original commit message from CVS:
+         * ext/alsaspdif/alsaspdifsink.h:
+         * ext/amrwb/gstamrwbdec.h:
+         * ext/amrwb/gstamrwbenc.h:
+         * ext/amrwb/gstamrwbparse.h:
+         * ext/arts/gst_arts.h:
+         * ext/artsd/gstartsdsink.h:
+         * ext/audiofile/gstafparse.h:
+         * ext/audiofile/gstafsink.h:
+         * ext/audiofile/gstafsrc.h:
+         * ext/audioresample/gstaudioresample.h:
+         * ext/bz2/gstbz2dec.h:
+         * ext/bz2/gstbz2enc.h:
+         * ext/dirac/gstdiracdec.h:
+         * ext/directfb/dfbvideosink.h:
+         * ext/divx/gstdivxdec.h:
+         * ext/divx/gstdivxenc.h:
+         * ext/dts/gstdtsdec.h:
+         * ext/faac/gstfaac.h:
+         * ext/gsm/gstgsmdec.h:
+         * ext/gsm/gstgsmenc.h:
+         * ext/ivorbis/vorbisenc.h:
+         * ext/libfame/gstlibfame.h:
+         * ext/nas/nassink.h:
+         * ext/neon/gstneonhttpsrc.h:
+         * ext/polyp/polypsink.h:
+         * ext/sdl/sdlaudiosink.h:
+         * ext/sdl/sdlvideosink.h:
+         * ext/shout/gstshout.h:
+         * ext/snapshot/gstsnapshot.h:
+         * ext/sndfile/gstsf.h:
+         * ext/swfdec/gstswfdec.h:
+         * ext/tarkin/gsttarkindec.h:
+         * ext/tarkin/gsttarkinenc.h:
+         * ext/theora/theoradec.h:
+         * ext/wavpack/gstwavpackdec.h:
+         * ext/wavpack/gstwavpackparse.h:
+         * ext/xine/gstxine.h:
+         * ext/xvid/gstxviddec.h:
+         * ext/xvid/gstxvidenc.h:
+         * gst/cdxaparse/gstcdxaparse.h:
+         * gst/cdxaparse/gstcdxastrip.h:
+         * gst/colorspace/gstcolorspace.h:
+         * gst/festival/gstfestival.h:
+         * gst/freeze/gstfreeze.h:
+         * gst/gdp/gstgdpdepay.h:
+         * gst/gdp/gstgdppay.h:
+         * gst/modplug/gstmodplug.h:
+         * gst/mpeg1sys/gstmpeg1systemencode.h:
+         * gst/mpeg1videoparse/gstmp1videoparse.h:
+         * gst/mpeg2sub/gstmpeg2subt.h:
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         * gst/multifilesink/gstmultifilesink.h:
+         * gst/overlay/gstoverlay.h:
+         * gst/playondemand/gstplayondemand.h:
+         * gst/qtdemux/qtdemux.h:
+         * gst/rtjpeg/gstrtjpegdec.h:
+         * gst/rtjpeg/gstrtjpegenc.h:
+         * gst/smooth/gstsmooth.h:
+         * gst/smoothwave/gstsmoothwave.h:
+         * gst/spectrum/gstspectrum.h:
+         * gst/speed/gstspeed.h:
+         * gst/stereo/gststereo.h:
+         * gst/switch/gstswitch.h:
+         * gst/tta/gstttadec.h:
+         * gst/tta/gstttaparse.h:
+         * gst/videodrop/gstvideodrop.h:
+         * gst/xingheader/gstxingmux.h:
+         * sys/directdraw/gstdirectdrawsink.h:
+         * sys/directsound/gstdirectsoundsink.h:
+         * sys/dxr3/dxr3audiosink.h:
+         * sys/dxr3/dxr3spusink.h:
+         * sys/dxr3/dxr3videosink.h:
+         * sys/qcam/gstqcamsrc.h:
+         * sys/vcd/vcdsrc.h:
+         Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
+
+2006-06-01 21:11:41 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.h:
+         * ext/amrnb/amrnbdec.h:
+         * ext/amrnb/amrnbenc.h:
+         * ext/amrnb/amrnbparse.h:
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         * ext/sidplay/gstsiddec.h:
+         * gst/ac3parse/gstac3parse.h:
+         * gst/asfdemux/gstasfdemux.h:
+         * gst/asfdemux/gstasfmux.h:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         * gst/iec958/ac3iec.h:
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         * gst/mpegstream/gstdvddemux.h:
+         * gst/mpegstream/gstmpegclock.h:
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegparse.h:
+         Fix more gobject macros: obj<->klass, GstXXX<->GstXXXClass
+
+2006-05-27 11:35:11 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         README: Replace current README (containing the release notes from some 0.9.x version) with a proper README taken from...
+         Original commit message from CVS:
+         * README:
+         Replace current README (containing the release notes from
+         some 0.9.x version) with a proper README taken from the core.
+
+2006-05-24 15:56:13 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/: Sortof first quick cleanup of all this mess...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_event), (gst_amrnbdec_chain):
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+         (gst_amrnbparse_sink_event), (gst_amrnbparse_chain),
+         (gst_amrnbparse_sink_activate), (gst_amrnbparse_state_change):
+         * ext/amrnb/amrnbparse.h:
+         Sortof first quick cleanup of all this mess...
+         Don't crap out on empty and invalid FTs but treat them as
+         empty packets, the decoder handles them fine.
+         Fixes #342222.
+
+2006-05-22 08:24:09 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasf.c: Call gst_riff_init() so the riff debug category gets set up before it is being used.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         Call gst_riff_init() so the riff debug category gets set up
+         before it is being used.
+
+2006-05-19 13:55:11 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/iec958/: Write rate into the caps, for the allowed ac3 rates. Some minor cleanups.
+         Original commit message from CVS:
+         * gst/iec958/ac3_padder.c: (ac3p_parse):
+         * gst/iec958/ac3_padder.h:
+         * gst/iec958/ac3iec.c: (ac3iec_init), (ac3iec_set_property),
+         (ac3iec_chain_raw), (ac3iec_change_state):
+         * gst/iec958/ac3iec.h:
+         Write rate into the caps, for the allowed ac3 rates. Some minor
+         cleanups.
+
+2006-05-18 13:00:21 +0000  James Doc Livingston <doclivingston@gmail.com>
+
+         ext/mad/gstid3tag.c: Do tag merging correctly (#339918). Output taglists properly in debug statements too while we're...
+         Original commit message from CVS:
+         Patch by: James "Doc" Livingston  <doclivingston gmail com>
+         * ext/mad/gstid3tag.c: (gst_id3_tag_get_tag_to_render):
+         Do tag merging correctly (#339918). Output taglists
+         properly in debug statements too while we're at it.
+
+2006-05-11 16:17:44 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/a52dec/gsta52dec.c: Add more debug
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_chain):
+         Add more debug
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcm_reset),
+         (gst_dvdlpcmdec_init), (update_timestamps),
+         (gst_dvdlpcmdec_chain_dvd), (gst_dvdlpcmdec_chain_raw),
+         (dvdlpcmdec_sink_event):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         If we have a first_access offset but no current timestamp (might
+         happen after a seek), then calculate a start time for the first
+         portion so that it will align with the timestamp given for the
+         first_access portion.
+         If a new-segment arrives with format time, store the start
+         time as a failsafe timestamp in case we never get any further
+         timestamp info (unlikely)
+         Mask out the 'frame number' section of the incoming header so
+         that we don't consider it to be changing on every buffer and
+         reset the caps constantly.
+         Use gst_util_uint64_scale for duration calculation
+
+2006-05-11 14:34:10 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.c: Fix timestamping for cases where the first_access parameter is 4.
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_dvd):
+         Fix timestamping for cases where the first_access parameter is 4.
+         Ensure we don't overrun buffers in other cases.
+
+2006-05-10 14:40:03 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: Fix silly bug when reading metadata (#341254).
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_string):
+         Fix silly bug when reading metadata (#341254).
+
+2006-05-08 11:57:26 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         autogen.sh: libtoolize on Darwin/MacOSX is called glibtoolize
+         Original commit message from CVS:
+         * autogen.sh: (CONFIGURE_DEF_OPT):
+         libtoolize on Darwin/MacOSX is called glibtoolize
+
+2006-05-06 11:38:30 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.*: Remove tag writing from lame (which was completely broken anyway, #329184). Leaving GstTagSetter ...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_get_type),
+         (gst_lame_release_memory), (gst_lame_init), (gst_lame_sink_event),
+         (gst_lame_setup), (gst_lame_change_state):
+         * ext/lame/gstlame.h:
+         Remove tag writing from lame (which was completely broken
+         anyway, #329184). Leaving GstTagSetter interface around for
+         now, albeit non-functional. Should be removed completely
+         in 0.11. Use the 'id3v2mux' plugin from -good for writing
+         tags.
+
+2006-05-06 00:18:31 +0000  Maciej Katafiasz <mathrick@mathrick.org>
+
+       * ChangeLog:
+       * ext/dvdread/dvdreadsrc.c:
+       * gst/asfdemux/gstasfdemux.c:
+         Add semicolons after GST_BOILERPLATE[_FULL] so that indent doesn't mess up following lines.
+         Original commit message from CVS:
+         Add semicolons after GST_BOILERPLATE[_FULL] so that indent doesn't mess up following lines.
+
+2006-05-05 08:23:39 +0000  Andres Salomon <dilinger@debian.org>
+
+         ext/lame/gstlame.c: Fix typo (comma vs. semicolon) (#340710).
+         Original commit message from CVS:
+         Patch by: Andres Salomon  <dilinger at debian org>
+         * ext/lame/gstlame.c: (gst_lame_sink_event):
+         Fix typo (comma vs. semicolon) (#340710).
+
+2006-05-04 08:24:52 +0000  Lutz Müller <lutz@topfrose.de>
+
+         ext/mad/gstmad.c: Make mad the second element to support the highly useful
+         Original commit message from CVS:
+         Patch by: Lutz Müller <lutz at topfrose de>
+         * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_src_query):
+         Make mad the second element to support the highly useful
+         FORMATS query (#340594)
+
+2006-05-02 10:28:48 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Remember the query duration format before passing it upstream since it could have been mo...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_sink_convert),
+         (gst_mpeg2dec_src_query):
+         Remember the query duration format before passing it upstream since it
+         could have been modified.
+         Add GST_WARNING_OBJECT in sink convert function to detail why the
+         conversion didn't work.
+
+2006-04-25 21:56:37 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Define GstElementDetails as const and also static (when defined as global)
+         Original commit message from CVS:
+         * ext/amrwb/gstamrwbdec.c:
+         * ext/amrwb/gstamrwbenc.c:
+         * ext/amrwb/gstamrwbparse.c:
+         * ext/arts/gst_arts.c:
+         * ext/artsd/gstartsdsink.c:
+         * ext/audiofile/gstafparse.c:
+         * ext/audiofile/gstafsink.c:
+         * ext/audiofile/gstafsrc.c:
+         * ext/audioresample/gstaudioresample.c:
+         * ext/bz2/gstbz2dec.c:
+         * ext/bz2/gstbz2enc.c:
+         * ext/cdaudio/gstcdaudio.c:
+         * ext/directfb/dfbvideosink.c:
+         * ext/divx/gstdivxdec.c:
+         * ext/divx/gstdivxenc.c:
+         * ext/dts/gstdtsdec.c: (gst_dtsdec_base_init):
+         * ext/faac/gstfaac.c: (gst_faac_base_init):
+         * ext/faad/gstfaad.c:
+         * ext/gsm/gstgsmdec.c:
+         * ext/gsm/gstgsmenc.c:
+         * ext/hermes/gsthermescolorspace.c:
+         * ext/ivorbis/vorbisfile.c:
+         * ext/lcs/gstcolorspace.c:
+         * ext/libfame/gstlibfame.c:
+         * ext/libmms/gstmms.c: (gst_mms_base_init):
+         * ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init):
+         * ext/musicbrainz/gsttrm.c: (gst_musicbrainz_base_init):
+         * ext/nas/nassink.c: (gst_nassink_base_init):
+         * ext/neon/gstneonhttpsrc.c:
+         * ext/sdl/sdlaudiosink.c:
+         * ext/sdl/sdlvideosink.c:
+         * ext/shout/gstshout.c:
+         * ext/snapshot/gstsnapshot.c:
+         * ext/sndfile/gstsf.c:
+         * ext/swfdec/gstswfdec.c:
+         * ext/tarkin/gsttarkindec.c:
+         * ext/tarkin/gsttarkinenc.c:
+         * ext/theora/theoradec.c:
+         * ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_base_init):
+         * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_base_init):
+         * ext/xvid/gstxviddec.c:
+         * ext/xvid/gstxvidenc.c:
+         * gst/cdxaparse/gstcdxaparse.c: (gst_cdxa_parse_base_init):
+         * gst/cdxaparse/gstcdxastrip.c: (gst_cdxastrip_base_init):
+         * gst/chart/gstchart.c:
+         * gst/colorspace/gstcolorspace.c:
+         * gst/deinterlace/gstdeinterlace.c:
+         * gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init):
+         * gst/festival/gstfestival.c:
+         * gst/filter/gstbpwsinc.c:
+         * gst/filter/gstiir.c:
+         * gst/filter/gstlpwsinc.c:
+         * gst/freeze/gstfreeze.c:
+         * gst/games/gstpuzzle.c: (gst_puzzle_base_init):
+         * gst/librfb/gstrfbsrc.c:
+         * gst/mixmatrix/mixmatrix.c:
+         * gst/mpeg1sys/gstmpeg1systemencode.c:
+         * gst/mpeg1videoparse/gstmp1videoparse.c:
+         * gst/mpeg2sub/gstmpeg2subt.c:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         * gst/multifilesink/gstmultifilesink.c:
+         * gst/overlay/gstoverlay.c:
+         * gst/passthrough/gstpassthrough.c:
+         * gst/playondemand/gstplayondemand.c:
+         * gst/qtdemux/qtdemux.c:
+         * gst/rtjpeg/gstrtjpegdec.c:
+         * gst/rtjpeg/gstrtjpegenc.c:
+         * gst/smooth/gstsmooth.c:
+         * gst/smoothwave/gstsmoothwave.c:
+         * gst/spectrum/gstspectrum.c:
+         * gst/speed/gstspeed.c:
+         * gst/stereo/gststereo.c:
+         * gst/switch/gstswitch.c:
+         * gst/tta/gstttadec.c: (gst_tta_dec_base_init):
+         * gst/tta/gstttaparse.c: (gst_tta_parse_base_init):
+         * gst/vbidec/gstvbidec.c:
+         * gst/videocrop/gstvideocrop.c:
+         * gst/videodrop/gstvideodrop.c:
+         * gst/virtualdub/gstxsharpen.c:
+         * gst/xingheader/gstxingmux.c: (gst_xing_mux_base_init):
+         * gst/y4m/gsty4mencode.c:
+         * sys/cdrom/gstcdplayer.c:
+         * sys/directdraw/gstdirectdrawsink.c:
+         * sys/directsound/gstdirectsoundsink.c:
+         * sys/glsink/glimagesink.c:
+         * sys/qcam/gstqcamsrc.c:
+         * sys/v4l2/gstv4l2src.c:
+         * sys/vcd/vcdsrc.c: (gst_vcdsrc_base_init):
+         * sys/ximagesrc/ximagesrc.c:
+         Define GstElementDetails as const and also static (when defined as
+         global)
+
+2006-04-25 21:47:03 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Define GstElementDetails as const and also static (when defined as global)
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c:
+         * ext/mad/gstmad.c:
+         * gst/ac3parse/gstac3parse.c:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         * gst/synaesthesia/gstsynaesthesia.c:
+         Define GstElementDetails as const and also static (when defined as
+         global)
+
+2006-04-25 21:39:40 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Define GstElementDetails as const and also static (when defined as global)
+         Original commit message from CVS:
+         * ext/aalib/gstaasink.c:
+         * ext/annodex/gstcmmldec.c:
+         * ext/annodex/gstcmmlenc.c:
+         * ext/cairo/gsttextoverlay.c:
+         * ext/cairo/gsttimeoverlay.c:
+         * ext/cdio/gstcdiocddasrc.c:
+         * ext/dv/gstdvdec.c:
+         * ext/dv/gstdvdemux.c:
+         * ext/esd/esdmon.c:
+         * ext/esd/esdsink.c:
+         * ext/flac/gstflacenc.c:
+         * ext/flac/gstflactag.c:
+         * ext/gconf/gstgconfaudiosink.c: (gst_gconf_audio_sink_base_init):
+         * ext/gconf/gstgconfaudiosrc.c: (gst_gconf_audio_src_base_init):
+         * ext/gconf/gstgconfvideosink.c: (gst_gconf_video_sink_base_init):
+         * ext/gconf/gstgconfvideosrc.c: (gst_gconf_video_src_base_init):
+         * ext/gdk_pixbuf/pixbufscale.c:
+         * ext/hal/gsthalaudiosink.c: (gst_hal_audio_sink_base_init):
+         * ext/hal/gsthalaudiosrc.c: (gst_hal_audio_src_base_init):
+         * ext/jpeg/gstjpegdec.c:
+         * ext/jpeg/gstjpegenc.c:
+         * ext/jpeg/gstsmokedec.c:
+         * ext/jpeg/gstsmokeenc.c:
+         * ext/libcaca/gstcacasink.c:
+         * ext/libmng/gstmngdec.c:
+         * ext/libmng/gstmngenc.c:
+         * ext/libpng/gstpngdec.c:
+         * ext/libpng/gstpngenc.c:
+         * ext/mikmod/gstmikmod.c:
+         * ext/raw1394/gstdv1394src.c:
+         * ext/shout2/gstshout2.c: (gst_shout2send_init):
+         * ext/shout2/gstshout2.h:
+         * ext/speex/gstspeexdec.c:
+         * ext/speex/gstspeexenc.c:
+         * gst/alpha/gstalpha.c:
+         * gst/alpha/gstalphacolor.c:
+         * gst/apetag/gstapedemux.c:
+         * gst/auparse/gstauparse.c:
+         * gst/autodetect/gstautoaudiosink.c:
+         (gst_auto_audio_sink_base_init):
+         * gst/autodetect/gstautovideosink.c:
+         (gst_auto_video_sink_base_init):
+         * gst/avi/gstavidemux.c: (gst_avi_demux_base_init):
+         * gst/avi/gstavimux.c: (gst_avimux_base_init):
+         * gst/cutter/gstcutter.c:
+         * gst/debug/breakmydata.c:
+         * gst/debug/efence.c:
+         * gst/debug/gstnavigationtest.c:
+         * gst/debug/gstnavseek.c:
+         * gst/debug/negotiation.c:
+         * gst/debug/progressreport.c:
+         * gst/debug/testplugin.c:
+         * gst/effectv/gstaging.c:
+         * gst/effectv/gstdice.c:
+         * gst/effectv/gstedge.c:
+         * gst/effectv/gstquark.c:
+         * gst/effectv/gstrev.c:
+         * gst/effectv/gstshagadelic.c:
+         * gst/effectv/gstvertigo.c:
+         * gst/effectv/gstwarp.c:
+         * gst/flx/gstflxdec.c:
+         * gst/goom/gstgoom.c:
+         * gst/icydemux/gsticydemux.c:
+         * gst/id3demux/gstid3demux.c:
+         * gst/interleave/deinterleave.c:
+         * gst/interleave/interleave.c:
+         * gst/law/alaw-decode.c: (gst_alawdec_base_init):
+         * gst/law/alaw-encode.c: (gst_alawenc_base_init):
+         * gst/law/mulaw-decode.c: (gst_mulawdec_base_init):
+         * gst/law/mulaw-encode.c: (gst_mulawenc_base_init):
+         * gst/level/gstlevel.c:
+         * gst/matroska/matroska-demux.c: (gst_matroska_demux_base_init):
+         * gst/matroska/matroska-mux.c: (gst_matroska_mux_base_init):
+         * gst/median/gstmedian.c:
+         * gst/monoscope/gstmonoscope.c:
+         * gst/multipart/multipartdemux.c:
+         * gst/multipart/multipartmux.c:
+         * gst/oldcore/gstaggregator.c:
+         * gst/oldcore/gstfdsink.c:
+         * gst/oldcore/gstmd5sink.c:
+         * gst/oldcore/gstmultifilesrc.c:
+         * gst/oldcore/gstpipefilter.c:
+         * gst/oldcore/gstshaper.c:
+         * gst/oldcore/gststatistics.c:
+         * gst/rtp/gstasteriskh263.c:
+         * gst/rtp/gstrtpL16depay.c:
+         * gst/rtp/gstrtpL16pay.c:
+         * gst/rtp/gstrtpamrdepay.c:
+         * gst/rtp/gstrtpamrpay.c:
+         * gst/rtp/gstrtpdepay.c:
+         * gst/rtp/gstrtpgsmpay.c:
+         * gst/rtp/gstrtph263pay.c:
+         * gst/rtp/gstrtph263pdepay.c:
+         * gst/rtp/gstrtph263ppay.c:
+         * gst/rtp/gstrtpilbcdepay.c:
+         * gst/rtp/gstrtpmp4gpay.c:
+         * gst/rtp/gstrtpmp4vdepay.c:
+         * gst/rtp/gstrtpmp4vpay.c:
+         * gst/rtp/gstrtpmpadepay.c:
+         * gst/rtp/gstrtpmpapay.c:
+         * gst/rtp/gstrtppcmadepay.c:
+         * gst/rtp/gstrtppcmapay.c:
+         * gst/rtp/gstrtppcmudepay.c:
+         * gst/rtp/gstrtppcmupay.c:
+         * gst/rtp/gstrtpspeexdepay.c:
+         * gst/rtp/gstrtpspeexpay.c:
+         * gst/rtsp/gstrtpdec.c:
+         * gst/rtsp/gstrtspsrc.c:
+         * gst/smpte/gstsmpte.c:
+         * gst/udp/gstdynudpsink.c:
+         * gst/udp/gstmultiudpsink.c:
+         * gst/udp/gstudpsink.c:
+         * gst/udp/gstudpsrc.c:
+         * gst/videobox/gstvideobox.c:
+         * gst/videofilter/gstgamma.c: (gst_gamma_base_init):
+         * gst/videofilter/gstvideobalance.c:
+         * gst/videofilter/gstvideoflip.c:
+         * gst/videofilter/gstvideotemplate.c:
+         (gst_videotemplate_base_init):
+         * gst/videomixer/videomixer.c:
+         * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init),
+         (gst_wavparse_class_init), (gst_wavparse_dispose),
+         (gst_wavparse_reset), (gst_wavparse_init),
+         (gst_wavparse_perform_seek), (gst_wavparse_peek_chunk_info),
+         (gst_wavparse_peek_chunk), (gst_wavparse_stream_headers),
+         (gst_wavparse_parse_stream_init), (gst_wavparse_send_event),
+         (gst_wavparse_add_src_pad), (gst_wavparse_stream_data),
+         (gst_wavparse_chain), (gst_wavparse_srcpad_event),
+         (gst_wavparse_sink_activate), (gst_wavparse_sink_activate_pull),
+         (gst_wavparse_change_state):
+         * gst/wavparse/gstwavparse.h:
+         * sys/oss/gstossmixerelement.c:
+         * sys/oss/gstosssink.c:
+         * sys/oss/gstosssrc.c:
+         * sys/osxaudio/gstosxaudioelement.c:
+         * sys/osxaudio/gstosxaudiosink.c:
+         * sys/osxaudio/gstosxaudiosrc.c:
+         * sys/sunaudio/gstsunaudiomixer.c:
+         * sys/sunaudio/gstsunaudiosink.c:
+         Define GstElementDetails as const and also static (when defined as
+         global)
+
+2006-04-25 12:17:02 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdnav/dvdnavsrc.c: Fix name of custom event (use same as dvdreadsrc).
+         Original commit message from CVS:
+         * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_push_titlelang_event):
+         Fix name of custom event (use same as dvdreadsrc).
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_chain),
+         (gst_dvd_sub_dec_sink_event), (gst_dvd_sub_dec_handle_dvd_event):
+         Fix event parsing (the event name is in the structure, not the
+         name of the structure itself); also fix indentation after
+         boilerplate macro.
+
+2006-04-23 09:49:14 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstid3tag.c: Change debug category to 'id3mux'.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (plugin_init):
+         Change debug category to 'id3mux'.
+
+2006-04-22 18:49:01 +0000  Alexander Lancaster <alexl@users.sourceforge.net>
+
+         ext/mad/gstid3tag.c: When acting as a muxer, set caps on outgoing buffers and set caps on source pad (fixes #323658)....
+         Original commit message from CVS:
+         Patch by: Alexander Lancaster  <alexl at users sourceforge net>
+         * ext/mad/gstid3tag.c: (gst_id3_tag_get_caps), (gst_id3_tag_init),
+         (gst_id3_tag_sink_event), (gst_id3_tag_src_link),
+         (gst_id3_tag_chain):
+         When acting as a muxer, set caps on outgoing buffers and set caps
+         on source pad (fixes #323658). Remove unused application/x-gst-tags
+         cruft from the 0.6 days.
+
+2006-04-21 20:37:43 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: .. and DEFAULT queries should work too. Use magic gst util scale functions in some places.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_convert_sink), (gst_mad_convert_src),
+         (gst_mad_src_query), (gst_mad_chain):
+         .. and DEFAULT queries should work too. Use magic gst util scale
+         functions in some places.
+
+2006-04-21 19:31:47 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Fix duration query in BYTES format (#336824).
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_src_query):
+         Fix duration query in BYTES format (#336824).
+
+2006-04-21 12:40:41 +0000  Ed Catmur <ed@catmur.co.uk>
+
+         ext/lame/gstlame.c: Don't crash if we get an EOS event before the encoder has been set up (#339287).
+         Original commit message from CVS:
+         Patch by: Ed Catmur  <ed at catmur dot co dot uk>
+         * ext/lame/gstlame.c: (gst_lame_sink_event):
+         Don't crash if we get an EOS event before the encoder
+         has been set up (#339287).
+
+2006-04-21 11:17:08 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/dvdread/dvdreadsrc.c: Move errors out of the normal code flow.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_start),
+         (gst_dvd_read_src_goto_title), (gst_dvd_read_src_read),
+         (gst_dvd_read_src_create), (gst_dvd_read_src_goto_sector):
+         Move errors out of the normal code flow.
+         Don't send eos, basesrc will do that for us when needed.
+
+2006-04-21 10:50:17 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegstream/: Do state changes correctly
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_change_state):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_change_state):
+         * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_change_state):
+         Do state changes correctly
+
+2006-04-13 19:08:20 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Can't use gst_pad_alloc_buffer*() when we are going to crop the image before sending it o...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_sized_buf),
+         (gst_mpeg2dec_alloc_buffer):
+         Can't use gst_pad_alloc_buffer*() when we are going to crop
+         the image before sending it out. Downstream basetransform-based
+         elements will complain about the wrong unit size otherwise
+         (when not operating in passthrough-mode at least).
+         Const-ify some static variables and do some minor clean-ups.
+         Use I420 macros for size/offsets (not really necessary in this
+         particular context, but this kind of code gets copy'n'pasted).
+
+2006-04-13 18:21:08 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegpacketize.*: g_malloc() can't fail, we don't need to handle this. Same for gst_buffer_new_and_a...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegpacketize.c: (gst_mpeg_packetize_put),
+         (read_cache):
+         * gst/mpegstream/gstmpegpacketize.h:
+         g_malloc() can't fail, we don't need to handle this. Same for
+         gst_buffer_new_and_alloc().
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_chain):
+         klass->send_buffer() should have the same semantics as
+         gst_pad_push(), ie. ownership of the buffer is transfered,
+         so we never have to unref the buffer no matter what the flow
+         return value was.
+
+2006-04-12 16:21:17 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * tests/check/gst-plugins-ugly.supp:
+         one more suppression for FC4
+         Original commit message from CVS:
+         one more suppression for FC4
+
+2006-04-10 16:58:24 +0000  Michael Smith <msmith@xiph.org>
+
+       * tests/check/gst-plugins-ugly.supp:
+         The AMR encoder sucks giant sucky things through a sucky object with a giant sucking machine. More suppressions.
+         Original commit message from CVS:
+         The AMR encoder sucks giant sucky things through a sucky object with a giant
+         sucking machine. More suppressions.
+
+2006-04-10 14:47:11 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         add test for amrnbenc, enable test infrastructure, and fix a leak
+         Original commit message from CVS:
+         add test for amrnbenc, enable test infrastructure, and fix a leak
+         * common/check.mak:
+         allow for specifying more than one suppressions file in SUPPRESSIONS
+         * Makefile.am:
+         * tests/Makefile.am:
+         * tests/check/.cvsignore:
+         * tests/check/Makefile.am:
+         * tests/check/elements/.cvsignore:
+         * configure.ac:
+         add tests/check
+         * tests/check/gst-plugins-ugly.supp:
+         add suppressions for libs used by -ugly
+         * tests/check/elements/amrnbenc.c: (buffer_new), (buffer_unref),
+         (setup_amrnbenc), (cleanup_amrnbenc), (push_data),
+         (GST_START_TEST), (amrnbenc_suite), (main):
+         add a simple test for encoding amr
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_init):
+         fix pad template leaks
+
+2006-04-10 11:48:29 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/amrnb/amrnbenc.c: Plug big leak in AMR encoder.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_chain):
+         Plug big leak in AMR encoder.
+
+2006-04-09 18:09:40 +0000  Sébastien Moutte <sebastien@moutte.net>
+
+         ext/mad/gstmad.c: move GstIndexEntry *entry variable declaration before the first instruction
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (index_seek):
+         move GstIndexEntry *entry variable declaration before
+         the first instruction
+         * ext/mad/gstmad.c:
+         remove debug macros with variable number of parameter by using
+         GST_DEBUG for WIN32
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_parse_subpic):
+         use gst_guint64_to_gdouble for conversions
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_sync_stream_to_time):
+         replace __FUNCTION__ which is not supported by MSVC by the current function name
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_reset):
+         remove LL suffix by using G_GINT64_CONSTANT
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead),(gst_mpeg_parse_get_rate):
+         use gst_guint64_to_gdouble for conversions
+         * gst/mpegstream/gstmpegparse.h:
+         remove LL suffix by using G_GINT64_CONSTANT
+         * win32/vs6:
+         add project files for tagac3parse, asfdemux, dvdlpcmdec, dvdsub, iec958, lame,
+         mad, mpegaudioparse, mpegstream, realmedia, synaesthesia
+
+2006-04-08 21:42:19 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         Fix #337365 (g_type_class_ref <-> g_type_class_peek_parent)
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_class_init):
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_class_init):
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_class_init):
+         * ext/mad/gstmad.c: (gst_mad_class_init):
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_class_init):
+         * gst/ac3parse/gstac3parse.c: (gst_ac3parse_class_init):
+         * gst/asfdemux/gstasfmux.c: (gst_asfmux_class_init):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_class_init):
+         * gst/iec958/ac3iec.c: (ac3iec_class_init):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_class_init):
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init):
+         * gst/mpegstream/gstmpegclock.c: (gst_mpeg_clock_class_init):
+         * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_class_init):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_class_init):
+         * gst/synaesthesia/gstsynaesthesia.c:
+         (gst_synaesthesia_class_init):
+         Fix #337365 (g_type_class_ref <-> g_type_class_peek_parent)
+
+2006-04-07 09:14:26 +0000  Fabrizio Gennari <fabrizio.ge@tiscali.it>
+
+         gst/asfdemux/gstasfdemux.c: Send newsegment event only once per pad, fixes #336550.
+         Original commit message from CVS:
+         Patch by: Fabrizio Gennari  <fabrizio dot ge at tiscali dot it>
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_sink_event),
+         (gst_asf_demux_push_buffer):
+         Send newsegment event only once per pad, fixes #336550.
+
+2006-04-06 11:35:26 +0000  j^ <j@bootlab.org>
+
+         Unify the long descriptions in the plugin details (#337263).
+         Original commit message from CVS:
+         Patch by: j^  <j at bootlab dot org>
+         * ext/amrwb/gstamrwbdec.c:
+         * ext/amrwb/gstamrwbenc.c:
+         * ext/amrwb/gstamrwbparse.c:
+         * ext/arts/gst_arts.c:
+         * ext/artsd/gstartsdsink.c:
+         * ext/audiofile/gstafparse.c:
+         * ext/audiofile/gstafsink.c:
+         * ext/audiofile/gstafsrc.c:
+         * ext/cdaudio/gstcdaudio.c:
+         * ext/directfb/dfbvideosink.c:
+         * ext/divx/gstdivxdec.c:
+         * ext/divx/gstdivxenc.c:
+         * ext/dts/gstdtsdec.c: (gst_dtsdec_base_init):
+         * ext/faac/gstfaac.c: (gst_faac_base_init):
+         * ext/faad/gstfaad.c:
+         * ext/gsm/gstgsmdec.c:
+         * ext/gsm/gstgsmenc.c:
+         * ext/hermes/gsthermescolorspace.c:
+         * ext/ivorbis/vorbisfile.c:
+         * ext/lcs/gstcolorspace.c:
+         * ext/libfame/gstlibfame.c:
+         * ext/libmms/gstmms.c: (gst_mms_base_init):
+         * ext/musicbrainz/gsttrm.c: (gst_musicbrainz_base_init):
+         * ext/nas/nassink.c: (gst_nassink_base_init):
+         * ext/neon/gstneonhttpsrc.c:
+         * ext/polyp/polypsink.c: (gst_polypsink_base_init):
+         * ext/sdl/sdlaudiosink.c:
+         * ext/sdl/sdlvideosink.c:
+         * ext/shout/gstshout.c:
+         * ext/snapshot/gstsnapshot.c:
+         * ext/sndfile/gstsf.c:
+         * ext/tarkin/gsttarkindec.c:
+         * ext/tarkin/gsttarkinenc.c:
+         * ext/theora/theoradec.c:
+         * ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_base_init):
+         * ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_base_init):
+         * ext/xvid/gstxviddec.c:
+         * ext/xvid/gstxvidenc.c:
+         * gst/cdxaparse/gstcdxaparse.c: (gst_cdxa_parse_base_init):
+         * gst/cdxaparse/gstcdxastrip.c: (gst_cdxastrip_base_init):
+         * gst/chart/gstchart.c:
+         * gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_base_init):
+         * gst/festival/gstfestival.c:
+         * gst/filter/gstiir.c:
+         * gst/filter/gstlpwsinc.c:
+         * gst/freeze/gstfreeze.c:
+         * gst/games/gstpuzzle.c: (gst_puzzle_base_init):
+         * gst/mixmatrix/mixmatrix.c:
+         * gst/mpeg1sys/gstmpeg1systemencode.c:
+         * gst/mpeg1videoparse/gstmp1videoparse.c:
+         * gst/mpeg2sub/gstmpeg2subt.c:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         * gst/multifilesink/gstmultifilesink.c:
+         * gst/overlay/gstoverlay.c:
+         * gst/passthrough/gstpassthrough.c:
+         * gst/playondemand/gstplayondemand.c:
+         * gst/qtdemux/qtdemux.c:
+         * gst/rtjpeg/gstrtjpegdec.c:
+         * gst/rtjpeg/gstrtjpegenc.c:
+         * gst/smooth/gstsmooth.c:
+         * gst/tta/gstttadec.c: (gst_tta_dec_base_init):
+         * gst/tta/gstttaparse.c: (gst_tta_parse_base_init):
+         * gst/videocrop/gstvideocrop.c:
+         * gst/videodrop/gstvideodrop.c:
+         * gst/virtualdub/gstxsharpen.c:
+         * gst/xingheader/gstxingmux.c: (gst_xing_mux_base_init):
+         * gst/y4m/gsty4mencode.c:
+         Unify the long descriptions in the plugin details (#337263).
+
+2006-04-05 10:02:34 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         fix version numbering
+         Original commit message from CVS:
+         fix version numbering
+
+2006-04-05 09:18:35 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * common:
+       * gst-plugins-ugly.spec.in:
+         add dvdsub plugin to spec
+         Original commit message from CVS:
+         add dvdsub plugin to spec
+
+2006-04-01 15:43:46 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         docs/plugins/: add siddec
+         Original commit message from CVS:
+         * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         * docs/plugins/inspect/plugin-siddec.xml:
+         add siddec
+         * ext/dvdnav/dvdnavsrc.c:
+         doc fixes
+
+2006-04-01 15:30:56 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * configure.ac:
+       * ext/sidplay/Makefile.am:
+         disable use of AS_LIBTOOL_TAGS, it doesn't work correctly
+         Original commit message from CVS:
+         disable use of AS_LIBTOOL_TAGS, it doesn't work correctly
+
+2006-04-01 14:08:36 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * docs/plugins/.gitignore:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+         ignore more
+         Original commit message from CVS:
+         ignore more
+
+2006-04-01 14:08:11 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-asf.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-dvdread.xml:
+       * docs/plugins/inspect/plugin-dvdsub.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-mpegstream.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         update plugin inspect files
+         Original commit message from CVS:
+         update plugin inspect files
+
+2006-04-01 10:09:10 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * gst/mpegaudioparse/gstxingmux.c:
+         rework build; add translations for v4l2
+         Original commit message from CVS:
+         rework build; add translations for v4l2
+
+2006-04-01 09:54:39 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         configure.ac: rework similarly to other modules
+         Original commit message from CVS:
+         * configure.ac:
+         rework similarly to other modules
+         * ext/a52dec/gsta52dec.c:
+         * ext/amrnb/amrnb.c:
+         * ext/dvdnav/dvdnavsrc.c:
+         * ext/dvdread/dvdreadsrc.c:
+         * ext/lame/gstlame.c:
+         * ext/mad/gstid3tag.c:
+         * ext/mpeg2dec/gstmpeg2dec.c:
+         * ext/sidplay/gstsiddec.cc:
+         * gst/asfdemux/gstasf.c:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         * gst/dvdsub/gstdvdsubdec.c:
+         * gst/iec958/ac3iec.c:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         * gst/mpegstream/gstmpegstream.c:
+         * gst/realmedia/rmdemux.c: (plugin_init):
+         use the correct defines
+
+2006-04-01 09:53:17 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * docs/.gitignore:
+       * docs/plugins/.gitignore:
+         ignore more
+         Original commit message from CVS:
+         ignore more
+
+2006-03-31 11:13:50 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * common:
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.10.3 ===
+
+2006-03-31 11:10:46 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.signals:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         releasing 0.10.3
+         Original commit message from CVS:
+         releasing 0.10.3
+
+2006-03-30 15:37:00 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         better/unified long descriptions
+         Original commit message from CVS:
+         * ext/aalib/gstaasink.c:
+         * ext/annodex/gstcmmldec.c:
+         * ext/annodex/gstcmmlenc.c:
+         * ext/cairo/gsttextoverlay.c:
+         * ext/cairo/gsttimeoverlay.c:
+         * ext/cdio/gstcdiocddasrc.c:
+         * ext/dv/gstdvdec.c:
+         * ext/esd/esdmon.c:
+         * ext/esd/esdsink.c:
+         * ext/flac/gstflacdec.c:
+         * ext/flac/gstflacenc.c:
+         * ext/flac/gstflactag.c:
+         * ext/gconf/gstgconfaudiosink.c: (gst_gconf_audio_sink_base_init):
+         * ext/gconf/gstgconfaudiosrc.c: (gst_gconf_audio_src_base_init):
+         * ext/gconf/gstgconfvideosink.c: (gst_gconf_video_sink_base_init):
+         * ext/gconf/gstgconfvideosrc.c: (gst_gconf_video_src_base_init):
+         * ext/gdk_pixbuf/gstgdkpixbuf.c:
+         * ext/gdk_pixbuf/pixbufscale.c:
+         * ext/hal/gsthalaudiosink.c: (gst_hal_audio_sink_base_init):
+         * ext/hal/gsthalaudiosrc.c: (gst_hal_audio_src_base_init):
+         * ext/jpeg/gstjpegdec.c:
+         * ext/jpeg/gstjpegenc.c:
+         * ext/jpeg/gstsmokedec.c:
+         * ext/jpeg/gstsmokeenc.c:
+         * ext/libcaca/gstcacasink.c:
+         * ext/libmng/gstmngdec.c:
+         * ext/libmng/gstmngenc.c:
+         * ext/libpng/gstpngdec.c:
+         * ext/libpng/gstpngenc.c:
+         * ext/mikmod/gstmikmod.c:
+         * ext/raw1394/gstdv1394src.c:
+         * ext/shout2/gstshout2.c:
+         * ext/speex/gstspeexdec.c:
+         * ext/speex/gstspeexenc.c:
+         * gst/alpha/gstalpha.c:
+         * gst/alpha/gstalphacolor.c:
+         * gst/auparse/gstauparse.c:
+         * gst/autodetect/gstautoaudiosink.c:
+         (gst_auto_audio_sink_base_init):
+         * gst/autodetect/gstautovideosink.c:
+         (gst_auto_video_sink_base_init):
+         * gst/avi/gstavimux.c: (gst_avimux_base_init):
+         * gst/cutter/gstcutter.c:
+         * gst/debug/breakmydata.c:
+         * gst/debug/efence.c:
+         * gst/debug/gstnavigationtest.c:
+         * gst/debug/negotiation.c:
+         * gst/debug/progressreport.c:
+         * gst/debug/testplugin.c:
+         * gst/effectv/gstaging.c:
+         * gst/effectv/gstdice.c:
+         * gst/effectv/gstedge.c:
+         * gst/effectv/gstquark.c:
+         * gst/effectv/gstrev.c:
+         * gst/effectv/gstvertigo.c:
+         * gst/effectv/gstwarp.c:
+         * gst/flx/gstflxdec.c:
+         * gst/goom/gstgoom.c:
+         * gst/interleave/deinterleave.c:
+         * gst/interleave/interleave.c:
+         * gst/law/alaw-decode.c: (gst_alawdec_base_init):
+         * gst/law/alaw-encode.c: (gst_alawenc_base_init):
+         * gst/law/mulaw-decode.c: (gst_mulawdec_base_init):
+         * gst/law/mulaw-encode.c: (gst_mulawenc_base_init):
+         * gst/level/gstlevel.c:
+         * gst/matroska/matroska-demux.c: (gst_matroska_demux_base_init):
+         * gst/matroska/matroska-mux.c: (gst_matroska_mux_base_init):
+         * gst/median/gstmedian.c:
+         * gst/monoscope/gstmonoscope.c:
+         * gst/multipart/multipartdemux.c:
+         * gst/multipart/multipartmux.c:
+         * gst/oldcore/gstmd5sink.c:
+         * gst/oldcore/gstmultifilesrc.c:
+         * gst/oldcore/gstpipefilter.c:
+         * gst/oldcore/gstshaper.c:
+         * gst/oldcore/gststatistics.c:
+         * gst/rtp/gstasteriskh263.c:
+         * gst/rtp/gstrtpL16depay.c:
+         * gst/rtp/gstrtpL16pay.c:
+         * gst/rtp/gstrtpamrdepay.c:
+         * gst/rtp/gstrtpamrpay.c:
+         * gst/rtp/gstrtpdepay.c:
+         * gst/rtp/gstrtpgsmpay.c:
+         * gst/rtp/gstrtph263pay.c:
+         * gst/rtp/gstrtph263pdepay.c:
+         * gst/rtp/gstrtph263ppay.c:
+         * gst/rtp/gstrtpmp4gpay.c:
+         * gst/rtp/gstrtpmp4vdepay.c:
+         * gst/rtp/gstrtpmp4vpay.c:
+         * gst/rtp/gstrtpmpadepay.c:
+         * gst/rtp/gstrtpmpapay.c:
+         * gst/rtp/gstrtppcmadepay.c:
+         * gst/rtp/gstrtppcmapay.c:
+         * gst/rtp/gstrtppcmudepay.c:
+         * gst/rtp/gstrtppcmupay.c:
+         * gst/rtp/gstrtpspeexdepay.c:
+         * gst/rtp/gstrtpspeexpay.c:
+         * gst/rtsp/gstrtpdec.c:
+         * gst/smpte/gstsmpte.c:
+         * gst/videobox/gstvideobox.c:
+         * gst/videofilter/gstgamma.c: (gst_gamma_base_init):
+         * gst/videofilter/gstvideobalance.c:
+         * gst/videofilter/gstvideoflip.c:
+         * gst/videofilter/gstvideotemplate.c:
+         (gst_videotemplate_base_init):
+         * gst/videomixer/videomixer.c:
+         * gst/wavenc/gstwavenc.c:
+         * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init):
+         better/unified long descriptions
+         Fixed #336602
+         Some cleanups to auparse, don't send multiple newsegments.
+
+2006-03-29 11:31:55 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegparse.c: Don't unref event unconditionally after giving away ownership (gst_pad_push_event(), g...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_event):
+         Don't unref event unconditionally after giving away ownership
+         (gst_pad_push_event(), gst_pad_send_event() and
+         gst_pad_event_default() take ownership of the event
+         passed to them). Fixes warnings/crashes caused by
+         navigation events.
+
+2006-03-28 20:19:31 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegdemux.c: Don't ref NULL caps (private streams have NULL caps) (#336387); also, no need to set c...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
+         Don't ref NULL caps (private streams have NULL caps) (#336387);
+         also, no need to set caps on the same buffer twice.
+
+2006-03-28 19:44:51 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Don't leak element and pad names in error messages, use
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
+         (gst_dvd_demux_handle_dvd_event), (gst_dvd_demux_get_audio_stream),
+         (gst_dvd_demux_get_subpicture_stream):
+         * gst/mpegstream/gstmpegdemux.c:
+         (gst_mpeg_demux_sync_stream_to_time):
+         Don't leak element and pad names in error messages, use
+         GST_DEBUG_PAD_NAME instead. Add some more debug code.
+
+2006-03-28 19:29:39 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Name the structure in the custom event with the language codes for the audio and subtitle s...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_init),
+         (gst_dvd_read_src_goto_title), (gst_dvd_read_src_read):
+         Name the structure in the custom event with the
+         language codes for the audio and subtitle streams
+         actually like dvddemux expects it to be named.
+         Set caps on source pad and outgoing buffers.
+
+2006-03-28 16:06:05 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.*: Make xingheader property non-functional, it's broken anyway after all (use xingmux instead).
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_init), (gst_lame_set_property),
+         (gst_lame_get_property), (gst_lame_setup):
+         * ext/lame/gstlame.h:
+         Make xingheader property non-functional, it's broken anyway
+         after all (use xingmux instead).
+
+2006-03-28 15:10:18 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: On EOS, flush encoder and send remaining data. Fix return value handling in sink event function.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_event):
+         On EOS, flush encoder and send remaining data. Fix
+         return value handling in sink event function.
+
+2006-03-27 14:04:08 +0000  Jürg Billeter <j@bitron.ch>
+
+         ext/dvdread/dvdreadsrc.c: Fix wrong check for started flag when setting the 'device' property.
+         Original commit message from CVS:
+         Patch by: Jürg Billeter  <j at bitron dot ch>
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_set_property):
+         Fix wrong check for started flag when setting the 'device' property.
+         We want to allow it when the source is NOT started yet and ignore it
+         when the source is running.
+
+2006-03-27 10:39:03 +0000  Fabrizio Gennari <fabrizio.ge@tiscali.it>
+
+         gst/asfdemux/gstasfdemux.*: Subtract first timestamp from timestamps, so that stream starts from 0; makes live stream...
+         Original commit message from CVS:
+         Patch by: Fabrizio Gennari  <fabrizio dot ge at tiscali dot it>
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_setup_pad),
+         (gst_asf_demux_process_chunk):
+         * gst/asfdemux/gstasfdemux.h:
+         Subtract first timestamp from timestamps, so that
+         stream starts from 0; makes live streams that don't
+         start at 0 work again (fixes #317310, #336097).
+
+2006-03-27 10:09:43 +0000  Christian Kirbach <christian.kirbach@googlemail.com>
+
+         configure.ac: Remove CXX tag from AS_LIBTOOL_TAGS, just like we did for
+         Original commit message from CVS:
+         Patch by: Christian Kirbach
+         * configure.ac:
+         Remove CXX tag from AS_LIBTOOL_TAGS, just like we did for
+         -good. Fixes build on some systems (#331838).
+
+2006-03-24 19:47:37 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Extract more tags and also post codec name tag on the bus so this shows up in totem and naut...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_cont):
+         Extract more tags and also post codec name tag on the
+         bus so this shows up in totem and nautilus.
+
+2006-03-24 19:06:41 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: Extra data usually goes into the caps as 'codec_data', not as first buffer into the stream.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_fill_audio_packet), (gst_rmdemux_parse_packet):
+         Extra data usually goes into the caps as 'codec_data', not
+         as first buffer into the stream.
+         Need to byte swap AC3 content in realmedia files for some
+         reason (fixes #331588).
+
+2006-03-24 12:08:39 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: When operating in pull mode, post an error message on the bus when all source pads are unlin...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_init),
+         (gst_rmdemux_validate_offset), (gst_rmdemux_loop),
+         (gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_packet):
+         When operating in pull mode, post an error message on the
+         bus when all source pads are unlinked or some other fatal
+         error occured (#323023). Regrade some recurring debug messages
+         to LOG level. Convert c++-style comments into C-style ones.
+
+2006-03-24 11:42:31 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.*: Handle unlinked source pads properly and stop if all source pads are unlinked (#323023).
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_perform_seek),
+         (gst_rmdemux_loop), (gst_rmdemux_chain), (gst_rmdemux_send_event),
+         (gst_rmdemux_all_source_pads_unlinked),
+         (gst_rmdemux_at_least_one_stream_flowok), (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_packet):
+         * gst/realmedia/rmdemux.h:
+         Handle unlinked source pads properly and stop if all source pads
+         are unlinked (#323023).
+
+2006-03-23 18:17:34 +0000  Michal Benes <michal.benes@xeris.cz>
+
+         gst/mpegstream/: Timestamps in mpeg stream are 32-bit numbers. Therefore, with a clock_freq of 90kHz this timestamp o...
+         Original commit message from CVS:
+         Patch by: Michal Benes <michal dot benes at xeris dot cz>
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init),
+         (gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes),
+         (gst_mpeg_demux_send_subbuffer), (gst_mpeg_demux_reset):
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
+         Timestamps in mpeg stream are 32-bit numbers. Therefore, with a
+         clock_freq of 90kHz this timestamp overflows every ~13 hours. This
+         situation really happens when grabbing DVB streams. Current
+         mpegdemuxer can not handle this situation correctly and it
+         restarts counting gstreamer timestamps from zero.
+         Fixes #326598.
+
+2006-03-15 22:01:40 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/a52dec/gsta52dec.*: Fix #334550: failure to play raw AC3 files due to segment problems.
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_sink_event),
+         (gst_a52dec_chain_raw), (gst_a52dec_change_state):
+         * ext/a52dec/gsta52dec.h:
+         Fix #334550: failure to play raw AC3 files due to segment problems.
+
+2006-03-15 13:43:42 +0000  Christophe Fergeau <teuf@gnome.org>
+
+         ext/lame/gstlame.c: use GST_DEBUG_FUNCPTR more often.
+         Original commit message from CVS:
+         Patch by: Christophe Fergeau  <teuf gnome org>
+         * ext/lame/gstlame.c: (gst_lame_release_memory),
+         (gst_lame_finalize), (gst_lame_class_init),
+         (gst_lame_sink_setcaps), (gst_lame_init), (gst_lame_sink_event),
+         (gst_lame_change_state):
+         Fix some memory leaks (#333345), use GST_DEBUG_FUNCPTR more often.
+
+2006-03-14 19:41:17 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Include AUDIO_CODEC tag with tags posted if input is not framed (#334258). Use _scale() util functi...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_convert_sink), (gst_mad_update_info),
+         (gst_mad_sink_event), (gst_mad_change_state):
+         Include AUDIO_CODEC tag with tags posted if input is not
+         framed (#334258). Use _scale() util functions in more places.
+
+2006-03-12 11:00:33 +0000  Christophe Fergeau <teuf@gnome.org>
+
+         ext/lame/gstlame.c: mark the xing-header property as BROKEN (see http://bugzilla.gnome.org/show_bug.cgi?id=330317#c19...
+         Original commit message from CVS:
+         2006-03-12  Christophe Fergeau  <teuf@gnome.org>
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * ext/lame/gstlame.c: (gst_lame_class_init): mark the xing-header
+         property as BROKEN (see
+         http://bugzilla.gnome.org/show_bug.cgi?id=330317#c19 for an
+         explanation why it's broken).
+
+2006-03-11 11:12:30 +0000  Christophe Fergeau <teuf@gnome.org>
+
+         added new element to add Xing headers to MP3 files (this allows decoder to figure out the length of VBR files)
+         Original commit message from CVS:
+         2006-03-11  Christophe Fergeau  <teuf@gnome.org>
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * configure.ac:
+         * gst/xingheader/Makefile.am:
+         * gst/xingheader/gstxingmux.c:
+         * gst/xingheader/gstxingmux.h: added new element to add Xing headers
+         to MP3 files (this allows decoder to figure out the length of VBR
+         files)
+
+2006-03-07 11:19:55 +0000  Alex Lancaster <alexlan@fedoraproject.org>
+
+         ext/mad/gstid3tag.c: Add support for writing the GST_TAG_ALBUM_VOLUME_NUMBER
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (tag_list_to_id3_tag_foreach):
+         Add support for writing the GST_TAG_ALBUM_VOLUME_NUMBER
+         tag (#333683, patch by: Alex Lancaster).
+
+2006-03-02 20:03:00 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/: Further fancyfication.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_init),
+         (gst_amrnbdec_setcaps), (gst_amrnbdec_chain),
+         (gst_amrnbdec_state_change):
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_init),
+         (gst_amrnbenc_setcaps), (gst_amrnbenc_chain),
+         (gst_amrnbenc_state_change):
+         * ext/amrnb/amrnbenc.h:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+         (gst_amrnbparse_query):
+         Further fancyfication.
+         Use _take to get writable data from the adapter.
+         Precalc packet duration.
+         Handle disconts.
+         Forward _push to upstream.
+         Post error messages when something goes wrong.
+         Remove old code in amrnbparse.
+         Don't ignore query results from upstream.
+
+2006-03-02 18:45:40 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/amrnb/amrnbenc.c: The AMR encoder writes into the audio buffers it processes, so use gst_buffer_make_writable() o...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_chain):
+         The AMR encoder writes into the audio buffers it processes, so
+         use gst_buffer_make_writable() on buffers we might (they go through
+         an adapter, so there can be copying going on later anyway) be
+         encoding.
+
+2006-03-01 12:35:09 +0000  Jens Granseuer <jensgr@gmx.net>
+
+         gst/mpegstream/gstmpegparse.c: Declare variables at the beginning of a block and make
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_pad_added),
+         (gst_mpeg_parse_handle_src_query):
+         Declare variables at the beginning of a block and make
+         gcc-2.9x happy (fixes #328957; patch by: Jens Granseuer).
+
+2006-03-01 09:55:49 +0000  Fabrizio <fabrizio.ge@tiscali.it>
+
+         gst/asfdemux/gstasfdemux.c: Read packet size, sequence and padsize in right order again
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_data):
+         Read packet size, sequence and padsize in right order again
+         (fixes #332796; patch by: Fabrizio Gennari).
+
+2006-02-28 13:50:02 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/iec958/ac3iec.c: Set a proper klass (Codec/Muxer/Audio) for the ElementDetails.
+         Original commit message from CVS:
+         * gst/iec958/ac3iec.c:
+         Set a proper klass (Codec/Muxer/Audio) for the ElementDetails.
+
+2006-02-27 18:37:47 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Make the id3tag and mad checks check for both a header and the appropriate library if the pkg-config is...
+         Original commit message from CVS:
+         * configure.ac:
+         Make the id3tag and mad checks check for both a header and the
+         appropriate library if the pkg-config is missing. (Closes #331842)
+         Split the id3tag and mad checks into 2 pieces. Sometime soon I might
+         do the same for the plugins themselves.
+
+2006-02-27 14:49:05 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Don't treat STATE_INVALID as fatal error; throw an error only after five consecutive deco...
+         Original commit message from CVS:
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+         (gst_mpeg2dec_reset), (gst_mpeg2dec_chain):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Don't treat STATE_INVALID as fatal error; throw an error
+         only after five consecutive decoding errors. Makes decoding
+         mpeg streams more robust and fixes playback of joined clips
+         (#300682).
+
+2006-02-26 22:33:33 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdnav/dvdnavsrc.h: Oops. forgot to add this one.
+         Original commit message from CVS:
+         * ext/dvdnav/dvdnavsrc.h:
+         Oops. forgot to add this one.
+
+2006-02-26 21:25:01 +0000  Julien Moutte <julien@moutte.net>
+
+         ext/Makefile.am: Fix dist-check.
+         Original commit message from CVS:
+         2006-02-26  Julien MOUTTE  <julien@moutte.net>
+         * ext/Makefile.am: Fix dist-check.
+
+2006-02-26 18:01:15 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Disable dvdnavsrc for now.
+         Original commit message from CVS:
+         * configure.ac:
+         Disable dvdnavsrc for now.
+
+2006-02-26 17:55:05 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         dvdnavsrc ported to 0.10, for the most part at least. Not quite ready for prime time yet though.
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/Makefile.am:
+         * ext/dvdnav/Makefile.am:
+         * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_base_init),
+         (gst_dvd_nav_src_class_init), (gst_dvd_nav_src_check_get_range),
+         (gst_dvd_nav_src_init), (gst_dvd_nav_src_finalize),
+         (gst_dvd_nav_src_is_open), (gst_dvd_nav_src_set_property),
+         (gst_dvd_nav_src_get_property), (gst_dvd_nav_src_set_clock),
+         (gst_dvd_nav_src_tca_seek), (gst_dvd_nav_src_update_streaminfo),
+         (gst_dvd_nav_src_set_domain), (gst_dvd_nav_src_update_highlight),
+         (gst_dvd_nav_src_user_op), (dvdnav_get_event_name),
+         (dvdnav_get_read_domain_name), (gst_dvd_nav_src_print_event),
+         (gst_dvd_nav_src_make_dvd_event),
+         (gst_dvd_nav_src_structure_set_uint64),
+         (gst_dvd_nav_src_push_dvd_nav_packet_event),
+         (gst_dvd_nav_src_push_clut_change_event), (read_vts_info),
+         (gst_dvd_nav_src_push_titlelang_event),
+         (gst_dvd_nav_src_process_next_block), (gst_dvd_nav_src_create),
+         (gst_dvd_nav_src_start), (gst_dvd_nav_src_stop),
+         (gst_dvd_nav_src_handle_navigation_event),
+         (gst_dvd_nav_src_handle_seek_event), (gst_dvd_nav_src_src_event),
+         (gst_dvd_nav_src_query_position), (gst_dvd_nav_src_query_duration),
+         (gst_dvd_nav_src_query), (gst_dvd_nav_src_uri_get_type),
+         (gst_dvd_nav_src_uri_get_protocols), (gst_dvd_nav_src_uri_get_uri),
+         (gst_dvd_nav_src_uri_set_uri), (gst_dvd_nav_src_uri_handler_init),
+         (gst_dvd_nav_src_do_init), (plugin_init):
+         dvdnavsrc ported to 0.10, for the most part at least. Not quite
+         ready for prime time yet though.
+
+2006-02-23 20:08:58 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/cdio/Makefile.am: Add GST_BASE_CFLAGS and GST_BASE_LIBS (seems to be required for Cygwin, see #317048)
+         Original commit message from CVS:
+         * ext/cdio/Makefile.am:
+         Add GST_BASE_CFLAGS and GST_BASE_LIBS (seems to be
+         required for Cygwin, see #317048)
+         * gst/rtp/gstasteriskh263.c:
+         Cygwin has includes for both the unix network socket API
+         and the windows API, but only one can be included, so fix
+         includes to only use one or the other, prefering the unxi
+         one (#317048).
+
+2006-02-22 14:54:54 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Port dvdsubdec to 0.10
+         Original commit message from CVS:
+         * configure.ac:
+         * gst/dvdsub/Makefile.am:
+         * gst/dvdsub/gstdvdsubdec.c: (gst_dvd_sub_dec_base_init),
+         (gst_dvd_sub_dec_class_init), (gst_dvd_sub_dec_init),
+         (gst_dvd_sub_dec_finalize), (gst_dvd_sub_dec_src_event),
+         (gst_dvd_sub_dec_get_event_delay), (gst_dvd_sub_dec_parse_subpic),
+         (gst_get_nibble), (gst_setup_palette), (gst_get_rle_code),
+         (gst_draw_rle_line), (gst_dvd_sub_dec_merge_title),
+         (gst_send_empty_fill), (gst_send_subtitle_frame),
+         (gst_dvd_sub_dec_advance_time), (gst_dvd_sub_dec_chain),
+         (gst_dvd_sub_dec_sink_event), (gst_dvd_sub_dec_handle_dvd_event),
+         (plugin_init):
+         * gst/dvdsub/gstdvdsubdec.h:
+         Port dvdsubdec to 0.10
+
+2006-02-21 16:24:10 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/mpegstream/gstdvddemux.c: Push the rank up to SECONDARY+1 so that dvddemux is preferred over mpegdemux for MPEG-2...
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_plugin_init):
+         Push the rank up to SECONDARY+1 so that dvddemux is preferred over
+         mpegdemux for MPEG-2 video streams.
+
+2006-02-20 19:16:10 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: Bump nano back to CVS
+         Original commit message from CVS:
+         * configure.ac:
+         Bump nano back to CVS
+
+=== release 0.10.2 ===
+
+2006-02-20 19:13:54 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: releasing 0.10.2, "Season to Taste"
+         Original commit message from CVS:
+         * configure.ac:
+         releasing 0.10.2, "Season to Taste"
+
+2006-02-19 23:45:34 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: releasing 0.10.1.3 prelease for 0.10.2
+         Original commit message from CVS:
+         * configure.ac:
+         releasing 0.10.1.3 prelease for 0.10.2
+
+2006-02-17 17:58:44 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/asfdemux/gstasfdemux.c: In sink event handler, release object lock again _before_ sending EOS event downstream (#...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_sink_event):
+         In sink event handler, release object lock again
+         _before_ sending EOS event downstream (#313838).
+
+2006-02-17 17:54:37 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * ChangeLog:
+       * gst/asfdemux/gstasf.c:
+         fix rank of asfdemux
+         Original commit message from CVS:
+         fix rank of asfdemux
+
+2006-02-17 15:08:28 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         configure.ac: releasing 0.10.1.2 prelease for 0.10.2
+         Original commit message from CVS:
+         * configure.ac:
+         releasing 0.10.1.2 prelease for 0.10.2
+
+2006-02-17 15:02:30 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         latest updates
+         Original commit message from CVS:
+         latest updates
+
+2006-02-17 11:51:12 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: When we need to crop the output buffer, make sure we create a buffer of the right size an...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (crop_copy_i420_buffer),
+         (crop_copy_i422_buffer), (crop_buffer):
+         When we need to crop the output buffer, make sure we
+         create a buffer of the right size and respect the implicit
+         striding used for I420 elsewhere in GStreamer (#331301).
+
+2006-02-17 11:19:34 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/cdio/gstcdio.c: Init debug category (#331253).
+         Original commit message from CVS:
+         * ext/cdio/gstcdio.c: (plugin_init):
+         Init debug category (#331253).
+
+2006-02-17 10:24:56 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/gstasfdemux.c: Do not error out on non-recognized streams. Ignore them and allow playback of the other s...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_stream):
+         Do not error out on non-recognized streams. Ignore them and allow
+         playback of the other streams.
+
+2006-02-17 10:10:40 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.c: Add a small sanity check for LPCM reading.
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_dvd):
+         Add a small sanity check for LPCM reading.
+
+2006-02-17 09:54:43 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/gstasfdemux.c: Take into account the file properties preroll value for timestamping/newsegment. It's wei...
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_file):
+         Take into account the file properties preroll value for
+         timestamping/newsegment. It's weird this value was commented out.
+
+2006-02-16 17:57:59 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/asfdemux/Makefile.am: More asf makefile fixing.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         More asf makefile fixing.
+
+2006-02-16 17:16:06 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/lame/gstlame.c: Fix up lame a bit.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_init), (gst_lame_chain),
+         (gst_lame_change_state):
+         Fix up lame a bit.
+         Apply patch #319782 by Gautier Portet.
+
+2006-02-16 11:14:11 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/Makefile.am: But we do need to link against the riff libraryr.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         But we do need to link against the riff libraryr.
+
+2006-02-16 11:08:51 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/asfdemux/Makefile.am: We don't want asfmux.c yet.
+         Original commit message from CVS:
+         * gst/asfdemux/Makefile.am:
+         We don't want asfmux.c yet.
+
+2006-02-16 09:50:43 +0000  Jon Trowbridge <trow@ximian.com>
+
+         ext/mad/gstmad.c: Port fixes for bugs 314771, 308772, 140237, and 302625
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_init), (scale), (gst_mad_update_info),
+         (gst_mad_sink_event), (gst_mad_check_caps_reset), (gst_mad_chain),
+         (gst_mad_change_state):
+         Port fixes for bugs 314771, 308772, 140237, and 302625
+         from 0.8 (Patch by Jonathan Matthew, Fixes #329575)
+         Use GST_EVENT_FLUSH_STOP to clear data from the current input
+         buffer, to avoid using it for any future decoding.
+
+2006-02-15 15:48:07 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         asfdemux ported to 0.10. Does still need a bit of work (seems like there's something funky going on when timestamping...
+         Original commit message from CVS:
+         * configure.ac:
+         * gst/asfdemux/asfheaders.c: (gst_asf_identify_guid),
+         (gst_asf_get_guid_nick):
+         * gst/asfdemux/asfheaders.h:
+         * gst/asfdemux/gstasf.c: (plugin_init):
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+         (gst_asf_demux_class_init), (gst_asf_demux_init),
+         (gst_asf_demux_sink_event), (gst_asf_demux_handle_seek_event),
+         (gst_asf_demux_handle_src_event),
+         (gst_asf_demux_get_current_offset), (gst_asf_demux_chain),
+         (gst_asf_demux_skip_bytes), (gst_asf_demux_identify_guid),
+         (gst_asf_demux_get_uint8), (gst_asf_demux_get_uint16),
+         (gst_asf_demux_get_uint32), (gst_asf_demux_get_uint64),
+         (gst_asf_demux_get_var_length), (gst_asf_demux_get_buffer),
+         (gst_asf_demux_get_bytes), (gst_asf_demux_get_string),
+         (gst_asf_demux_get_guid), (gst_asf_demux_get_obj_file),
+         (gst_asf_demux_get_bitrate_record),
+         (gst_asf_demux_get_obj_comment), (gst_asf_demux_get_obj_header),
+         (gst_asf_demux_get_obj_header_ext), (gst_asf_demux_get_obj_stream),
+         (gst_asf_demux_get_replicated_data), (gst_asf_demux_get_obj_data),
+         (gst_asf_demux_get_obj_data_correction),
+         (gst_asf_demux_get_stream_audio),
+         (gst_asf_demux_get_stream_correction),
+         (gst_asf_demux_get_stream_video),
+         (gst_asf_demux_get_stream_video_format),
+         (gst_asf_demux_get_stream), (gst_asf_demux_setup_pad),
+         (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream),
+         (gst_asf_demux_process_stream),
+         (gst_asf_demux_get_gst_tag_from_tag_name),
+         (gst_asf_demux_commit_taglist),
+         (gst_asf_demux_process_ext_content_desc),
+         (gst_asf_demux_get_object_header), (gst_asf_demux_process_data),
+         (gst_asf_demux_process_header), (gst_asf_demux_process_file),
+         (gst_asf_demux_process_comment),
+         (gst_asf_demux_process_bitrate_props_object),
+         (gst_asf_demux_process_header_ext), (gst_asf_demux_process_object),
+         (gst_asf_demux_descramble_segment),
+         (gst_asf_demux_element_send_event),
+         (gst_asf_demux_send_event_unlocked), (gst_asf_demux_push_buffer),
+         (gst_asf_demux_process_chunk), (gst_asf_demux_process_segment),
+         (gst_asf_demux_handle_data), (gst_asf_demux_parse_data),
+         (gst_asf_demux_get_src_query_types),
+         (gst_asf_demux_handle_src_query), (gst_asf_demux_change_state):
+         * gst/asfdemux/gstasfdemux.h:
+         asfdemux ported to 0.10. Does still need a bit of work (seems like
+         there's something funky going on when timestamping video frames).
+         The seeking code is likely to make Wim cry, but hey, at least it
+         compiles.
+
+2006-02-15 10:18:39 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/amrnbdec.c: Some more comments.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_setcaps),
+         (gst_amrnbdec_chain), (gst_amrnbdec_state_change):
+         Some more comments.
+         * ext/mpeg2dec/gstmpeg2dec.c: (crop_buffer), (handle_slice):
+         Applied patch from Fabrizio Gennari, fixes #330844.
+
+2006-02-14 14:57:18 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.*: Let's try to play the title the user set via the URI handler or via properties instead of a...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_init),
+         (gst_dvd_read_src_class_init), (gst_dvd_read_src_start),
+         (gst_dvd_read_src_stop), (gst_dvd_read_src_goto_title),
+         (gst_dvd_read_src_set_property), (gst_dvd_read_src_get_property),
+         (gst_dvd_read_src_uri_get_uri), (gst_dvd_read_src_uri_set_uri):
+         * ext/dvdread/dvdreadsrc.h:
+         Let's try to play the title the user set via the URI handler or
+         via properties instead of always playing the first title. Also,
+         Also, count title/chapter/angle number in URI and properties
+         from 1 rather than 0.
+
+2006-02-13 14:09:26 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Don't implement GstBaseSrc::get_size or GstBaseSrc::is_seekable, otherwise GstBaseSrc will ...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_class_init),
+         (gst_dvd_read_src_get_size), (gst_dvd_read_src_do_seek),
+         (gst_dvd_read_src_do_duration_query):
+         Don't implement GstBaseSrc::get_size or GstBaseSrc::is_seekable,
+         otherwise GstBaseSrc will think we can operate pull_range based,
+         which we don't really, and typefinding will fail miserably.
+         Also, make seeking work somewhat (only works with flumpegdemux
+         at the moment, mpegstream needs fixing for that first).
+
+2006-02-13 14:00:35 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Only allocate buffer once we know exactly how much we need, rather than gratuitously alloca...
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_read),
+         (gst_dvd_read_src_create), (gst_dvd_read_src_src_event):
+         Only allocate buffer once we know exactly how much we need,
+         rather than gratuitously allocating 2MB-buffers all the time
+         even if we usually need much less than that. Also, demote
+         a debug message from DEBUG to LOG level.
+
+2006-02-10 12:40:54 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/dvdread/dvdreadsrc.c: Add some more debugging and fix duration query in BYTES.
+         Original commit message from CVS:
+         * ext/dvdread/dvdreadsrc.c: (gst_dvd_read_src_class_init),
+         (gst_dvd_read_src_seekable), (gst_dvd_read_src_get_size),
+         (gst_dvd_read_src_do_seek), (gst_dvd_read_src_do_duration_query),
+         (gst_dvd_read_src_do_position_query):
+         Add some more debugging and fix duration query in BYTES.
+
+2006-02-09 17:27:57 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Half-baked port to 0.10. Needs some love in the seeking department, but at least it does something.
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/Makefile.am:
+         * ext/dvdread/Makefile.am:
+         * ext/dvdread/dvdreadsrc.c:
+         * ext/dvdread/dvdreadsrc.h:
+         Half-baked port to 0.10. Needs some love
+         in the seeking department, but at least
+         it does something.
+         * ext/dvdread/stream_labels.c:
+         * ext/dvdread/stream_labels.h:
+         Remove these (we use ISO-639 language codes internally; applications
+         that want to translate those into language names for display to the
+         user should rely on the iso-codes package for that).
+
+2006-02-06 15:55:28 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/amrnbdec.*: Fix amrnbdec, handle events, take copy from adapter since the decoder apparently writes in the ...
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_init),
+         (gst_amrnbdec_setcaps), (gst_amrnbdec_event), (gst_amrnbdec_chain),
+         (gst_amrnbdec_state_change):
+         * ext/amrnb/amrnbdec.h:
+         Fix amrnbdec, handle events, take copy from adapter since the decoder
+         apparently writes in the source data.
+         Use some _scale_int, and precalc duration.
+         Fix some leaks, post ERROR messages.
+
+2006-02-06 11:34:23 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         docs/plugins/: Add cdio plugin to docs.
+         Original commit message from CVS:
+         * docs/plugins/Makefile.am:
+         * docs/plugins/gst-plugins-good-plugins-docs.sgml:
+         * docs/plugins/gst-plugins-good-plugins-sections.txt:
+         * docs/plugins/inspect/plugin-cdio.xml:
+         Add cdio plugin to docs.
+         * ext/cdio/gstcdiocddasrc.c:
+         Add gtk-doc blurb.
+         * ext/cdio/gstcdio.c:
+         The plugin is called 'cdio' not 'cddio'.
+
+2006-02-04 15:22:02 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/realmedia/rmdemux.c: One source pad not being linked is not an error condition when we're still parsing the heade...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
+         One source pad not being linked is not an error condition when we're
+         still parsing the header. In this case (e.g. where we don't have a
+         suitable decoder installed) just pretend everything is fine, so that
+         the demuxer will actually go on to signal no-more-pads when done
+         parsing the header, otherwise  decodebin/playbin will never post the
+         appropriate error message if decoders are not available.
+
+2006-02-03 18:24:54 +0000  Edgard Lima <edgard.lima@indt.org.br>
+
+       * ChangeLog:
+       * common:
+       * ext/mad/gstid3tag.c:
+       * gst/realmedia/rmdemux.c:
+         Just make it compile with --disable-gst-debug.
+         Original commit message from CVS:
+         Just make it compile with --disable-gst-debug.
+
+2006-01-31 22:03:30 +0000  Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
+
+         ext/mad/gstmad.c: Merge patch from Radoslaw Szkodzinski (bug 326734)
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_convert_src), (scale),
+         (gst_mad_check_caps_reset), (gst_mad_chain):
+         Merge patch from Radoslaw Szkodzinski (bug 326734)
+
+2006-01-30 22:00:18 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/mad/gstid3tag.c: fixing Gdate handling enabling mux/demux mode switching adding better debug output
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (tag_list_to_id3_tag_foreach),
+         (gst_id3_tag_get_tag_to_render), (gst_id3_tag_sink_event),
+         (gst_id3_tag_src_link), (gst_id3_tag_send_tag_event),
+         (gst_id3_tag_chain):
+         fixing Gdate handling
+         enabling mux/demux mode switching
+         adding better debug output
+
+2006-01-30 18:57:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/gstmpegparse.c: If we haven't set caps on a source pad yet, the caps on the pad are NULL, not un-fixed...
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_buffer):
+         If we haven't set caps on a source pad yet, the caps on the
+         pad are NULL, not un-fixed. Set caps on outgoing buffers.
+
+2006-01-23 18:37:16 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.*: Contrary to what the const char in the lame API might suggest, lame expects us to keep the string...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_finalize), (gst_lame_class_init),
+         (gst_lame_init), (add_one_tag), (gst_lame_set_metadata):
+         * ext/lame/gstlame.h:
+         Contrary to what the const char in the lame API might suggest,
+         lame expects us to keep the strings we pass to id3tag_set_foo()
+         around; it doesn't free them either though, so we have to store
+         them somewhere and free them later when we can be sure lame
+         doesn't need them any longer.
+
+2006-01-23 15:02:04 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/lame/gstlame.c: don't pass an uninitialised string pointer to lame if we don't know how to handle the tag type, a...
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (add_one_tag):
+         Fix handling of GST_TAG_DATE (#311679), don't pass an
+         uninitialised string pointer to lame if we don't know
+         how to handle the tag type, and fix minor memory leak.
+
+2006-01-23 10:15:27 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Fix debug message.
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Fix debug message.
+
+2006-01-22 12:00:46 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event): Erase spurious call to gst_segment_set_newsegment.
+         Original commit message from CVS:
+         2006-01-22  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
+         Erase spurious call to gst_segment_set_newsegment.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Call
+         the superclass method when handling NEWSEGMENT events.
+         (gst_dvd_demux_handle_dvd_event): Get rid of dvd-audio-shutdown
+         and dvd-audio-restart event handling. There are currently less
+         hackish ways of handling the sparse audio stream problem.
+
+2006-01-20 14:18:20 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         fix up error domains, error strings, and use of translation
+         Original commit message from CVS:
+         2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+         * ext/dvdnav/dvdnavsrc.c: (if):
+         * ext/dvdread/stream_labels.c:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_segment):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_loop):
+         fix up error domains, error strings, and use of translation
+         * po/POTFILES.in:
+         fix up this file, even though none of them are actually marked
+         for build yet.
+
+2006-01-19 21:32:05 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse): gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset) (gst_mpeg_...
+         Original commit message from CVS:
+         2006-01-19  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset)
+         (gst_mpeg_parse_process_event, gst_mpeg_parse_parse_packhead)
+         (gst_mpeg_parse_change_state):
+         Make timestamp adjustment somewhat milder. Actual timestamps are
+         now sent unmodified unless an actual gap is found in the
+         stream. This should fix time display when playing most MPEG
+         files.
+
+2006-01-19 00:10:51 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/cdio/: Fix build for libcdio versions >= 76; give slightly lower rank than cdparanoia.
+         Original commit message from CVS:
+         * ext/cdio/gstcdio.c: (gst_cdio_add_cdtext_field), (plugin_init):
+         * ext/cdio/gstcdio.h:
+         * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_get_cdtext):
+         Fix build for libcdio versions >= 76; give slightly lower rank
+         than cdparanoia.
+
+2006-01-18 19:30:36 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Port libcdio cdda source, formerly known as cddasrc, now known as cdiocddasrc (fixes #323327). Should also read CD-TE...
+         Original commit message from CVS:
+         * configure.ac:
+         * ext/Makefile.am:
+         * ext/cdio/Makefile.am:
+         * ext/cdio/gstcdio.c:
+         * ext/cdio/gstcdio.h:
+         * ext/cdio/gstcdiocddasrc.c:
+         * ext/cdio/gstcdiocddasrc.h:
+         Port libcdio cdda source, formerly known as cddasrc, now known as
+         cdiocddasrc (fixes #323327). Should also read CD-TEXT if available,
+         but that's not tested (fixes #317658).
+
+2006-01-18 09:30:00 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/mpegstream/gstmpegdemux.c: tss tss... always set caps on outgoing buffer.
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
+         tss tss... always set caps on outgoing buffer.
+
+2006-01-17 14:16:52 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         update spec file
+         Original commit message from CVS:
+         update spec file
+
+2006-01-13 19:30:31 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.10.1 ===
+
+2006-01-13 19:25:42 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         releasing 0.10.1
+         Original commit message from CVS:
+         releasing 0.10.1
+
+2006-01-11 11:44:02 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         prerelease
+         Original commit message from CVS:
+         prerelease
+
+2006-01-10 11:43:37 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Pass unhandled queries upstream (useful e.g. for SEEKING query)
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_query):
+         * ext/mad/gstid3tag.c: (gst_id3_tag_src_query):
+         * ext/mad/gstmad.c: (gst_mad_src_query):
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_query):
+         * ext/sidplay/gstsiddec.cc:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_handle_src_query):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_src_query):
+         Pass unhandled queries upstream (useful e.g. for SEEKING query)
+         (fixes #325652; based on patch by: Philippe); make rmdemux return
+         FALSE for position queries, instead of setting -1 as value and
+         returning TRUE.
+
+2006-01-05 21:36:49 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
+         Original commit message from CVS:
+         2006-01-05  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
+         (gst_mpeg_parse_process_event, gst_mpeg_parse_pad_added): Don't
+         rewrite timestamps in the case segments are being set from
+         upstream, but use timestamps unmodified. Also send proper position
+         values. This allows for correct time display and makes queries
+         work in sink elements.
+         * gst/mpegstream/gstdvddemux.h:
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
+         (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer):
+         Rename flush_filter to segment_filter, which is better represents
+         what the arreibute does.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event):
+         Activate segment filtering when a timestamp discontinuity is seen.
+
+2006-01-04 15:17:15 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Don't forget that we need to send out a newsegment event after a restart even if we don't have enou...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Don't forget that we need to send out a newsegment event after a
+         restart even if we don't have enough data to decode a frame right
+         now.
+
+2005-12-30 23:51:46 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event): Use the new "audio-shutdown" and "audio-restart" DVD e...
+         Original commit message from CVS:
+         2005-12-31  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
+         Use the new "audio-shutdown" and "audio-restart" DVD events
+         instead of the "spu-still-frame" event to shutdown and restart
+         the audio pipeline.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts):
+         Check for cases where the segment-based adjustment calculation
+         would produce negative values (which result in an overflow) and
+         return GST_CLOCK_TIME_NONE instead.
+         * gst/mpegstream/gstdvddemux.h:
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
+         (gst_dvd_demux_process_event, gst_dvd_demux_send_subbuffer):
+         Add a mechanism to discard audio buffers with timestamps outside
+         the currently set segment. This was causing (sometimes serious)
+         synchronization problems after seeking in DVDs with LPCM audio,
+         since VOBUs usually contain audio material that lies outside the
+         timestamp range specified by the header.
+
+2005-12-30 16:25:05 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mad/gstid3tag.c: Remove lingering reference to GstID3Demux
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_id3_tag_get_type):
+         Remove lingering reference to GstID3Demux
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_pes):
+         Don't output debug saying padding streams are unknown type,
+         because they're not
+
+2005-12-27 19:06:08 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstdvddemux.c (AUDIO_CAPS)
+         Original commit message from CVS:
+         2005-12-27  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstdvddemux.c (AUDIO_CAPS)
+         (gst_dvd_demux_get_audio_stream): Use audio/x-lpcm as mimetype for
+         LPCM.
+         * gstmpegdemux.h:
+         * gstmpegdemux.c (gst_mpeg_demux_get_video_stream)
+         (gst_mpeg_demux_get_audio_stream):
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_get_video_stream)
+         (gst_dvd_demux_get_audio_stream)
+         (gst_dvd_demux_get_subpicture_stream)
+         (gst_dvd_demux_send_subbuffer):
+         Send current* pad buffers with appropriate caps.
+
+2005-12-26 17:48:32 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/iec958/ac3iec.*: (NORMAL_CAPS_DEF, RAW_AUDIO_CAPS_DEF, ac3iec_class_init)
+         Original commit message from CVS:
+         2005-12-26  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/iec958/ac3iec.h:
+         * gst/iec958/ac3iec.c:
+         (NORMAL_CAPS_DEF, RAW_AUDIO_CAPS_DEF, ac3iec_class_init)
+         (ac3iec_init, ac3iec_set_property, ac3iec_get_property): Add a
+         raw-audio property to ac3iec958 that allows setting the source pad
+         caps to raw audio instead of audio/x-iec958. This makes it
+         possible to use ac3iec958 together with the normal alsasink
+         element to drive an external receiver that autodetects AC3
+         content.
+
+2005-12-23 15:48:04 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/iec958/ac3iec.*: Accept audio/x-ac3 and audio/ac3 to ac3iec958 element.
+         Original commit message from CVS:
+         * gst/iec958/ac3iec.c: (ac3iec_init), (ac3iec_setcaps),
+         (ac3iec_chain_dvd):
+         * gst/iec958/ac3iec.h:
+         Accept audio/x-ac3 and audio/ac3 to ac3iec958 element.
+
+2005-12-21 10:25:34 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: When getting a seek event, first check if the upstream element can handle it and only do ...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_src_event):
+         When getting a seek event, first check if the upstream element
+         can handle it and only do our own seek stuff when it can't
+         (should fix #322856).
+
+2005-12-21 09:58:43 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Really convert to BYTES format when we want to convert to bytes (use right variable; fixe...
+         Original commit message from CVS:
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * ext/mpeg2dec/gstmpeg2dec.c: (normal_seek):
+         Really convert to BYTES format when we want to convert
+         to bytes (use right variable; fixes #322856).
+
+2005-12-19 17:26:47 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         Big mpegparse clean up, second round:
+         Original commit message from CVS:
+         2005-12-19  Martin Soto  <martinsoto@users.sourceforge.net>
+         Big mpegparse clean up, second round:
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
+         Send and EOS event down the audio pipeline when an still frame
+         event arrives. This prevents the pipeline from locking when a
+         still menu comes directly after a flush.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset):
+         Don't send a newsegment in reset.
+         (gst_mpeg_parse_adjust_ts): Check for invalid timestamps.
+         (gst_mpeg_parse_handle_newsegment, gst_mpeg_parse_process_event):
+         Move the code of handle_newsegment to process_event. Send a
+         NEWSEGMENT after FLUSH_STOP.
+         (gst_mpeg_parse_change_state): Send a NEWSEGMENT right after
+         moving to PAUSED.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event)
+         (gst_mpeg_demux_class_init): Don't override send_event.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init)
+         (gst_mpeg_demux_send_event, gst_mpeg_demux_send_subbuffer)
+         (gst_mpeg_demux_reset):
+         * gst/mpegstream/gstmpegdemux.h:  Get rid of just_flushed
+         attribute.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
+         Reset the mpegparse element after a flush.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment):
+         Don't forward events.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_process_event):
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
+         handle_newsegment is not a virtual method anymore.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_newsegment)
+         (gst_mpeg_parse_reset, gst_mpeg_parse_class_init):
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): Get
+         rid of send_newsegment virtual method.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event): Only
+         handle DVD events and call the superclass method for other event
+         types.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event): Don't
+         override process_event anymore.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_event)
+         (gst_mpeg_parse_process_event): Move actual event processing to
+         process event so that subclasses can properly override or extend
+         it.
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
+         Eliminate time parameter in process event.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_init)
+         (gst_mpeg_demux_parse_packet, gst_mpeg_demux_parse_pes)
+         (gst_mpeg_demux_send_subbuffer):
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
+         (gst_mpeg_parse_parse_packhead, gst_mpeg_parse_event)
+         (gst_mpeg_parse_chain): Use the new adjust_ts method instead of
+         adding the value of the adjust attribute.
+         * gst/mpegstream/gstmpegdemux.h (struct _GstMPEGVideoStream): Get
+         rid of the adjust attribute. Now all timestamp adjustments are
+         performed by mpegparse using the current segment.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_adjust_ts)
+         (gst_mpeg_parse_class_init): Implement the adjust_ts method based
+         on the adjust attribute for SCR values and the current segment.
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass): New
+         adjust_ts virtual method to adjust timestamps for outgoing
+         buffers.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_newsegment)
+         (gst_mpeg_demux_parse_packet): Don't override send_newsegment.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
+         (gst_dvd_demux_handle_newsegment): Don't override
+         handle_newsegment.
+         (gst_dvd_demux_process_event, gst_dvd_demux_handle_dvd_event):
+         Check for DVD events in process_event instead of
+         handle_dvd_event.
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment)
+         (gst_mpeg_parse_send_newsegment, gst_mpeg_parse_send_event):
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_process_event)
+         (gst_mpeg_demux_send_event):
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event)
+         (gst_dvd_demux_handle_dvd_event):
+         Eliminate the time parameter in send_event.
+
+2005-12-18 15:08:15 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mad/gstid3tag.c: Fix typefinding in id3demux, and then remove it in favour of the new LGPL id3demux in gst-plugin...
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_id3_tag_do_typefind),
+         (gst_id3_tag_do_caps_nego), (gst_id3_tag_chain), (plugin_init):
+         Fix typefinding in id3demux, and then remove it in favour
+         of the new LGPL id3demux in gst-plugins-good
+         * ext/mad/gstmad.c: (gst_mad_dispose):
+         dispose can run more than once.
+
+2005-12-16 21:56:32 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         gst/asfdemux/gstasfmux.c: change some char* into char[]
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfmux.c: (gst_asfmux_file_start):
+         change some char* into char[]
+
+2005-12-15 17:06:10 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/realmedia/rmdemux.c: Remove memleak from unused GstRMDemuxStream
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
+         Remove memleak from unused GstRMDemuxStream
+
+2005-12-12 19:17:11 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/mad/gstid3tag.c: Use the correct function to free typefind factory list.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list),
+         (gst_id3_tag_do_typefind):
+         Use the correct function to free typefind factory list.
+
+2005-12-09 18:38:53 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: For position and duration queries in TIME format, try the peer first (might be a demuxer).
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_src_query):
+         For position and duration queries in TIME format, try the peer
+         first (might be a demuxer).
+
+2005-12-08 12:45:09 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment): Properly handle non contiguous VOBUs by adding the se...
+         Original commit message from CVS:
+         2005-12-08  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_newsegment):
+         Properly handle non contiguous VOBUs by adding the segment accum
+         field to the adjust value.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
+         (gst_dvd_demux_init, gst_dvd_demux_handle_newsegment): Extend
+         handle_newsegment to prevent sending actual newsegment events and
+         use tiemstamp rewriting instead.
+         (gst_dvd_demux_handle_dvd_event): Don't send a newsegment after
+         dvd-lang-codes.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_newsegment)
+         (gst_mpeg_parse_event):
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParseClass):
+         Add a new parameter to handle_newsegment to allow controlling
+         whether newsegment events are forwarded or not.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
+         (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer)
+         (gst_dvd_demux_reset):
+         last_end_ptm and discont_time aren't necessary anymore, since
+         timestamp adjustment is now replaced by newsegment events.
+         (gst_dvd_demux_init): Prevent MPEGParse from adjusting
+         timestamps.
+         * gst/mpegstream/gstdvddemux.h:
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event):
+         Don't handle dvd-nav-packet events anymore, since the are now
+         replaced by standard newsegment events.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_init)
+         (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_send_subbuffer)
+         (gst_dvd_demux_change_state):
+         * gst/mpegstream/gstdvddemux.h:
+         Get rid of the ignore_next_newmedia_discont hack.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_class_init)
+         (gst_dvd_demux_handle_newsegment):
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_class_init)
+         (gst_mpeg_demux_handle_newsegment): Don't override
+         handle_newsegment anymore. It was only necessary to handle
+         NEWMEDIA events.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_process_event)
+         (gst_dvd_demux_handle_dvd_event, gst_dvd_demux_set_cur_audio)
+         (gst_dvd_demux_set_cur_subpicture):
+         Reactivate handling of DVD events.
+         * gst/mpegstream/gstmpegparse.c (normal_seek)
+         (gst_mpeg_parse_handle_src_event)
+         (gst_mpeg_parse_handle_src_query):
+         First attempt at reenabling seek.
+         * gst/mpegstream/gstmpegparse.h:
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
+         (gst_mpeg_parse_update_streaminfo)
+         (gst_mpeg_parse_get_rate)
+         (gst_mpeg_parse_convert, gst_mpeg_parse_get_src_query_types)
+         (gst_mpeg_parse_handle_src_query):
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_new_output_pad):
+         Make queries work again.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_reset)
+         (gst_mpeg_parse_handle_newsegment)
+         (gst_mpeg_parse_send_newsegment, gst_mpeg_parse_pad_added)
+         (gst_mpeg_parse_chain, gst_mpeg_parse_handle_src_event):
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
+         Get rid of the newsegment_pending attribute, and rely instead on
+         proper timestamp adjustment.
+         * gst/mpegstream/gstmpegparse.c
+         (gst_mpeg_parse_get_src_event_masks): Erase.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init):
+         Initialize fields before creating pads to prevent the pad creation
+         callback from failing.
+         (gst_mpeg_parse_reset): Initialize new fields, and change
+         initialization order to match the order in the structure.
+         (gst_mpeg_parse_handle_newsegment): Forward new segment events
+         whenever possible, and update the current segment.
+         (gst_mpeg_parse_send_newsegment): Update the current segment and
+         pending_newsegment.
+         (gst_mpeg_parse_pad_added): Use the current segment to send
+         newsegment events to new pads.
+         (gst_mpeg_parse_chain): Properly add adjust time to sent buffers
+         and events. Properly update newsegment_pending.
+         * gst/mpegstream/gstmpegparse.h       (struct _GstMPEGParse):
+         New fields do_adjust and current_segment.
+         * gst/mpegstream/gstmpegdemux.c:
+         * gst/mpegstream/gstdvddemux.c:
+         * gst/mpegstream/gstmpegparse.h:
+         Rename handle_discont virtual method to handle_newsegment. Erase
+         some (already commented out support) for old NEW_MEDIA events.
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
+         (gst_mpeg_parse_reset, gst_mpeg_parse_handle_discont)
+         (gst_mpeg_parse_pad_added, gst_mpeg_parse_parse_packhead)
+         (gst_mpeg_parse_event, gst_mpeg_parse_chain):
+         Erase the "pending_scr" field, and replace it by a slightly
+         different handling of the current SCR. Document code blocks in
+         parse_packhead and chain.
+
+2005-12-07 11:50:10 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/mad/gstid3tag.c: g_warning() are only for really fatal warnings. If we can't decode a tag, just ignore that tag a...
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+         g_warning() are only for really fatal warnings. If we can't decode a
+         tag, just ignore that tag and do a GST_WARNING.
+
+2005-12-06 19:48:07 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * ext/a52dec/gsta52dec.h:
+       * ext/dvdread/dvdreadsrc.h:
+       * ext/lame/gstlame.h:
+       * ext/mad/gstid3tag.c:
+       * ext/mad/gstmad.c:
+       * ext/mad/gstmad.h:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+       * ext/sidplay/gstsiddec.h:
+       * gst/ac3parse/gstac3parse.c:
+       * gst/ac3parse/gstac3parse.h:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfdemux.h:
+       * gst/iec958/ac3iec.h:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+       * gst/mpegstream/gstdvddemux.h:
+       * gst/mpegstream/gstmpegclock.h:
+       * gst/mpegstream/gstmpegdemux.h:
+       * gst/mpegstream/gstmpegpacketize.h:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/mpegstream/gstmpegparse.h:
+       * gst/mpegstream/gstrfc2250enc.c:
+       * gst/mpegstream/gstrfc2250enc.h:
+       * gst/realmedia/rmdemux.c:
+       * gst/realmedia/rmdemux.h:
+       * gst/synaesthesia/synaescope.c:
+         expand tabs
+         Original commit message from CVS:
+         expand tabs
+
+2005-12-05 18:12:24 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.10.0 ===
+
+2005-12-05 18:04:06 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         releasing 0.10.0
+         Original commit message from CVS:
+         releasing 0.10.0
+
+2005-12-05 13:03:40 +0000  Andy Wingo <wingo@pobox.com>
+
+         Update for alloc_buffer changes.
+         Original commit message from CVS:
+         2005-12-05  Andy Wingo  <wingo@pobox.com>
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_push):
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_buffer):
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_raw):
+         * gst/iec958/ac3iec.c: (ac3iec_chain_raw):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_packet): Update for alloc_buffer changes.
+
+2005-12-05 09:33:32 +0000  Andy Wingo <wingo@pobox.com>
+
+         ext/mad/gstid3tag.c (plugin_init): Remove id3tag -- there's just id3demux and id3mux now. Fixes #323199.
+         Original commit message from CVS:
+         2005-12-05  Andy Wingo  <wingo@pobox.com>
+         * ext/mad/gstid3tag.c (plugin_init): Remove id3tag -- there's just
+         id3demux and id3mux now. Fixes #323199.
+
+2005-12-04 22:36:51 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         update spec file for latest changes
+         Original commit message from CVS:
+         update spec file for latest changes
+
+2005-12-02 12:28:03 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         fix silly Makefile.am bug so they link correctly again
+         Original commit message from CVS:
+         * ext/amrnb/Makefile.am:
+         * gst/realmedia/Makefile.am:
+         fix silly Makefile.am bug so they link correctly again
+
+2005-12-01 19:18:24 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.9.7 ===
+
+2005-12-01 19:14:57 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * LICENSE:
+       * NEWS:
+       * PORTED_09:
+       * RELEASE:
+       * common:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+       * docs/random/LICENSE:
+       * docs/random/PORTED_09:
+         releasing 0.9.7
+         Original commit message from CVS:
+         releasing 0.9.7
+
+2005-12-01 15:49:59 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * common:
+       * ext/amrnb/Makefile.am:
+       * gst/realmedia/Makefile.am:
+         Don't know how these escaped my eye before.  Fix link flags.
+         Original commit message from CVS:
+         Don't know how these escaped my eye before.  Fix link flags.
+
+2005-11-30 18:37:24 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * examples/Makefile.am:
+       * examples/capsfilter/Makefile.am:
+       * examples/capsfilter/capsfilter1.c:
+       * examples/gob/Makefile.am:
+       * examples/gob/gst-identity2.gob:
+       * examples/gstplay/.gitignore:
+       * examples/gstplay/Makefile.am:
+       * examples/gstplay/player.c:
+       * examples/indexing/.gitignore:
+       * examples/indexing/Makefile.am:
+       * examples/indexing/indexmpeg.c:
+       * examples/level/Makefile.am:
+       * examples/level/README:
+       * examples/level/demo.c:
+       * examples/level/plot.c:
+       * examples/stats/Makefile.am:
+       * examples/stats/mp2ogg.c:
+       * examples/switch/.gitignore:
+       * examples/switch/Makefile.am:
+       * examples/switch/switcher.c:
+         no examples
+         Original commit message from CVS:
+         no examples
+
+2005-11-29 11:26:35 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Ref events before sending them to multiple pads, after all gst_pad_send_event() takes ownership of e...
+         Original commit message from CVS:
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_event):
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_newsegment),
+         (gst_mpeg_parse_send_event):
+         Ref events before sending them to multiple pads, after all
+         gst_pad_send_event() takes ownership of events. Don't leak
+         events that have not been handled (fixes #322745).
+
+2005-11-28 19:13:51 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
+         Original commit message from CVS:
+         2005-11-28  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
+         (gst_dvd_demux_handle_dvd_event): Erase code to prevent mpegparse
+         from making timestamp adjustments. This will have to be re-added
+         in some form in the near future, but in order to do that, some nav
+         packet parsing will be necessary in mpegdemux.
+         * gst/mpegstream/gstmpegparse.h (struct _GstMPEGParse):
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_init)
+         (g_value_set_int, gst_mpeg_parse_set_property)
+         Get rid of do_adjust and use_adjust. Rename max_discont to
+         max_src_gap.
+         (gst_mpeg_parse_parse_packhead): When max_scr_gap has a value of
+         -1, no adjustment is made.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init):
+         Rename max_discont property to max_scr_gap. Erase "adjust"
+         property.
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_send_event): Don't
+         override send_event anymore, base class does the job.
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_send_event):
+         Base class now does most of the work.
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_send_event):
+         Generalize to forwarding the event to all source pads in the
+         element.
+         * gst/mpegstream/gstmpegparse.h:
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
+         (gst_mpeg_parse_init, gst_mpeg_parse_set_clock)
+         (gst_mpeg_parse_chain, gst_mpeg_parse_get_property)
+         (gst_mpeg_parse_set_property):
+         Clock synchronization doesn't make sense anymore for a
+         demultiplexer.
+
+2005-11-28 18:54:09 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/realmedia/rmdemux.c: Don't treat normal EOS as a fatal error.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_loop):
+         Don't treat normal EOS as a fatal error.
+
+2005-11-28 15:47:01 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/mad/gstmad.c: Proper warning statements,
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Proper warning statements,
+         Don't error if the src pad isn't linked when pushing.
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_change_state):
+         Proper state_change, avoids borkage when going to READY
+
+2005-11-27 15:34:00 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+       * gst-libs/Makefile.am:
+       * gst-libs/README:
+       * gst-libs/ext/.gitignore:
+       * gst-libs/gst/media-info/.gitignore:
+       * gst-libs/gst/play/.gitignore:
+       * gst-libs/gst/play/play.h:
+       * gst-libs/gst/play/play.vcproj:
+         no need for an AS_LIBTOOL call
+         Original commit message from CVS:
+         no need for an AS_LIBTOOL call
+
+2005-11-27 14:34:34 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * Makefile.am:
+       * common:
+       * gst-plugins-ugly.spec.in:
+         add ACLOCAL_AMFLAGS; remove old stuff from spec changelog
+         Original commit message from CVS:
+         add ACLOCAL_AMFLAGS; remove old stuff from spec changelog
+
+2005-11-25 17:02:41 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Prime libmpeg2's pumps with some null custom buffers to ensure it doesn't ask us to disca...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence):
+         Prime libmpeg2's pumps with some null custom buffers
+         to ensure it doesn't ask us to discard garbage later yay.
+
+2005-11-25 17:01:46 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Prime libmpeg2's pumps with some null custom buffers to ensure it ask us to discard garba...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_sequence):
+         Prime libmpeg2's pumps with some null custom buffers
+         to ensure it ask us to discard garbage later yay.
+
+2005-11-25 14:50:19 +0000  Michael Smith <msmith@xiph.org>
+
+         ext/a52dec/gsta52dec.*: Accept AC3 in audio/x-private1-ac3 format, which includes
+         Original commit message from CVS:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_init),
+         (gst_a52dec_sink_setcaps), (gst_a52dec_chain),
+         (gst_a52dec_chain_raw):
+         * ext/a52dec/gsta52dec.h:
+         Accept AC3 in audio/x-private1-ac3 format, which includes
+         DVD-specific headers, as well as raw AC3, for compatibility with
+         some demuxers.
+
+2005-11-25 00:03:52 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mad/gstmad.c: When pad_alloc returns other-than-GST_FLOW_OK and mad exits early, skip frame synthesis and consume...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         When pad_alloc returns other-than-GST_FLOW_OK and mad exits early,
+         skip frame synthesis and consume input data as if we'd done the
+         decode. Makes mad not error when the src pad is not connected.
+         (#319784)
+
+2005-11-24 13:58:55 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+       * ChangeLog:
+         Erase old CVS conflict line.
+         Original commit message from CVS:
+         Erase old CVS conflict line.
+
+2005-11-24 13:52:49 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init) (gst_mpeg_parse_handle_discont, gst_mpeg_parse_send_newsegm...
+         Original commit message from CVS:
+         2005-11-23  Martin Soto  <martinsoto@users.sourceforge.net>
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_class_init)
+         (gst_mpeg_parse_handle_discont, gst_mpeg_parse_send_newsegment)
+         (gst_mpeg_parse_chain):
+         * gst/mpegstream/gstmpegdemux.c (gst_mpeg_demux_class_init)
+         (gst_mpeg_demux_send_newsegment):
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_send_subbuffer):
+         * gst/mpegstream/gstmpegparse.h:
+         Rename send_discont method to send_newsegment and add parameters
+         to handle actual segments. Adapt code all around to run with the
+         new name and signature.
+         * gst/mpegstream/gstmpegdemux.c:
+         * gst/mpegstream/gstmpegparse.c:
+         * gst/mpegstream/gstdvddemux.c:
+         Convert to GST_BOILERPLATE.
+
+2005-11-24 12:23:04 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+         fix AS_LIBTOOL call
+         Original commit message from CVS:
+         fix AS_LIBTOOL call
+
+2005-11-23 21:26:35 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * Makefile.am:
+         add a torture target
+         Original commit message from CVS:
+         add a torture target
+
+2005-11-23 20:05:47 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.9.6 ===
+
+2005-11-23 19:57:04 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.signals:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         releasing 0.9.6
+         Original commit message from CVS:
+         releasing 0.9.6
+
+2005-11-23 00:26:42 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/realmedia/rmdemux.c: Fractional framerates.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_sink_event),
+         (gst_rmdemux_src_event), (gst_rmdemux_validate_offset),
+         (find_seek_offset_bytes), (find_seek_offset_time),
+         (gst_rmdemux_perform_seek), (gst_rmdemux_src_query),
+         (gst_rmdemux_loop), (gst_rmdemux_fourcc_isplausible),
+         (gst_rmdemux_chain), (gst_rmdemux_send_event),
+         (gst_rmdemux_add_stream), (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_parse_packet):
+         Fractional framerates.
+
+2005-11-23 00:12:24 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Use fractional framerates
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (src_templ),
+         (gst_mpeg2dec_negotiate_format), (handle_sequence),
+         (gst_mpeg2dec_sink_event):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Use fractional framerates
+
+2005-11-22 19:07:13 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegstream/gstmpegparse.c: set_clock returns a boolean.
+         Original commit message from CVS:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_set_clock):
+         set_clock returns a boolean.
+
+2005-11-22 18:39:36 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Fix seeking even more by sending the newsegment event with the right parameters. Should fix queryin...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         Fix seeking even more by sending the newsegment event with the
+         right parameters. Should fix querying in playbin/totem after
+         a seek.
+
+2005-11-22 17:39:36 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstmad.c: Fix seeking in stand-alone mode. Fix nonexistant enum value introduced in previous commit. Improve ...
+         Original commit message from CVS:
+         * ext/mad/gstmad.c: (gst_mad_mode_get_type), (gst_mad_src_query),
+         (normal_seek), (gst_mad_sink_event), (gst_mad_chain):
+         Fix seeking in stand-alone mode. Fix nonexistant enum value
+         introduced in previous commit. Improve debug messages here and
+         there. Actually return a proper return value in the sink event
+         handler.
+
+2005-11-22 17:15:25 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ext/lame/gstlame.c:
+         doh
+         Original commit message from CVS:
+         doh
+
+2005-11-22 17:04:38 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * ext/lame/gstlame.c:
+       * ext/mad/gstmad.c:
+       * ext/sidplay/gstsiddec.cc:
+         fix up GValueEnum
+         Original commit message from CVS:
+         fix up GValueEnum
+
+2005-11-22 12:39:29 +0000  Andy Wingo <wingo@pobox.com>
+
+       * ChangeLog:
+       * ext/lame/gstlame.c:
+       * ext/mad/gstid3tag.c:
+       * ext/sidplay/gstsiddec.cc:
+         Update for gst_tag_setter API changes.
+         Original commit message from CVS:
+         2005-11-22  Andy Wingo  <wingo@pobox.com>
+         * Update for gst_tag_setter API changes.
+
+2005-11-22 11:55:32 +0000  Andy Wingo <wingo@pobox.com>
+
+       * ChangeLog:
+       * ext/a52dec/gsta52dec.c:
+       * ext/mad/gstid3tag.c:
+       * ext/mad/gstmad.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/realmedia/rmdemux.c:
+         ext/a52dec/gsta52dec.c (gst_a52dec_sink_event) ext/mad/gstid3tag.c (gst_id3_tag_sink_event) ext/mad/gstmad.c (gst_mad...
+         Original commit message from CVS:
+         2005-11-22  Andy Wingo  <wingo@pobox.com>
+         * ext/a52dec/gsta52dec.c (gst_a52dec_sink_event)
+         * ext/mad/gstid3tag.c (gst_id3_tag_sink_event)
+         * ext/mad/gstmad.c (gst_mad_chain)
+         * gst/mpegaudioparse/gstmpegaudioparse.c
+         (gst_mp3parse_sink_event)
+         * gst/mpegstream/gstdvddemux.c (gst_dvd_demux_handle_dvd_event)
+         * gst/mpegstream/gstmpegparse.c (gst_mpeg_parse_handle_discont)
+         (gst_mpeg_parse_send_discont, gst_mpeg_parse_pad_added)
+         * gst/realmedia/rmdemux.c (gst_rmdemux_perform_seek)
+         (gst_rmdemux_chain, gst_rmdemux_add_stream): Run update-funcnames.
+
+2005-11-22 11:39:06 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/Makefile.am: libgsttagedit => libgsttag
+         Original commit message from CVS:
+         * ext/mad/Makefile.am:
+         libgsttagedit => libgsttag
+
+2005-11-21 23:50:02 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         ext/lame/gstlame.c: Don't take the stream lock
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_sink_event):
+         Don't take the stream lock
+
+2005-11-21 17:34:30 +0000  Andy Wingo <wingo@pobox.com>
+
+         ext/: Don't take the stream lock.
+         Original commit message from CVS:
+         2005-11-21  Andy Wingo  <wingo@pobox.com>
+         * ext/sidplay/gstsiddec.cc (gst_siddec_sink_event):
+         * ext/mpeg2dec/gstmpeg2dec.c (gst_mpeg2dec_sink_event):
+         * ext/mad/gstmad.c (gst_mad_sink_event):
+         * ext/a52dec/gsta52dec.c (gst_a52dec_sink_event): Don't take the
+         stream lock.
+         * gst/realmedia/rmdemux.c (gst_rmdemux_perform_seek): Update for
+         stream lock changes.
+
+2005-11-21 16:36:44 +0000  Andy Wingo <wingo@pobox.com>
+
+         *.*: Ran scripts/update-macros. Oh yes.
+         Original commit message from CVS:
+         2005-11-21  Andy Wingo  <wingo@pobox.com>
+         * *.h:
+         * *.c: Ran scripts/update-macros. Oh yes.
+
+2005-11-21 15:12:43 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/mpegstream/: Filler events have beem removed for now.
+         Original commit message from CVS:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_process_event):
+         Filler events have beem removed for now.
+
+2005-11-21 14:08:45 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         gst/: Update for GST_FOURCC_FORMAT API change.
+         Original commit message from CVS:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_video_stream):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_chain),
+         (gst_rmdemux_add_stream), (gst_rmdemux_parse_mdpr):
+         Update for GST_FOURCC_FORMAT API change.
+
+2005-11-21 10:32:55 +0000  Edward Hervey <bilboed@bilboed.com>
+
+         gst/: Modifications for disapearance of GST_PAD_IS_USABLE()
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain_raw):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_chain),
+         (gst_rmdemux_add_stream), (gst_rmdemux_parse_mdpr),
+         (gst_rmdemux_parse_packet):
+         Modifications for disapearance of GST_PAD_IS_USABLE()
+
+2005-11-18 16:14:00 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/iec958/ac3iec.c: Remove some setcaps brokenness.
+         Original commit message from CVS:
+         * gst/iec958/ac3iec.c: (ac3iec_init), (ac3iec_chain_dvd):
+         Remove some setcaps brokenness.
+         Don't crash on bad input.
+
+2005-11-15 22:46:23 +0000  Johan Dahlin <johan@gnome.org>
+
+         ext/mad/gstid3tag.c (gst_mad_id3_to_tag_list): unset GValues after calling transform.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c (gst_mad_id3_to_tag_list): unset GValues after
+         calling transform.
+         (gst_id3_tag_do_typefind): Unref caps
+         * ext/mad/gstmad.c (gst_mad_check_caps_reset): Ditto
+
+2005-11-15 21:00:44 +0000  Johan Dahlin <johan@gnome.org>
+
+       * ext/mad/gstmad.c:
+         remove accidentally commited hack
+         Original commit message from CVS:
+         remove accidentally commited hack
+
+2005-11-15 20:30:53 +0000  Johan Dahlin <johan@gnome.org>
+
+       * ext/mad/gstmad.c:
+         free pad templates
+         Original commit message from CVS:
+         free pad templates
+
+2005-11-15 14:19:38 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Set DELTA_UNIT flag on outgoing buffers if this is NOT a keyframe; nice-ify debug message...
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (handle_slice),
+         (gst_mpeg2dec_sink_event):
+         Set DELTA_UNIT flag on outgoing buffers if this is NOT a keyframe;
+         nice-ify debug message in event handler; add CHECKME.
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_event),
+         (gst_dvd_demux_send_event), (gst_dvd_demux_process_private),
+         (gst_dvd_demux_send_subbuffer), (gst_dvd_demux_reset),
+         (gst_dvd_demux_sync_stream_to_time):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
+         (gst_mpeg_demux_process_event), (gst_mpeg_demux_send_event),
+         (gst_mpeg_demux_handle_discont), (gst_mpeg_demux_new_output_pad),
+         (gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes),
+         (gst_mpeg_demux_send_subbuffer), (gst_mpeg_demux_process_private),
+         (gst_mpeg_demux_sync_stream_to_time),
+         (gst_mpeg_demux_handle_src_event), (gst_mpeg_demux_reset):
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
+         (gst_mpeg_parse_handle_discont), (gst_mpeg_parse_send_buffer),
+         (gst_mpeg_parse_process_event), (gst_mpeg_parse_send_discont),
+         (gst_mpeg_parse_send_event), (gst_mpeg_parse_event),
+         (gst_mpeg_parse_chain):
+         * gst/mpegstream/gstmpegparse.h:
+         Get rid of GST_PAD_IS_USABLE and fix GstFlowReturn vs. gboolean
+         return value confusion (gst_pad_push vs. gst_pad_send_event and
+         gst_pad_push_event); pass flow return values to caller;
+         miscellaneous fixes and clean-ups.
+
+2005-11-15 08:37:00 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst/mpegstream/gstdvddemux.c:
+         set rank to secondary until it works 100%
+         Original commit message from CVS:
+         set rank to secondary until it works 100%
+
+2005-11-15 07:59:58 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         add mpegstream plugin to spec file
+         Original commit message from CVS:
+         add mpegstream plugin to spec file
+
+2005-11-14 22:18:21 +0000  Martin Soto <martinsoto@users.sourceforge.net>
+
+         gst/mpegstream/Makefile.am (noinst_HEADERS): Add gstrfc2250enc.h.
+         Original commit message from CVS:
+         2005-11-14  Martin Soto  <soto@localhost.localdomain>
+         * gst/mpegstream/Makefile.am (noinst_HEADERS): Add
+         gstrfc2250enc.h.
+
+2005-11-14 21:20:21 +0000  Josef Zlomek <josef.zlomek@xeris.cz>
+
+         partially port the mpegstream plugin to GStreamer 0.9.
+         Original commit message from CVS:
+         2005-11-14  Martin Soto  <martinsoto@users.sourceforge.net>
+         * configure.ac:
+         * gst/mpegstream/Makefile.am:
+         * gst/mpegstream/gstdvddemux.c:
+         * gst/mpegstream/gstdvddemux.h:
+         * gst/mpegstream/gstmpegdemux.c:
+         * gst/mpegstream/gstmpegdemux.h:
+         * gst/mpegstream/gstmpegpacketize.c:
+         * gst/mpegstream/gstmpegpacketize.h:
+         * gst/mpegstream/gstmpegparse.c:
+         * gst/mpegstream/gstmpegparse.h:
+         * gst/mpegstream/gstmpegstream.c:
+         * gst/mpegstream/gstrfc2250enc.c:
+         * gst/mpegstream/gstrfc2250enc.h:
+         Applied patch from Josef Zlomek <josef.zlomek@xeris.cz> to
+         partially port the mpegstream plugin to GStreamer 0.9.
+
+2005-11-14 17:13:20 +0000  Andy Wingo <wingo@pobox.com>
+
+         configure.ac (GST_PLUGIN_LDFLAGS): -no-undefined for better debugging, allows dll builds on windows. Fixes #316076.
+         Original commit message from CVS:
+         2005-11-14  Andy Wingo  <wingo@pobox.com>
+         * configure.ac (GST_PLUGIN_LDFLAGS): -no-undefined for better
+         debugging, allows dll builds on windows. Fixes #316076.
+
+2005-11-11 19:37:33 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         back to head
+         Original commit message from CVS:
+         back to head
+
+=== release 0.9.5 ===
+
+2005-11-11 19:35:55 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * common:
+       * configure.ac:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         releasing 0.9.5
+         Original commit message from CVS:
+         releasing 0.9.5
+
+2005-10-27 21:50:11 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Forward GstFlowReturn about everywhere.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_reset),
+         (gst_mpeg2dec_alloc_buffer), (gst_mpeg2dec_negotiate_format),
+         (handle_sequence), (handle_picture), (handle_slice),
+         (gst_mpeg2dec_chain), (gst_mpeg2dec_src_query), (normal_seek),
+         (gst_mpeg2dec_src_event), (gst_mpeg2dec_change_state):
+         Forward GstFlowReturn about everywhere.
+         Handle seeking correctly.
+
+2005-10-27 17:26:13 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: Small cleanups in refcounting.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format),
+         (handle_sequence), (handle_slice), (gst_mpeg2dec_chain),
+         (gst_mpeg2dec_src_query), (gst_mpeg2dec_change_state):
+         Small cleanups in refcounting.
+
+2005-10-26 16:45:04 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/mpeg2dec/gstmpeg2dec.*: Removed lots of dubious code.
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+         (gst_mpeg2dec_dispose), (gst_mpeg2dec_reset),
+         (gst_mpeg2dec_alloc_buffer), (gst_mpeg2dec_negotiate_format),
+         (handle_sequence), (handle_picture):
+         * ext/mpeg2dec/gstmpeg2dec.h:
+         Removed lots of dubious code.
+         Handle flushing and seeking correctly. Still leaks though...
+
+2005-10-24 13:37:47 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * ChangeLog:
+       * configure.ac:
+         port plugins listing changes
+         Original commit message from CVS:
+         port plugins listing changes
+
+2005-10-23 23:06:09 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.9.4 ===
+
+2005-10-23 22:44:44 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * Makefile.am:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins.args:
+       * docs/plugins/gst-plugins-ugly-plugins.signals:
+       * docs/plugins/inspect/plugin-a52dec.xml:
+       * docs/plugins/inspect/plugin-amrnb.xml:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpeg2dec.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+       * gst/realmedia/rmdemux.c:
+       * po/POTFILES.in:
+         releasing 0.9.4
+         Original commit message from CVS:
+         releasing 0.9.4
+
+2005-10-23 14:32:49 +0000  Julien Moutte <julien@moutte.net>
+
+         gst/realmedia/rmdemux.c: STOPPED->FAILED
+         Original commit message from CVS:
+         2005-10-23  Julien MOUTTE  <julien@moutte.net>
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_loop): STOPPED->FAILED
+
+2005-10-21 16:22:00 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         add packaging of a52dec
+         Original commit message from CVS:
+         add packaging of a52dec
+
+2005-10-21 11:58:38 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: Set correct stream time in newsegment event.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_validate_offset),
+         (gst_rmdemux_perform_seek), (gst_rmdemux_src_query):
+         Set correct stream time in newsegment event.
+
+2005-10-20 22:43:04 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ext/Makefile.am:
+         fix distcheck
+         Original commit message from CVS:
+         fix distcheck
+
+2005-10-20 22:40:07 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * ext/Makefile.am:
+         fix distcheck
+         Original commit message from CVS:
+         fix distcheck
+
+2005-10-20 09:51:58 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/a52dec/: Re-enable CPU flags, use liboil to get them.
+         Original commit message from CVS:
+         * ext/a52dec/Makefile.am:
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_base_init),
+         (gst_a52dec_class_init), (gst_a52dec_sink_event),
+         (gst_a52dec_change_state):
+         * ext/a52dec/gsta52dec.h:
+         Re-enable CPU flags, use liboil to get them.
+
+2005-10-20 09:00:30 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         Port AC3 decoder to 0.9 (#318849).
+         Original commit message from CVS:
+         Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+         * configure.ac:
+         * ext/a52dec/Makefile.am:
+         * ext/a52dec/gsta52dec.c:
+         * ext/a52dec/gsta52dec.h:
+         Port AC3 decoder to 0.9 (#318849).
+
+2005-10-20 08:30:33 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/sidplay/gstsiddec.cc: Small fixes and more error messages.
+         Original commit message from CVS:
+         * ext/sidplay/gstsiddec.cc:
+         Small fixes and more error messages.
+
+2005-10-19 16:01:35 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         API change fixen.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_query),
+         (gst_amrnbparse_state_change):
+         * ext/mad/gstid3tag.c: (gst_id3_tag_src_query):
+         * ext/mad/gstmad.c: (gst_mad_get_query_types), (gst_mad_src_query):
+         * ext/mpeg2dec/gstmpeg2dec.c:
+         * ext/sidplay/gstsiddec.cc:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_validate_offset),
+         (gst_rmdemux_src_query), (gst_rmdemux_src_query_types):
+         API change fixen.
+
+2005-10-19 12:43:28 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: GST_DOC has been renamed to GST_DOCBOOK_CHECK
+         Original commit message from CVS:
+         * configure.ac:
+         GST_DOC has been renamed to GST_DOCBOOK_CHECK
+
+2005-10-19 09:47:31 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         configure.ac: some docs I had
+         Original commit message from CVS:
+         * configure.ac:
+         some docs I had
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_chain):
+         trivial fixes
+
+2005-10-18 13:23:22 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/realmedia/rmdemux.c: segment-start/done API change.
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_validate_offset),
+         (gst_rmdemux_perform_seek):
+         segment-start/done API change.
+
+2005-10-17 17:50:45 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * common:
+       * gst/iec958/ac3iec.c:
+         Set buffer durations on IEC958 buffers.
+         Original commit message from CVS:
+         Set buffer durations on IEC958 buffers.
+
+2005-10-16 17:06:42 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         configure.ac: Fix glib check
+         Original commit message from CVS:
+         * configure.ac:
+         Fix glib check
+
+2005-10-13 19:14:25 +0000  Tim-Philipp Müller <tim@centricular.net>
+
+         ext/mad/gstid3tag.c: Fix handling of GST_TAG_DATE, which is now of type GST_TYPE_DATE.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+         Fix handling of GST_TAG_DATE, which is now of type GST_TYPE_DATE.
+
+2005-10-13 15:29:56 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         examples/stats/mp2ogg.c: yes, typo fixes
+         Original commit message from CVS:
+         * examples/stats/mp2ogg.c:
+         yes, typo fixes
+
+2005-10-12 14:30:36 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         renamed GST_FLAGS macros to GST_OBJECT_FLAGS moved bitshift from macro to enum definition
+         Original commit message from CVS:
+         * examples/indexing/indexmpeg.c: (main):
+         * ext/a52dec/gsta52dec.c: (gst_a52dec_init):
+         * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_is_open),
+         (dvdnavsrc_set_property), (dvdnavsrc_open), (dvdnavsrc_close),
+         (dvdnavsrc_event), (dvdnavsrc_convert), (dvdnavsrc_query):
+         * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_set_property),
+         (dvdreadsrc_srcpad_query), (dvdreadsrc_get),
+         (dvdreadsrc_open_file), (dvdreadsrc_close_file):
+         * ext/dvdread/dvdreadsrc.h:
+         * ext/lame/gstlame.h:
+         * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init):
+         * gst/asfdemux/gstasfmux.c: (gst_asfmux_init):
+         * gst/iec958/ac3iec.h:
+         * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_init):
+         * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_init):
+         * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init):
+         * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_init):
+         * gst/synaesthesia/gstsynaesthesia.c: (gst_synaesthesia_init):
+         renamed GST_FLAGS macros to GST_OBJECT_FLAGS
+         moved bitshift from macro to enum definition
+
+2005-10-11 16:37:16 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         newsegment API update.
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c: (gst_id3_tag_sink_event):
+         * ext/mad/gstmad.c: (gst_mad_chain):
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain):
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_perform_seek),
+         (gst_rmdemux_chain), (gst_rmdemux_add_stream):
+         newsegment API update.
+
+2005-10-06 13:14:38 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/amrnbdec.c: Mark invalid frame sizes
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c:
+         Mark invalid frame sizes
+         * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_chain):
+         UNUSABLE is not to be used here, just push out stuff so
+         probes can continue linking or making the pad usable.
+
+2005-10-05 11:25:51 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/realmedia/rmdemux.c:
+         Improve seek error-resilience.
+         Original commit message from CVS:
+         Improve seek error-resilience.
+         Better error handling generally.
+
+2005-10-03 17:59:55 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * configure.ac:
+         back to head
+         Original commit message from CVS:
+         back to head
+
+=== release 0.9.3 ===
+
+2005-10-03 17:49:44 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * README:
+       * configure.ac:
+       * ext/sidplay/Makefile.am:
+         release time
+         Original commit message from CVS:
+         release time
+
+2005-09-30 16:43:12 +0000  Michael Smith <msmith@xiph.org>
+
+       * gst/realmedia/rmdemux.h:
+         Forgot to commit this file. I hate Nano.
+         Original commit message from CVS:
+         Forgot to commit this file. I hate Nano.
+
+2005-09-30 16:39:47 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * common:
+       * gst/realmedia/rmdemux.c:
+         Sanity checks and memory leak fixes for real demuxer
+         Original commit message from CVS:
+         Sanity checks and memory leak fixes for real demuxer
+
+2005-09-29 13:44:15 +0000  Michael Smith <msmith@xiph.org>
+
+         gst/realmedia/rmdemux.c: Real demuxer fixes. Make it more bulletproof against bad data, identify a few more stream ty...
+         Original commit message from CVS:
+         * gst/realmedia/rmdemux.c: (gst_rmdemux_src_event),
+         (gst_rmdemux_perform_seek), (gst_rmdemux_loop),
+         (gst_rmdemux_send_event), (gst_rmdemux_add_stream),
+         (gst_rmdemux_parse_mdpr), (gst_rmdemux_parse_packet):
+         Real demuxer fixes. Make it more bulletproof against bad data,
+         identify a few more stream types.
+         Fix seeking so that it works (at least with the seek example
+         program; it still fails with totem).
+
+2005-09-26 14:41:23 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.c: Set correct caps on buffers too.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c:
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain):
+         Set correct caps on buffers too.
+
+2005-09-26 14:31:53 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/mpegaudioparse/gstmpegaudioparse.*: Put timestamps on buffers.
+         Original commit message from CVS:
+         * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_init),
+         (gst_mp3parse_sink_event), (gst_mp3parse_chain):
+         * gst/mpegaudioparse/gstmpegaudioparse.h:
+         Put timestamps on buffers.
+
+2005-09-21 22:21:22 +0000  Flavio Oliveira <flavio.oliveira@indt.org.br>
+
+       * ChangeLog:
+       * ext/amrnb/amrnbenc.c:
+         Changed amrnbenc description, it is an encoder, not decoder.
+         Original commit message from CVS:
+         Changed amrnbenc description, it is an encoder, not decoder.
+
+2005-09-21 16:21:45 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/iec958/ac3_padder.c:
+       * gst/iec958/ac3_padder.h:
+       * gst/iec958/ac3iec.c:
+         Various changes to AC3->IEC958 framer. Mostly to make our IEC958 headers and dump the frame (as a probable sync failu...
+         Original commit message from CVS:
+         Various changes to AC3->IEC958 framer. Mostly to make our IEC958 headers
+         more accurate, and to check AC3 checksums (both of them in each frame),
+         and dump the frame (as a probable sync failure) if they don't match.
+         General code cleanup, improved comments. Changed to not construct the
+         header backwards, and not byteswap everything else. If we end up needing
+         to do little-endian output, we should swap in the element doing the
+         output (AC3 is big-endian).
+
+2005-09-20 17:37:54 +0000  Christian Schaller <uraeus@gnome.org>
+
+       * gst-plugins-ugly.spec.in:
+         fix spec file for ugly
+         Original commit message from CVS:
+         fix spec file for ugly
+
+2005-09-19 23:25:07 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * docs/plugins/inspect/plugin-lame.xml:
+         revert empty commit
+         Original commit message from CVS:
+         revert empty commit
+
+2005-09-19 23:24:12 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * docs/plugins/scan.stamp:
+         whoops, wrong files
+         Original commit message from CVS:
+         whoops, wrong files
+
+2005-09-19 23:21:31 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+         docs/plugins/gst-plugins-ugly-plugins.*: commit missing files
+         Original commit message from CVS:
+         * docs/plugins/gst-plugins-ugly-plugins.args:
+         * docs/plugins/gst-plugins-ugly-plugins.hierarchy:
+         * docs/plugins/gst-plugins-ugly-plugins.interfaces:
+         * docs/plugins/gst-plugins-ugly-plugins.prerequisites:
+         commit missing files
+         * docs/plugins/inspect/plugin-lame.xml:
+         update
+
+2005-09-19 16:44:13 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * Makefile.am:
+       * common:
+       * gst-plugins-ugly.spec.in:
+         add check-valgrind target
+         Original commit message from CVS:
+         add check-valgrind target
+
+2005-09-19 13:46:35 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * docs/plugins/scanobj-build.stamp:
+         add stamp
+         Original commit message from CVS:
+         add stamp
+
+2005-09-19 11:07:40 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/lame/gstlame.c: Set caps on outgoing buffers.
+         Original commit message from CVS:
+         * ext/lame/gstlame.c: (gst_lame_chain):
+         Set caps on outgoing buffers.
+
+2005-09-16 16:04:28 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * ext/lame/gstlame.c:
+       * ext/lame/gstlame.h:
+         clean up further so we don't try to set up five times for a simple pipeline
+         Original commit message from CVS:
+         clean up further so we don't try to set up five times for
+         a simple pipeline
+
+2005-09-16 15:43:08 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * common:
+       * gst/iec958/ac3iec.c:
+         Set setcaps function on sink pad, not source pad. Produce correct caps on output buffers.
+         Original commit message from CVS:
+         Set setcaps function on sink pad, not source pad. Produce correct caps
+         on output buffers.
+
+2005-09-11 17:53:12 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         update inspect with source
+         Original commit message from CVS:
+         update inspect with source
+
+2005-09-07 13:42:44 +0000  Stefan Kost <ensonic@users.sourceforge.net>
+
+         ext/mad/gstid3tag.c: gsttaginterface.h -> gsttagsetter.h
+         Original commit message from CVS:
+         * ext/mad/gstid3tag.c:
+         gsttaginterface.h -> gsttagsetter.h
+
+2005-09-06 14:06:51 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * configure.ac:
+         back to HEAD
+         Original commit message from CVS:
+         back to HEAD
+
+=== release 0.9.1 ===
+
+2005-09-06 14:05:40 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * ChangeLog:
+       * NEWS:
+       * README:
+       * RELEASE:
+       * autogen.sh:
+       * configure.ac:
+         releasing 0.9.2
+         Original commit message from CVS:
+         releasing 0.9.2
+
+2005-09-06 12:00:33 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         ext/amrnb/: State change function updates.
+         Original commit message from CVS:
+         * ext/amrnb/amrnbdec.c: (gst_amrnbdec_state_change):
+         * ext/amrnb/amrnbenc.c: (gst_amrnbenc_state_change):
+         * ext/amrnb/amrnbparse.c: (gst_amrnbparse_state_change):
+         State change function updates.
+
+2005-09-05 17:24:20 +0000  Jan Schmidt <thaytan@mad.scientist.com>
+
+         ext/mpeg2dec/gstmpeg2dec.c: GST_CAT_SEEK disappeared from the public API at some point
+         Original commit message from CVS:
+         * ext/mpeg2dec/gstmpeg2dec.c:
+         GST_CAT_SEEK disappeared from the public API at some point
+
+2005-09-05 11:42:10 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * gst/iec958/ac3_padder.c:
+       * gst/iec958/ac3_padder.h:
+         doc fixes
+         Original commit message from CVS:
+         doc fixes
+
+2005-09-04 19:28:29 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * Makefile.am:
+       * autogen.sh:
+       * common:
+       * configure.ac:
+       * docs/plugins/gst-plugins-ugly-plugins-docs.sgml:
+       * docs/plugins/inspect-build.stamp:
+       * docs/plugins/inspect.stamp:
+       * docs/plugins/inspect/plugin-dvdlpcmdec.xml:
+       * docs/plugins/inspect/plugin-iec958.xml:
+       * docs/plugins/inspect/plugin-lame.xml:
+       * docs/plugins/inspect/plugin-mad.xml:
+       * docs/plugins/inspect/plugin-mpegaudioparse.xml:
+       * docs/plugins/inspect/plugin-rmdemux.xml:
+         docs for ugly plugins
+         Original commit message from CVS:
+         docs for ugly plugins
+
+2005-09-02 18:01:33 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * gst-plugins-ugly.spec.in:
+       * gst/iec958/Makefile.am:
+         build fixes
+         Original commit message from CVS:
+         build fixes
+
+2005-09-02 17:04:39 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/iec958/ac3iec.c:
+         Accept audio/x-private1-a3c on sink pad
+         Original commit message from CVS:
+         Accept audio/x-private1-a3c on sink pad
+
+2005-09-02 17:01:14 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * gst-plugins-ugly.spec.in:
+         spec updates
+         Original commit message from CVS:
+         spec updates
+
+2005-09-02 15:43:54 +0000  Andy Wingo <wingo@pobox.com>
+
+       * examples/gstplay/player.c:
+       * examples/stats/mp2ogg.c:
+       * ext/a52dec/gsta52dec.c:
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c:
+       * ext/amrnb/amrnbparse.c:
+       * ext/dvdnav/dvdnavsrc.c:
+       * ext/dvdread/dvdreadsrc.c:
+       * ext/lame/gstlame.c:
+       * ext/mad/gstid3tag.c:
+       * ext/mad/gstmad.c:
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * gst/ac3parse/gstac3parse.c:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfmux.c:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/iec958/ac3iec.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegparse.c:
+       * gst/mpegstream/gstrfc2250enc.c:
+       * gst/realmedia/rmdemux.c:
+       * gst/synaesthesia/gstsynaesthesia.c:
+         All plugins updated for element state changes.
+         Original commit message from CVS:
+         2005-09-02  Andy Wingo  <wingo@pobox.com>
+         * All plugins updated for element state changes.
+
+2005-09-02 14:19:17 +0000  Michael Smith <msmith@xiph.org>
+
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/iec958/ac3iec.c:
+         Fix return types in setcaps functions
+         Original commit message from CVS:
+         Fix return types in setcaps functions
+
+2005-09-02 13:37:13 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/iec958/ac3iec.c:
+         Changes to correctly use first_access parameter in ac3 and lpcm plugins.
+         Original commit message from CVS:
+         Changes to correctly use first_access parameter in ac3 and lpcm plugins.
+         Some general cleanups in iec958 framer.
+
+2005-09-01 21:07:34 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * m4/Makefile.am:
+       * m4/as-arts.m4:
+       * m4/esd.m4:
+       * m4/gst-alsa.m4:
+       * m4/gst-artsc.m4:
+       * m4/gst-matroska.m4:
+       * m4/ogg.m4:
+       * m4/vorbis.m4:
+         fix distcheck; remove some old m4s
+         Original commit message from CVS:
+         fix distcheck; remove some old m4s
+
+2005-09-01 17:31:21 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * configure.ac:
+       * gst/iec958/Makefile.am:
+       * gst/iec958/ac3_padder.c:
+       * gst/iec958/ac3_padder.h:
+       * gst/iec958/ac3iec.c:
+       * gst/iec958/ac3iec.h:
+         AC3 -> IEC958 (S/PDIF) framer, based on Martin Soto's 0.8 plugin
+         Original commit message from CVS:
+         AC3 -> IEC958 (S/PDIF) framer, based on Martin Soto's 0.8 plugin
+
+2005-09-01 11:52:34 +0000  Wim Taymans <wim.taymans@gmail.com>
+
+         gst/dvdlpcmdec/gstdvdlpcmdec.c: Cleanups, fixed header parsing and stripping.
+         Original commit message from CVS:
+         * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_setcaps),
+         (gst_dvdlpcmdec_chain_dvd), (gst_dvdlpcmdec_chain_raw),
+         (gst_dvdlpcmdec_change_state):
+         Cleanups, fixed header parsing and stripping.
+
+2005-09-01 11:34:39 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         Use the right bytes when parsing the LPCM dvd header
+         Original commit message from CVS:
+         Use the right bytes when parsing the LPCM dvd header
+
+2005-09-01 11:16:15 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+         Return the correct values from chain function
+         Original commit message from CVS:
+         Return the correct values from chain function
+
+2005-09-01 10:04:53 +0000  Thomas Vander Stichele <thomas@apestaart.org>
+
+       * common:
+       * docs/Makefile.am:
+       * docs/plugins/.gitignore:
+       * docs/random/ChangeLog-0.8:
+       * docs/version.entities.in:
+         adding doc stuff
+         Original commit message from CVS:
+         adding doc stuff
+
+2005-08-31 19:37:08 +0000  Michael Smith <msmith@xiph.org>
+
+       * ChangeLog:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         Restructure LPCM decoder to not expect the demuxer to parse the LPCM header; instead do this internally. Also support...
+         Original commit message from CVS:
+         Restructure LPCM decoder to not expect the demuxer to parse the LPCM
+         header; instead do this internally. Also support the old way, using
+         a different mime-type. CVS:
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..b42a17a
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,182 @@
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..08ceae8
--- /dev/null
@@ -0,0 +1,48 @@
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+SUBDIRS = \
+       gst-libs gst ext docs m4 tests common pkgconfig po
+
+# include before EXTRA_DIST for win32 assignment
+include $(top_srcdir)/common/win32.mak
+       
+EXTRA_DIST = \
+       gst-plugins-ugly.spec depcomp \
+       AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
+       ChangeLog gst-plugins-ugly.doap autogen.sh \
+       $(win32)
+       
+
+DISTCLEANFILES = _stdint.h
+
+ACLOCAL_AMFLAGS = -I m4 -I common/m4
+
+include $(top_srcdir)/common/release.mak
+include $(top_srcdir)/common/po.mak
+
+check-valgrind:
+       cd tests/check && make check-valgrind
+
+if HAVE_GST_CHECK
+check-torture:
+       cd tests/check && make torture
+else
+check-torture:
+       true
+endif
+
+win32-update:
+       cp $(top_builddir)/win32/common/config.h-new \
+           $(top_builddir)/win32/common/config.h
+
+include $(top_srcdir)/common/coverage/lcov.mak
+
+# cruft: plugins that have been merged or moved or renamed
+
+CRUFT_FILES = \
+       $(top_builddir)/common/shave \
+       $(top_builddir)/common/shave-libtool
+
+include $(top_srcdir)/common/cruft.mak
+
+all-local: check-cruft
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..510753a
--- /dev/null
@@ -0,0 +1,1145 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+
+# various tests to make sure we dist the win32 stuff (for MSVC builds) right
+
+# include this snippet to add a common release: target by using
+# include $(top_srcdir)/common/release.mak
+
+# checks for left-over files in the (usually uninstalled) tree, ie. for
+# stuff that best be deleted to avoid problems like having old plugin binaries
+# lying around.
+#
+# set CRUFT_FILES and/or CRUFT_DIRS in your Makefile.am when you include this
+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@
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(srcdir)/gst-plugins-ugly.spec.in \
+       $(top_srcdir)/common/coverage/lcov.mak \
+       $(top_srcdir)/common/cruft.mak $(top_srcdir)/common/po.mak \
+       $(top_srcdir)/common/release.mak \
+       $(top_srcdir)/common/win32.mak $(top_srcdir)/configure \
+       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS compile \
+       config.guess config.rpath config.sub depcomp install-sh \
+       ltmain.sh missing
+subdir = .
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = gst-plugins-ugly.spec
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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 dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+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"
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I m4 -I common/m4
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+SUBDIRS = \
+       gst-libs gst ext docs m4 tests common pkgconfig po
+
+
+# the MANIFEST contains all win32 related files that should be disted
+win32 = $(shell cat $(top_srcdir)/win32/MANIFEST)
+
+# wildcard is apparently not portable to other makes, hence the use of find
+# these are library .def files with the symbols to export
+win32defs = $(shell find $(top_srcdir)/win32/common -name '*.def')
+
+# wildcard is apparently not portable to other makes, hence the use of find
+# these are files that need to be disted with CRLF line endings:
+win32crlf = $(shell find $(top_srcdir)/win32 -name '*.dsw' -o -name '*.dsp')
+
+# include before EXTRA_DIST for win32 assignment
+EXTRA_DIST = \
+       gst-plugins-ugly.spec depcomp \
+       AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
+       ChangeLog gst-plugins-ugly.doap autogen.sh \
+       $(win32)
+
+DISTCLEANFILES = _stdint.h
+
+# make bz2 as well
+AUTOMAKE_OPTIONS = dist-bzip2
+
+# cruft: plugins that have been merged or moved or renamed
+CRUFT_FILES = \
+       $(top_builddir)/common/shave \
+       $(top_builddir)/common/shave-libtool
+
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh: Makefile
+       @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           echo ' $(SHELL) ./config.status'; \
+           $(SHELL) ./config.status;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+       esac;
+$(top_srcdir)/common/win32.mak $(top_srcdir)/common/release.mak $(top_srcdir)/common/po.mak $(top_srcdir)/common/coverage/lcov.mak $(top_srcdir)/common/cruft.mak:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+gst-plugins-ugly.spec: $(top_builddir)/config.status $(srcdir)/gst-plugins-ugly.spec.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool config.lt
+
+# 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) config.h.in $(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) config.h.in $(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) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS) config.h.in $(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)
+       $(am__remove_distdir)
+       test -d "$(distdir)" || mkdir "$(distdir)"
+       @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
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
+         ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+         ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+       $(am__remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+       *.zip*) \
+         unzip $(distdir).zip ;;\
+       esac
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) \
+         && $(MAKE) $(AM_MAKEFLAGS) dvi \
+         && $(MAKE) $(AM_MAKEFLAGS) check \
+         && $(MAKE) $(AM_MAKEFLAGS) install \
+         && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+         && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+              && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+                   distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+             } || { rm -rf "$$dc_destdir"; exit 1; }) \
+         && rm -rf "$$dc_destdir" \
+         && $(MAKE) $(AM_MAKEFLAGS) dist \
+         && rm -rf $(DIST_ARCHIVES) \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__remove_distdir)
+       @(echo "$(distdir) archives ready for distribution: "; \
+         list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+         sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+          || { echo "ERROR: files left after uninstall:" ; \
+               if test -n "$(DESTDIR)"; then \
+                 echo "  (check DESTDIR support)"; \
+               fi ; \
+               $(distuninstallcheck_listfiles) ; \
+               exit 1; } >&2
+distcleancheck: distclean
+       @if test '$(srcdir)' = . ; then \
+         echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+         exit 1 ; \
+       fi
+       @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+         || { echo "ERROR: files left in build directory after distclean:" ; \
+              $(distcleancheck_listfiles) ; \
+              exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h all-local
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+       distclean-libtool 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 $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -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) all \
+       ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am all-local am--refresh check check-am clean \
+       clean-generic clean-libtool ctags ctags-recursive dist \
+       dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma \
+       dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+       distclean-generic distclean-hdr distclean-libtool \
+       distclean-tags distcleancheck distdir distuninstallcheck 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
+
+
+win32-debug:
+       @echo; \
+       echo win32     = $(win32); \
+       echo; \
+       echo win32defs = $(win32defs); \
+       echo; \
+       echo win32crlf = $(win32crlf); \
+       echo
+
+win32-check-crlf:
+       @echo Checking win32 files for CR LF line endings ...; \
+       fail=0 ; \
+       for each in $(win32crlf) ; do \
+         result=`perl -e 'print grep(/\r\n/,<>)' "$$each" | wc -l`; \
+         if test "$$result" = 0 ; then \
+           echo $$each must be fixed to have CRLF line endings ; \
+           fail=1; \
+         fi ; \
+       done ; \
+       exit $$fail
+
+# make sure all symbols we export on linux are defined in the win32 .def too
+# (don't care about other unixes for now, it's enough if it works on one of
+# the linux build bots; we assume .so )
+check-exports:
+       @fail=0 ; \
+       for l in $(win32defs); do \
+         libbase=`basename "$$l" ".def"`; \
+         libso=`find "$(top_builddir)" -name "$$libbase-@GST_MAJORMINOR@.so" | grep -v /_build/ | head -n1`; \
+         libdef="$(top_srcdir)/win32/common/$$libbase.def"; \
+         if test "x$$libso" != "x"; then \
+           echo Checking symbols in $$libso; \
+           if ! ($(top_srcdir)/common/check-exports $$libdef $$libso) ; then \
+             fail=1; \
+           fi; \
+         fi; \
+       done ; \
+       if test $$fail != 0; then \
+         echo '-----------------------------------------------------------'; \
+         echo 'Run this to update the .def files:'; \
+         echo 'make check-exports 2>&1 | patch -p1'; \
+         echo '-----------------------------------------------------------'; \
+       fi; \
+       exit $$fail
+
+# complain about nonportable printf format strings (%lld, %llu, %zu etc.)
+check-nonportable-print-format:
+       @fail=0 ; \
+       loc=`find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'`; \
+       if test "x$$loc" != "x"; then \
+         echo "Please fix the following print format strings:" ; \
+         find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'; \
+         fail=1; \
+       fi; \
+       exit $$fail
+
+dist-hook: check-exports win32-check-crlf
+
+release: dist
+       $(MAKE) $(PACKAGE)-$(VERSION).tar.gz.md5
+       $(MAKE) $(PACKAGE)-$(VERSION).tar.bz2.md5
+
+# generate md5 sum files
+%.md5: %
+       md5sum $< > $@
+
+# check that no marshal or enumtypes files are included
+# this in turn ensures that distcheck fails for missing .list files which is currently
+# shadowed when the corresponding .c and .h files are included.
+distcheck-hook:
+       @test "x" = "x`find $(distdir) -name \*-enumtypes.[ch] | grep -v win32`" && \
+       test "x" = "x`find $(distdir) -name \*-marshal.[ch]`" || \
+       ( $(ECHO) "*** Leftover enumtypes or marshal files in the tarball." && \
+         $(ECHO) "*** Make sure the following files are not disted:" && \
+         find $(distdir) -name \*-enumtypes.[ch] | grep -v win32 && \
+         find $(distdir) -name \*-marshal.[ch] && \
+         false )
+
+# rule to download the latest .po files
+download-po: $(top_srcdir)/common/download-translations
+       $(top_srcdir)/common/download-translations $(PACKAGE)
+
+check-valgrind:
+       cd tests/check && make check-valgrind
+
+@HAVE_GST_CHECK_TRUE@check-torture:
+@HAVE_GST_CHECK_TRUE@  cd tests/check && make torture
+@HAVE_GST_CHECK_FALSE@check-torture:
+@HAVE_GST_CHECK_FALSE@ true
+
+win32-update:
+       cp $(top_builddir)/win32/common/config.h-new \
+           $(top_builddir)/win32/common/config.h
+.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload
+
+# run lcov from scratch, always
+lcov-reset:
+       $(MAKE) lcov-run
+       $(MAKE) lcov-report
+
+# run lcov from scratch if the dir is not there
+lcov:
+       $(MAKE) lcov-reset
+
+# reset run coverage tests
+@GST_GCOV_ENABLED_TRUE@lcov-run:
+@GST_GCOV_ENABLED_TRUE@        @-rm -rf lcov
+@GST_GCOV_ENABLED_TRUE@        lcov --directory . --zerocounters
+@GST_GCOV_ENABLED_TRUE@        -if test -d tests/check; then $(MAKE) -C tests/check inspect; fi
+@GST_GCOV_ENABLED_TRUE@        -$(MAKE) check
+
+# generate report based on current coverage data
+@GST_GCOV_ENABLED_TRUE@lcov-report:
+@GST_GCOV_ENABLED_TRUE@        mkdir lcov
+@GST_GCOV_ENABLED_TRUE@        lcov --compat-libtool --directory . --capture --output-file lcov/lcov.info
+@GST_GCOV_ENABLED_TRUE@        lcov --list-full-path -l lcov/lcov.info | grep -v "`cd $(top_srcdir) && pwd`" | cut -d\| -f1 > lcov/remove
+@GST_GCOV_ENABLED_TRUE@        lcov --list-full-path -l lcov/lcov.info | grep "tests/check/" | cut -d\| -f1 >> lcov/remove
+@GST_GCOV_ENABLED_TRUE@        lcov --list-full-path -l lcov/lcov.info | grep "docs/plugins/" | cut -d\| -f1 >> lcov/remove
+@GST_GCOV_ENABLED_TRUE@        lcov -r lcov/lcov.info `cat lcov/remove` > lcov/lcov.cleaned.info
+@GST_GCOV_ENABLED_TRUE@        rm lcov/remove
+@GST_GCOV_ENABLED_TRUE@        mv lcov/lcov.cleaned.info lcov/lcov.info
+@GST_GCOV_ENABLED_TRUE@        genhtml -t "$(PACKAGE_STRING)" -o lcov --num-spaces 2 lcov/lcov.info
+
+@GST_GCOV_ENABLED_TRUE@lcov-upload: lcov
+@GST_GCOV_ENABLED_TRUE@        rsync -rvz -e ssh --delete lcov/* gstreamer.freedesktop.org:/srv/gstreamer.freedesktop.org/www/data/coverage/lcov/$(PACKAGE)
+
+@GST_GCOV_ENABLED_FALSE@lcov-run:
+@GST_GCOV_ENABLED_FALSE@       echo "Need to reconfigure with --enable-gcov"
+
+@GST_GCOV_ENABLED_FALSE@lcov-report:
+@GST_GCOV_ENABLED_FALSE@       echo "Need to reconfigure with --enable-gcov"
+
+check-cruft:
+       @cruft_files=""; cruft_dirs=""; \
+       for f in $(CRUFT_FILES); do \
+         if test -e $$f; then \
+           cruft_files="$$cruft_files $$f"; \
+         fi \
+       done; \
+       for d in $(CRUFT_DIRS); do \
+         if test -e $$d; then \
+           cruft_dirs="$$cruft_dirs $$d"; \
+         fi \
+       done; \
+       if test "x$$cruft_files$$cruft_dirs" != x; then \
+         echo; \
+         echo "**** CRUFT ALERT *****"; \
+         echo; \
+         echo "The following files and directories may not be needed any "; \
+         echo "longer (usually because a plugin has been merged into     "; \
+         echo "another plugin, moved to a different module, or been      "; \
+         echo "renamed), and you probably want to clean them up if you   "; \
+         echo "don't have local changes:                                 "; \
+         echo; \
+         for f in $$cruft_files; do echo "file $$f"; done; \
+         echo; \
+         for d in $$cruft_dirs; do echo "directory $$d"; done; \
+         echo; \
+         echo "'make clean-cruft' will remove these for you."; \
+         echo; \
+       fi
+
+clean-cruft-dirs:
+       @for d in $(CRUFT_DIRS); do \
+         if test -e $$d; then \
+           rm -r "$$d" && echo "Removed directory $$d"; \
+         fi \
+       done
+
+clean-cruft-files:
+       @for f in $(CRUFT_FILES); do \
+         if test -e $$f; then \
+           rm "$$f" && echo "Removed file $$f"; \
+         fi \
+       done
+
+clean-cruft: clean-cruft-dirs clean-cruft-files
+
+# also might want to add this to your Makefile.am:
+#
+# all-local: check-cruft
+
+all-local: check-cruft
+
+# 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 --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..1e5b911
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,575 @@
+This is GStreamer Ugly Plug-ins 0.10.19 "Stronger"
+
+Changes since 0.10.18:
+
+      * a52dec: don't claim to support upstream renegotiation
+      * dvddemux: tweak subtitle stream setup based on dvd language codes event
+      * dvdreadsrc: fix off by one in cell calculation for the last chapter
+      * dvdreadsrc: fix sector search for packed titles; fix sector seeking
+      * dvdreadsrc: map subtitle language tag to stream indicated in PGC data
+      * dvdreadsrc: take into account first sector of the current title
+      * lame, lamemp3enc: ensure parsed output (most muxers need framed mp3 as input)
+      * lame, lamemp3enc: post CODEC and BITRATE tags
+      * mad: remove id3tag dependency used by in practice unreachable legacy code
+      * mpeg2dec: don't treat non-fatal errors as fatal and fix spurious failure to decode some files
+      * mpeg2dec: post QoS messages when dropping a frame due to QoS
+      * rtpasfdepay: avoid re-sending header; fix fragmented packet handling and packet padding
+      * twolame: improve output framing and timestamping
+      * x264enc: allow renegotiation but prefer current caps
+      * x264enc: negotiate profile, level and output stream-format from downstream caps where appropriate
+
+Bugs fixed since 0.10.18:
+
+      * 644233 : Set the H.264 level from the caps for encoding
+      * 391543 : lame should add a tag with the chosen bitrate
+      * 429476 : [mpeg2dec] can't play auge.mpg
+      * 653473 : x264enc: " subme " property value can go up to 10
+      * 655223 : [x264enc] properly handle stream-format from caps
+      * 658297 : rmdemux: tags get lost when transcoding
+      * 659252 : dvdreadsrc: various fixes for titles not starting on a new file
+      * 660562 : mpeg2dec: post QoS messages when dropping a frame due to QoS
+      * 662964 : asfdemux memleak
+      * 664175 : x264enc ! avimux results in not-negotiated flow error
+      * 665101 : Wrong format string in gst_dvd_read_src_do_seek
+
+Changes since 0.10.17:
+
+      * amrwbdec: avoid stalling on invalid frame
+      * asfpacket: don't rely on data from duration extension
+      * dvdsubdec: Implement clipping if the video size is smaller than the subpicture size
+      * dvdsubdec: Output only a single buffer per subpicture and set the correct duration
+      * lamemp3enc: implement sinkpad get_caps() function to proxy rate and channels restrictions from downstream
+      * mad: build the mad plugin even if libid3tag is not available
+      * mpeg2dec: do not fail fatally when downstream is unlinked (let upstream handle that)
+      * mpeg2dec: don't deadlock when setting an index
+      * mpegstream: increase allowable gap between streams
+      * x264enc: allow changing the bitrate and quantitizers dynamically
+      * x264enc: don't register flags with a value of 0
+      * x264enc: implement getcaps function to proxy downstream caps restrictions upstream
+      * x264enc: make tag event writable before modifying tag list in place
+      * x264enc: set max bitrate in quality mode
+
+Bugs fixed since 0.10.17:
+
+      * 539708 : [mpegstream] Increase allowable gap between streams
+      * 607698 : asfdemux: fix parsing of packets with padding
+      * 619136 : [dvdsubdec] spits out buffers at video framerate
+      * 621663 : x264enc: support changing bitrate property on the fly
+      * 639291 : [xingmux] Return NULL instead of 0 for a function returning gboolean
+      * 639715 : amrparse: seek error with EOS
+      * 640272 : x264enc: make tag event writable before modifying tag list in place
+      * 641151 : lame: doesn't negotiate sample rate properly
+      * 642360 : x264enc: Don't register flags which have 0 as a value
+      * 644704 : [dvdsubedc] no SPU clipping implemented
+      * 647709 : mpeg2dec: errors out on not-linked flow return
+
+Changes since 0.10.16:
+
+      * asfdemux: Handle new type of DRM'd asf files
+      * dvdreadsrc: fix handling of multi-angle streams
+      * dvdreadsrc: improve error messages on read errors
+      * mad: if gst_pad_alloc_buffer() returns a buffer with the wrong size allocate a new one
+      * mad: support reverse playback
+      * mpeg2dec: convert the position to stream time before answering to a position query
+      * mpeg2dec: fix position query by trusting upstream
+      * mpeg2dec: refactor cropping code to use libgstvideo functions
+      * mpeg2dec: use gst_pad_alloc_buffer() when cropping buffers
+      * mpegparse: re-fix flow return handling
+      * rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+      * x264enc: add a note to the docs about encoder latency and queues
+      * x264enc: also accept YV12 input
+      * x264enc: Handle codec/encoder tags
+      * x264enc: Work around a rate control issue in libx264
+      * x264: use pkg-config to locate libx264
+      * x264: vbv-buf-capacity should have a minimum of 0
+      * xingmux: Don't ignore WRONG_STATE and NOT_LINKED when pushing data downstream
+
+Bugs fixed since 0.10.16:
+
+      * 539254 : [dvdreadsrc] DVDs with multiple angles switch angles during read
+      * 571146 : mpeg2dec: possibly uses wrong strides for 4:2:2 and 4:4:4 YUV with unusual display width or height
+      * 599515 : Fix dvb for DVB API 3.3
+      * 621465 : [x264enc] Video codec information copied incorrectly to output
+      * 632549 : [mpeg2dec] answers to position queries are wrong for DVDs
+      * 632861 : [x264enc] really bad quality with tune=zerolatency
+      * 634840 : x264: use pkg-config to locate dependencies for plugin
+      * 635291 : x264enc: " vbv-buf-capacity " property should have minimum value of 0
+      * 635461 : Crash in mad decoder when changing number of audio output channels in Totem while media is running
+      * 636107 : x264enc: docs should indicate specifics of using with queues
+      * 637093 : rmdemux: set GST_BUFFER_FLAG_DELTA_UNIT properly
+      * 637932 : realmedia: do not use the pad buffer allocation functions in demuxers
+      * 639226 : [asfdemux] Doesn't handle new PlayReady DRM files
+
+Changes since 0.10.15:
+
+      * refactor x264enc to use current x264 API correctly, add new properties and new defaults
+      * liboil is no longer required, but orc is now required
+      * build: require orc >= 0.4.5, GLib >= 2.20, automake >= 1.10, autoconf >= 2.60; liboil is no longer required
+      * asfdemux: fix playback of files or streams that are shorter than the advertised preroll value
+      * asfdemux: fix sending eos event for chained asfs in pull mode (exotic)
+      * asfdemux: fix playback of files or streams that advertise miniscule preroll values
+      * lamemp3enc: implement latency query
+      * rmdemux: fix playback of sipro audio streams
+      * x264enc: refactor code in preparation for presets/tunings
+      * x264enc: add "profile" property (and default to MAIN profile)
+      * x264enc: improve defaults: medium speed/quality preset; auto mode for threads
+      * x264enc: add "speed-preset", "tune" and "psy-tune" properties
+      * x264enc: add "option-string" property to specify advanced parameters
+      * x264enc: set time base if needed, fixes visual artifacts
+      * x264enc: add "sliced-threads", "sync-lookahead", "intra-refresh", "mb-tree", and "rc-lookahead" properties
+      * x264enc: fix compilation against ancient x264 versions (X264_BUILD <= 75)
+      * x264enc: speed up first pass of multi-pass encoding (has no impact on quality)
+      * x264enc: fix flushing of delayed frames with new default settings
+
+Bugs fixed since 0.10.15:
+
+      * 599718 : [asf] support chained asfs
+      * 600412 : [asfdemux] Wrong handling of downstream GstFlowReturn
+      * 607798 : x264enc needs updating to support new features and use x264 correctly
+      * 618896 : lamemp3enc doesn't implement latency query
+      * 620007 : Gibberish sound when playing a certain RealMedia file of Sipro/ACELP.net audio codec
+      * 620344 : Update gst-plugins-ugly docs on website
+      * 622407 : [asfdemux] doesn't detect some streams if preroll value is very small
+      * 624786 : x264enc time base is wrong
+      * 625557 : x264enc doesn't flush delayed frames properly
+      * 626577 : [x264enc] regression: doesn't work with older versions of x264
+      * 627946 : mp3parse misuses GST_FLOW_IS_FATAL, doesn't forward GST_FLOW_UNEXPECTED upstream
+
+Changes since 0.10.14:
+
+      * amrnbenc: give element a rank (SECONDARY) so it's autoplugged
+      * rmdemux: descramble sipro audio before pushing out
+      * x264enc: fix up codec_data / avcC header construction some more
+      * x264enc: Put pixel-aspect-ratio from input into the src pad caps
+
+Bugs fixed since 0.10.14:
+
+      * 612995 : x264enc: pixel-aspect-ratio does not appear in src pad caps
+      * 613815 : A call in gst/realmedia/rmutils.c discards qualifiers from pointer target type
+      * 615410 : x264 orders NALs differently than x264enc expects
+      * 617078 : Wrong include paths in amr elements
+      * 619776 : [x264enc] is unable to do Baseline with recent x264
+      * 618098 : [rmdemux] Add descrambling for Sipro codec
+
+Changes since 0.10.13:
+
+      * amrwbdec: give decoder a rank so decodebin/playbin will use it
+      * asfdemux: fix flow aggregation
+      * asfdemux: try harder to put sane timestamps and durations on buffers
+      * asfdemux: accept fragments in a continued packet where the subsequent fragments declare a size of 0
+      * asfdemux: improve seek behaviour for audio-only files without an index
+      * asfdemux: careful to avoid crash on bogus data; avoid strlen() on NULL pointers
+      * asfdemux: add support for chained asfs (push mode)
+      * asfdemux: map WM/TrackNumber to GST_TAG_TRACK_NUMBER and prefer over WM/Track
+      * asfdemux: post bitrate tags
+      * mp3parse: seeking fixes: fix non-flushing seek, conserve stop time for non-accurate seek
+      * rtspreal: memory leak fixes; make config header construction valgrind clean
+      * rmdemux: fix AC-3 in RealAudio playback; post bitrate tags
+      * x264enc: fix up avcC header construction and playback by flash players
+      * x264enc: Make upstream GstForceKeyUnit thread-safe
+      * x264enc: make use of Access Unit delimiters configurable
+      * x264enc: adapt to slightly modified x264 API
+      * xingmux: fix unaligned memory access, makes things work better on ARM/SPARC
+
+Bugs fixes since 0.10.13:
+
+      * 606662 : h264: add stream-format to output caps
+      * 563276 : Internal GStreamer error: negotiation problem - after opening avi file
+      * 586464 : [xingmux] Unit test failures on sparc and arm/eabi
+      * 598761 : [mpegaudioparse] Reduce processing time by 2
+      * 599095 : x264enc: Adapt to slightly modified x264 API
+      * 599297 : [asfdemux] Doesn't populate video bitrate field
+      * 599299 : [rmdemux] Doesn't populate video bitrate field
+      * 599333 : Segfault with asfdemuxer
+      * 599676 : RealAudio file with AC-3 audio no longer plays
+      * 600037 : [asfdemux] ASF MPEG4 Part 2 file captured from Linksys WVC200 Camera corrupted/fails
+      * 601419 : x264enc crashes
+      * 602280 : [asfdemux] fix segmentation fault when utf8 tag name is null
+      * 602556 : x264enc and ffenc upstream GstForceKeyUnit handling are not thread-safe
+      * 603695 : Innaccurate seeking in MP3 files results in cut off playback
+      * 608564 : [ffdec_cook] memory leak
+      * 610432 : [asfdemux] handle negative payload timestamps
+      * 611473 : [regression] outgoing buffers with a duration of zero
+      * 608533 : [real] memory leak in real audio stream via rtsp
+      * 610089 : Flash players are unable to show x264 encoded streams
+
+Changes since 0.10.12:
+    
+      * Improve A52 decoder
+      * Add AMR-WB decoder and AMR-NB decoder/encoder based on OpenCore codecs
+      * ASF playback improvements
+      * Improve mp3 parser and seeking
+
+Bugs fixed since 0.10.12:
+     
+      * 519721 : [asfdemux] wma tags are not copied when converting to another format
+      * 584890 : AMR plugins based on Opencore codecs
+      * 585956 : [mp3parse] indexing improvements
+      * 590432 : It's only possible to build the mad plugin when building id3tag as well
+      * 591348 : AMR plugins should check for opencore-amr .pc files
+      * 592787 : a52dec: Allow liba52 to use djbfft based IMDCT transform
+      * 596517 : x264 element no longer compiles against changed upstream API
+      * 598272 : a52dec leaks input buffers
+      * 598370 : Properly detect pre-releases
+
+Changes since 0.10.11:
+    
+      * Real and WMS RTSP improvements
+      * Other cleanups and bug fixes
+      * Improve ASF file handling
+      * Large MPEG video file support
+      * Interlacing support for MPEG video
+      * New 'lamemp3dec' mp3 encoder element
+      * x264enc moved from -bad
+      * Remove id3mux in favour of the new id3tag element in -bad
+
+Bugs fixed since 0.10.11:
+     
+      * 401173 : [asfdemux] Stream doesn't play, stuck on first frame
+      * 494528 : Simplifications of the LAME plugin
+      * 574461 : [mpeg2dec] Lower rank and make ffdec_mpeg2video PRIMARY
+      * 576305 : twolame plugin does not detet proper version
+      * 579058 : [asfdemux] proper handling of RTSP input
+      * 580803 : [PLUGIN-MOVE] Move x264enc to -ugly
+      * 580869 : dvdsubdec ARGB support
+      * 581341 : [lamemp3enc] doesn't build with LAME 3.97: implicit decla...
+      * 581756 : [id3mux] replace with something more reliable
+      * 582056 : [asfdemux] forcing an EOS on the pipeline doesn't work wi...
+      * 582375 : mpeg2dec not building in gst-plugins-ugly
+      * 583112 : [asfdemux] extract coverart (WM/Picture tag)
+      * 573720 : [mp3parse] Memory leak when playing shoutcast streams
+      * 581464 : xing data is being ignored
+      * 578524 : synaesthesia MSVC compatibility
+
+Changes since 0.10.10:
+    
+      * Migrate twolame element from -bad
+      * mp3parse improvements
+      * Support scaling in the synaesthsia visualisation
+      * Improve realmedia streaming, supporting RDT and pnm://
+      * Improved ASF demuxing, including streaming-mode seeking
+      * Support for 4:4:4 MPEG-2 video
+
+Bugs fixed since 0.10.10:
+     
+      * 571146 : [mpeg2dec] Probably uses wrong strides for 4:2:2 and 4:4:...
+      * 574461 : [mpeg2dec] Lower rank and make ffdec_mpeg2video PRIMARY
+      * 454228 : [mpegdemux] problem with mark shuttleworth clip
+      * 522699 : pnm:/something.ra streams can't be loaded in Totem from a...
+      * 527112 : [real] Can't play several real audio streams
+      * 556714 : Real Audio streams not working properly
+      * 560348 : plus7.arte.tv plays slooooowly
+      * 562065 : mpeg2dec does not handle STATE_SEQUENCE_MODIFIED from > =l...
+      * 562086 : mpeg2 stream crashes something in gstreamer
+      * 564885 : [mpegstream] memory leak
+      * 568836 : [asfdemux] add seeking support when operating in push mode
+      * 569317 : [PLUGIN-MOVE] Move twolame plugin from -bad to -ugly
+      * 575068 : [mp3parse] deadlock with accurate seeking
+      * 335067 : Need RTP ASF depayloader
+      * 571358 : [real] file playing stops immediately
+
+Changes since 0.10.9:
+    
+      * asfdemux and rmdemux fixes
+      * RDT support
+      * AMR-NB parser improvements
+      * Fix a52dec channel output negotiation
+      * Compilation fixes for mad, mpeg2dec
+
+Bugs fixed since 0.10.9:
+     
+      * 546859 : Asfdemux doesn't properly error out on not-linked
+      * 536274 : handle flush seeking in amrnbparse
+      * 554142 : mad plugin with disable index seeking issue
+      * 554150 : mpeg2dec plugin with disable index seeking issue
+      * 556184 : [PATCH] mpeg2dec: prefer container's pixel aspect ratio o...
+      * 556277 : mp3parse generate discontinuities.
+      * 558277 : generic states test fails
+      * 559569 : GStreamer mp3 consistent and regular stuttering
+      * 559682 : negotiation problem
+      * 561161 : [sidplay] Uses GST_CFLAGS for C++
+      * 424070 : [amrnbdec] add IF2 handling
+      * 536226 : fix query duration
+      * 558896 : DVD playing on Vista using dvddemux element seg-faults on...
+
+Changes since 0.10.8:
+
+      * Improvements in a52 and mp3 decoding
+      * Bug fixes in Xing header muxer
+      * MPEG demuxer improvements and dvdreadsrc bug-fixes
+      * Fix build with LAME 3.97 and above
+      * Fix LAME parameter settings to allow setting the bitrate properly
+
+Bugs fixed since 0.10.8:
+
+      * 476149 : Fix and add needed features to dvdnavsrc
+      * 490372 : Variable bit rates are limited to 160 kbps in higher qual...
+      * 498004 : preset is ignored by lame plugin
+      * 540194 : [mpegdemux] Doesn't handle files with a non-zero start ti...
+      * 542646 : gstreamer endless loop by zzuf sample
+      * 544039 : [lame] Doesn't build with 3.97
+      * 545370 : playing some mp3s segfaults
+      * 546859 : Asfdemux doesn't properly error out on not-linked
+      * 548194 : a52dec doesn't set up segment for raw files correctly.
+      * 537235 : [mp3parse] some mp3 files do not play with gstreamer
+
+Changes since 0.10.7:
+    
+      * ASF demuxer fixes
+      * MP3 parsing and Xing header output bug-fixes
+      * Real streaming and demuxing improvements
+
+Bugs fixed since 0.10.7:
+     
+      * 527572 : Crash in volume_process_int32
+      * 321857 : [mp3parse] needs to post DURATION message for VBR mp3s
+      * 428021 : [mad, mp3parse] better duration estimates for VBR
+      * 517985 : [lame] compile error on Solaris, broken GST_ELEMENT_ERROR...
+      * 518676 : xingmux doesn't work anymore
+      * 518933 : mp3 tags are not copied when converting to another format
+      * 521459 : RTSP extension for Real Audio doesn't extract  Author, Co...
+      * 524346 : Framerate not being displayed correctly on running gst-di...
+      * 529488 : [sidplay] Missing sentinel in function call
+      * 532807 : [rmdemux] Doesn't properly aggregate flow returns
+      * 533581 : [mad] inconsistent use of rate and channels
+      * 533832 : [rmdemux] reset variables on flush
+
+Changes since 0.10.6:
+    
+      * Many bug fixes and improvements
+      * Accurate seeking support in mp3
+      * xingmux moved from -bad
+      * RealMedia and WMS RTSP support
+      * LAME mp3 encoder fixes
+      * Support non-square pixels in ASF
+      * rmdemux fixes
+      * amrnb fixes
+      * dvdreadsrc seeking fix
+      * Initial MPEG-2 reverse playback support
+      * New element: dvdsubdec
+
+Bugs fixed since 0.10.6:
+     
+      * 358891 : [dvdreadsrc] aborts due to src- > cur_pack == dsi_pack.dsi_...
+      * 337681 : Seeking problem with MP3s in banshee and rhythmbox
+      * 414988 : Stream encoded by lame has gap after decoding
+      * 427309 : [rmdemux] trouble playing RV10 video
+      * 439390 : [lame] fix up so we can control sample rate conversion
+      * 450879 : Missing files in po/POTFILES.in
+      * 452025 : ./configure breaks when cross-compiling LAME
+      * 454311 : missing xml/{element-synaesthesia-details.xml,plugin-syna...
+      * 466442 : amrnbenc has not properties to add header and select band...
+      * 495885 : [mpegdemux] unknown stream id 0xbe
+      * 500467 : [rmdemux] totem crashed with SIGSEGV
+      * 500808 : gstmpeg2dec compile problem in MSVC 6.0
+      * 507821 : Skip over broken seektable in Xing headers
+      * 511497 : [PLUGIN-MOVE] Move xingheader to gst-plugins-ugly
+      * 514297 : mpeg2dec with corrupted packets causes fps denominator so...
+      * 515575 : [lame] unit test shows memory leak
+      * 515708 : [dvdsubparse] Leaks a pad template
+      * 515725 : [xingmux] Fails on big endian systems
+      * 516278 : [dvdreadsrc] FORMAT_BYTES based seek stopped working sinc...
+      * 516811 : [mp3parse] immediate EOS when playing back AVIs
+      * 516989 : [dvdreadsrc] wrong (negative) stream position returned du...
+      * 308312 : Make mp3parse plugin implement GST_SEEK_FLAG_ACCURATE
+      * 508595 : [lame] wrong output caps in mono encoding mode
+      * 140136 : [mpeg] plays choppy in gst-player/totem
+      * 448782 : add finalize() to amrnbdec element
+      * 491305 : [playbin?] intro-leopard.mov sometimes EOSes immediately,...
+      * 504671 : [rtspsrc] spews warnings on setup and shutdown
+
+Changes since 0.10.5:
+
+      * fixes in handling of MPEG streams, Real streams and MP3
+      * AMR-NB fixes
+      * Other bug-fixes and improvements
+
+Bugs fixed since 0.10.5:
+
+      * 336370 : [asfdemux] crashes on an assertion in gst_asf_demux_get_v...
+      * 332157 : [asfdemux] This WMV file is played very strangely
+      * 335760 : [asfdemux] dataflow error when seeking in zeldadslarge.wmv
+      * 349779 : [real] can't play ancient RealAudio 1.0/2.0 format files
+      * 353116 : [asfdemux] hangs playing some mms stations
+      * 365288 : [asfdemux] seeking not very smooth
+      * 370020 : [mpeg2dec] continue even after 5 consecutive decoding errors
+      * 385292 : [rmdemux] stream index leaked on shutdown 
+      * 385311 : Memory leak initializing lame mp3 encoder plugin (gstlame.c)
+      * 385651 : [asfdemux] Jerky playback of " I love sky " 
+      * 393890 : [win32] autogenerated win32/common/config.h needed
+      * 397219 : [rmdemux] captured realaudio stream with non-zero start p...
+      * 403188 : [asfdemux] bug parsing certain stream header object
+      * 421594 : [real] doesn't compile if zlib includes are missing
+      * 425374 : [asfdemux] seek in WMV rarely works
+      * 428698 : [rmdemux] crashes on files with many logical streams 
+      * 429960 : [mpegdemux] playbin hangs with small external vobsub subt...
+      * 431707 : [amrnbparse] make pipeline hang 
+      * 432533 : [mad, mp3parse] regression: CVS version doesn't parse dur...
+      * 438610 : [dvddemux] fails after flushing seek
+      * 440120 : [mpegdemux] crashes in gst_mpeg_demux_send_subbuffer() wi...
+      * 442706 : [dvdsubdec] crashes when flushing/on seek
+      * 444514 : [PATCH] dvdsubdec miscalculates (long) subtitle durations
+      * 386218 : [asfdemux] Division by zero when seeking live streams
+
+Changes since 0.10.4:
+    
+      * Improved asf playback
+      * Fixes to MPEG demuxer
+      * Improved Real playback
+      * Fix crasher bugs in the MPEG video decoder
+      * DVD-read-src improvements
+      * mp3 parser fixes
+
+Bugs fixed since 0.10.4:
+     
+      * 361584 : [mpeg2dec] framerate=0/0 on caps leads to crash
+      * 162417 : [mpeg] movie skips
+      * 340433 : [dvdread] fails to play certain DVDs with playbin and Totem
+      * 348002 : AC3 5.1 foreground movie sound cannot be heard in Totem/g...
+      * 350761 : [a52dec] Select output format based on peer element caps
+      * 350778 : [mpegdemux] Send update newsegments
+      * 356004 : [mpeg2dec] memory corruption
+      * 361140 : [lame] lame bitrate=196 errors out in setup
+      * 362639 : Fixes compiling with forte: warning clean up (part 6)
+      * 369627 : [mpeg2dec] unit test addition and memleak fix
+      * 374760 : [PATCH] last buffer sent by lame may not have (valid) tim...
+      * 374914 : this mp4 video doesn't play correctly (codec problem)
+      * 384447 : totem crashes while trying to play dvd on ppc
+      * 385192 : mpegparse accesses random memory
+      * 334322 : [mpegdemux] playbin freezes with VobSub subtitles
+      * 384989 : misparsing of Real Media mux leads to buffer overrun
+      * 384996 : Tailored or broken Real Media mux file crashes RM demuxer
+      * 327350 : [mpeg2dec] altivec crashes on misaligned buffers
+      * 350723 : [mad] Wrong output buffer timestamping
+
+Bugs fixed since 0.10.3:
+    
+      * 329184 : [lame] remove tag writing support
+      * 345694 : [dvdreadsrc] crash with 'who wants to be a millionnaire' ...
+      * 349035 : [asfdemux] should error out on encrypted WMV stream
+      * 341677 : massive memory leak with mpeg2 video in AVI
+      * 321609 : [mpegstream] flush packetizer cache on discontinuities
+      * 323658 : [id3mux] Changing of ID3 tags is broken in gstreamer
+      * 335288 : Totem Crashes on Certain .mpg Files
+      * 336550 : [asfdemux] only first video frames are displayed with som...
+      * 336824 : [mad] returns incorrect duration to queries in BYTES format
+      * 337834 : [dvddemux] seeking in DVDs doesn't work
+      * 339287 : [lame] segfault if EOS before setcaps
+      * 340594 : [mad] does not publish supported query formats
+      * 340710 : [lame] typo in event handler
+      * 341254 : [asfdemux] gst_tag_list_get_string_index assertion
+      * 342222 : [amrnb] can't play AMR Narrowband from cellphone (S.E. W800)
+      * 342594 : [mad] should send new-segment before pad_alloc_buffer
+      * 343763 : [asfdemux] broken audio and unrecognised 2nd audio stream
+      * 345184 : [mpeg2dec] crash with video with pixel_width and pixel_he...
+      * 347029 : Minor mistake in comment
+      * 347292 : [rmdemux] Realaudio files with 'cook' audio 'stutter'
+      * 348786 : lame put lots of 0's at start of mp3
+      * 350044 : [dvdsubdec] outputs buffers with negative durations
+      * 350895 : [dvdreadsrc] wrong use of debugging causes fatal warning
+      * 343627 : Add QoS to mpeg2dec
+      * 344667 : [siddec] sounds very broken
+      * 350554 : [patch] assertation failed trying to play .ac3 files
+
+Features since 0.10.2:
+
+      * dvdsubdec ported
+      * fixes in mpeg2dec, asfdemux, mpegdemux, dvddemux, rmdemux,
+        mpegparse, amrnb, mad, lame, a52dec
+
+Bugs fixed since 0.10.2:
+    
+      * 300682 : [mpeg2dec] fails to play mpgtx -j joined files to the end
+      * 317310 : Cant play swedish radio station " P3 " 
+      * 320022 : [asfdemux] borks on a particular mms asf stream
+      * 323023 : [rmdemux] stops immediately if there are unlinked source ...
+      * 326598 : [mpegstream] does not handle timestamp overflow correctly
+      * 327356 : gst-plugins-ugly fails to build with GCC 4.1
+      * 328957 : [mpegstream] fix build with gcc 2.95
+      * 331588 : [rmdemux] realmedia files with AC3 don't work
+      * 331838 : build problem caused by AS_LIBTOOL_TAGS([CXX])
+      * 331842 : should check for mad and id3tag headers, not libs
+      * 332796 : [asfdemux] cannot play an ASF stream
+      * 333345 : [lame] fix some memory leaks
+      * 333683 : [id3mux] patch to add support for GST_TAG_ALBUM_VOLUME_NU...
+      * 334550 : Some ac3 files fail to play
+      * 336097 : [asfdemux] live ASF streams do not work
+      * 336387 : [mpegdemux] reffing null caps
+
+
+Features since 0.10.1:
+
+      * DVD Title source (dvdreadsrc) ported (DVD Menus in a future release)
+      * ASF demuxer ported
+      * Fixes for MPEG demuxing
+      * Fixes for the MAD MP3 decoder
+      * Fixes for the LAME MP3 encoder
+      * ID3 tag reading has moved to id3demux in gst-plugins-good
+      * Fixes for the Real Media demuxer
+      * Various other fixes
+
+Bugs fixed since 0.10.1:
+
+      * 171528 : SIGFPE in gstasf with http://joule.via.ecp.fr/~lool/debia...
+      * 317872 : Cannot demux ASF/WMV files with auxillary (non-audio/vide...
+      * 319782 : Lame encoding is broken with vbr=vbr-new and vbr-quality=9
+      * 326711 : [mpegdemux] does not negotiate source pads
+      * 326734 : [mad] Add 24-bit output support
+      * 329575 : misc bugfixes for mad from 0.8
+      * 331035 : [asfdemux] port to 0.10
+      * 331301 : [mpeg2dec] strides issues when cropping
+      * 330844 : mpeg2dec crashes with " cropped " MPEG videos
+      * 331579 : Set asfdemux rank to secondary
+      * 313838 : totem hangs after playing an amazon sample
+
+Features since 0.10.0:
+    
+      * fixes in dvddemux, mpegdemux, mad, iec958
+      * removed id3demux (new version in gst-plugins-good)
+
+Bugs fixed since 0.10.0:
+    
+      * 322049 : [id3demux] should support pull range
+      * 322856 : [mpeg2dec] Use of wrong variables
+      * 322857 : [mpeg2dec] Seeking in byte format
+      * 325652 : many plugins don't pass unhandled queries upstream
+
+API added since 0.10.0:
+    
+      * AC3IEC::raw-audio
+
+Bugs fixed since 0.9.7:
+    
+      * 323199 : Remove id3tag element (replaced by id3demux and id3mux)
+
+Changes since 0.9.6:
+    
+      * mpegstream fixes
+
+Bugs fixed since 0.9.6:
+    
+      * 319784 : mad claims to need more data
+      * 322745 : [mpegdemux] segfaults
+  
+Changes since 0.9.5:
+    
+      * mpegstream ported
+      * fractional framerates
+
+Bugs fixed since 0.9.5:
+    
+      * 319862 : Partial mpegstream/dvddemux port
+      * 321955 : gst-plugins-ugly fail to compile
+
+Changes since 0.9.3:
+
+      * rmdemux fixes
+      * a52dec ported
+
+Bugs fixed since 0.9.3:
+
+      * 318849 : [a52dec] ported to gstreamer 0.9
+
+Changes since 0.9.1:
+
+      * lame, rmdemux, iec958 fixes
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..908386d
--- /dev/null
+++ b/README
@@ -0,0 +1,247 @@
+WHAT IT IS
+----------
+
+This is GStreamer, a framework for streaming media.
+
+WHERE TO START
+--------------
+
+We have a website at
+http://gstreamer.freedesktop.org/
+
+You should start by going through our FAQ at
+http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/
+
+There is more documentation; go to
+http://gstreamer.freedesktop.org/documentation
+
+You can subscribe to our mailing lists; see the website for details.
+
+We track bugs in GNOME's bugzilla; see the website for details.
+
+You can join us on IRC - #gstreamer on irc.freenode.org
+
+GStreamer 0.10 series
+---------------------
+
+Starring
+
+  GSTREAMER
+
+The core around which all other modules revolve.  Base functionality and
+libraries, some essential elements, documentation, and testing.
+
+  BASE
+
+A well-groomed and well-maintained collection of GStreamer plug-ins and
+elements, spanning the range of possible types of elements one would want
+to write for GStreamer.  
+
+And introducing, for the first time ever, on the development screen ...
+
+  THE GOOD
+
+ --- "Such ingratitude.  After all the times I've saved your life."
+
+A collection of plug-ins you'd want to have right next to you on the
+battlefield.  Shooting sharp and making no mistakes, these plug-ins have it
+all: good looks, good code, and good licensing.  Documented and dressed up
+in tests.  If you're looking for a role model to base your own plug-in on,
+here it is.
+
+If you find a plot hole or a badly lip-synced line of code in them,
+let us know - it is a matter of honour for us to ensure Blondie doesn't look
+like he's been walking 100 miles through the desert without water.
+
+  THE UGLY
+
+  --- "When you have to shoot, shoot.  Don't talk."
+
+There are times when the world needs a color between black and white.
+Quality code to match the good's, but two-timing, backstabbing and ready to
+sell your freedom down the river.  These plug-ins might have a patent noose
+around their neck, or a lock-up license, or any other problem that makes you
+think twice about shipping them.
+
+We don't call them ugly because we like them less.  Does a mother love her
+son less because he's not as pretty as the other ones ? No  - she commends
+him on his great personality.  These plug-ins are the life of the party.
+And we'll still step in and set them straight if you report any unacceptable
+behaviour - because there are two kinds of people in the world, my friend:
+those with a rope around their neck and the people who do the cutting.
+
+  THE BAD
+
+  --- "That an accusation?"
+
+No perfectly groomed moustache or any amount of fine clothing is going to
+cover up the truth - these plug-ins are Bad with a capital B. 
+They look fine on the outside, and might even appear to get the job done, but
+at the end of the day they're a black sheep. Without a golden-haired angel
+to watch over them, they'll probably land in an unmarked grave at the final
+showdown.
+
+Don't bug us about their quality - exercise your Free Software rights,
+patch up the offender and send us the patch on the fastest steed you can
+steal from the Confederates. Because you see, in this world, there's two
+kinds of people, my friend: those with loaded guns and those who dig.
+You dig.
+
+The Lowdown
+-----------
+
+  --- "I've never seen so many plug-ins wasted so badly."
+
+GStreamer Plug-ins has grown so big that it's hard to separate the wheat from
+the chaff.  Also, distributors have brought up issues about the legal status
+of some of the plug-ins we ship.  To remedy this, we've divided the previous
+set of available plug-ins into four modules:
+
+- gst-plugins-base: a small and fixed set of plug-ins, covering a wide range
+  of possible types of elements; these are continuously kept up-to-date
+  with any core changes during the development series.
+
+  - We believe distributors can safely ship these plug-ins.
+  - People writing elements should base their code on these elements.
+  - These elements come with examples, documentation, and regression tests.
+
+- gst-plugins-good: a set of plug-ins that we consider to have good quality
+  code, correct functionality, our preferred license (LGPL for the plug-in
+  code, LGPL or LGPL-compatible for the supporting library).
+
+  - We believe distributors can safely ship these plug-ins.
+  - People writing elements should base their code on these elements.
+- gst-plugins-ugly: a set of plug-ins that have good quality and correct
+  functionality, but distributing them might pose problems.  The license
+  on either the plug-ins or the supporting libraries might not be how we'd
+  like. The code might be widely known to present patent problems.
+
+  - Distributors should check if they want/can ship these plug-ins.
+  - People writing elements should base their code on these elements.
+
+- gst-plugins-bad: a set of plug-ins that aren't up to par compared to the
+  rest.  They might be close to being good quality, but they're missing
+  something - be it a good code review, some documentation, a set of tests,
+  a real live maintainer, or some actual wide use.
+  If the blanks are filled in they might be upgraded to become part of
+  either gst-plugins-good or gst-plugins-ugly, depending on the other factors.
+
+  - If the plug-ins break, you can't complain - instead, you can fix the
+    problem and send us a patch, or bribe someone into fixing them for you.
+  - New contributors can start here for things to work on.
+
+PLATFORMS
+---------
+
+- Linux is of course fully supported
+- FreeBSD is reported to work; other BSD's should work too
+- Solaris is reported to work; a specific sunaudiosink plugin has been written
+- MacOSX is reported to work; specific audio and video sinks have been written
+- Windows support is experimental but improving.  Output sinks have been
+  written but are not yet included in the code. We support
+  - MSys/MingW builds
+  - Microsoft Visual Studio 6 builds (see win32/README.txt)
+
+INSTALLING FROM PACKAGES
+------------------------
+
+You should always prefer installing from packages first.  GStreamer is
+well-maintained for a number of distributions, including Fedora, Debian,
+Ubuntu, Mandrake, Gentoo, ...
+
+Only in cases where you:
+- want to hack on GStreamer
+- want to verify that a bug has been fixed
+- do not have a sane distribution
+should you choose to build from source tarballs or CVS.
+
+Find more information about the various packages at
+http://gstreamer.freedesktop.org/download/
+
+COMPILING FROM SOURCE TARBALLS
+------------------------------
+
+- again, make sure that you really need to install from source !
+  If GStreamer is one of your first projects ever that you build from source,
+  consider taking on an easier project.
+
+- check output of ./configure --help to see if any options apply to you
+- run
+  ./configure
+  make
+
+  to build GStreamer.
+- if you want to install it (not required, but what you usually want to do), run
+  make install
+
+- try out a simple test:
+  gst-launch -v fakesrc num_buffers=5 ! fakesink
+  (If you didn't install GStreamer, prefix gst-launch with tools/)
+
+  If it outputs a bunch of messages from fakesrc and fakesink, everything is
+  ok.
+
+  If it did not work, keep in mind that you might need to adjust the
+  PATH and/or LD_LIBRARY_PATH environment variables to make the system
+  find GStreamer in the prefix where you installed (by default that is /usr/local).
+
+- After this, you're ready to install gst-plugins, which will provide the
+  functionality you're probably looking for by now, so go on and read
+  that README.
+
+COMPILING FROM CVS
+------------------
+
+When building from CVS sources, you will need to run autogen.sh to generate 
+the build system files.
+
+You will need a set of additional tools typical for building from CVS,
+including:
+- autoconf
+- automake
+- libtool
+
+autogen.sh will check for recent enough versions and complain if you don't have
+them.  You can also specify specific versions of automake and autoconf with
+--with-automake and --with-autoconf
+
+Check autogen.sh options by running autogen.sh --help
+
+autogen.sh can pass on arguments to configure - you just need to separate them
+from autogen.sh with -- between the two.
+prefix has been added to autogen.sh but will be passed on to configure because
+some build scripts like that.
+
+When you have done this once, you can use autoregen.sh to re-autogen with
+the last passed options as a handy shortcut.  Use it.
+
+After the autogen.sh stage, you can follow the directions listed in
+"COMPILING FROM SOURCE"
+
+You can also run your whole cvs stack uninstalled.  The script in
+the gstreamer module /docs/faq/gst-uninstalled) is helpful in setting
+up your environment for this.
+
+PLUG-IN DEPENDENCIES AND LICENSES
+---------------------------------
+
+GStreamer is developed under the terms of the LGPL (see LICENSE file for
+details). Some of our plug-ins however rely on libraries which are available
+under other licenses. This means that if you are distributing an application
+which has a non-GPL compatible license (for instance a closed-source
+application) with GStreamer, you have to make sure not to distribute GPL-linked
+plug-ins.
+
+When using GPL-linked plug-ins, GStreamer is for all practical reasons
+under the GPL itself.
+
+HISTORY
+-------
+
+The fundamental design comes from the video pipeline at Oregon Graduate
+Institute, as well as some ideas from DirectMedia.  It's based on plug-ins that
+will provide the various codec and other functionality.  The interface
+hopefully is generic enough for various companies (ahem, Apple) to release
+binary codecs for Linux, until such time as they get a clue and release the
+source.
diff --git a/RELEASE b/RELEASE
new file mode 100644 (file)
index 0000000..1468eda
--- /dev/null
+++ b/RELEASE
@@ -0,0 +1,128 @@
+
+Release notes for GStreamer Ugly Plug-ins 0.10.19 "Stronger"
+        
+
+The GStreamer team is proud to announce a new release
+in the 0.10.x stable series of the
+GStreamer Ugly Plug-ins.
+
+
+The 0.10.x series is a stable series targeted at end users.
+It is not API or ABI compatible with the stable 0.8.x series.
+It is, however, parallel installable with the 0.8.x series.
+
+
+
+"When you have to shoot, shoot.  Don't talk."
+
+
+There are times when the world needs a color between black and white.
+Quality code to match the good's, but two-timing, backstabbing and ready to
+sell your freedom down the river.  These plug-ins might have a patent noose
+around their neck, or a lock-up license, or any other problem that makes you
+think twice about shipping them.
+
+
+We don't call them ugly because we like them less.  Does a mother love her
+son less because he's not as pretty as the other ones ? No  - she commends
+him on his great personality.  These plug-ins are the life of the party.
+And we'll still step in and set them straight if you report any unacceptable
+behaviour - because there are two kinds of people in the world, my friend:
+those with a rope around their neck and the people who do the cutting.
+
+
+This module contains a set of plug-ins that have good quality and correct
+functionality, but distributing them might pose problems.  The license
+on either the plug-ins or the supporting libraries might not be how we'd
+like. The code might be widely known to present patent problems.
+Distributors should check if they want/can ship these plug-ins.
+
+
+Other modules containing plug-ins are:
+
+
+gst-plugins-base
+contains a basic set of well-supported plug-ins
+gst-plugins-good
+contains a set of well-supported plug-ins under our preferred license
+gst-plugins-bad
+contains a set of less supported plug-ins that haven't passed the
+    rigorous quality testing we expect
+
+
+
+  
+
+Features of this release
+    
+      * a52dec: don't claim to support upstream renegotiation
+      * dvddemux: tweak subtitle stream setup based on dvd language codes event
+      * dvdreadsrc: fix off by one in cell calculation for the last chapter
+      * dvdreadsrc: fix sector search for packed titles; fix sector seeking
+      * dvdreadsrc: map subtitle language tag to stream indicated in PGC data
+      * dvdreadsrc: take into account first sector of the current title
+      * lame, lamemp3enc: ensure parsed output (most muxers need framed mp3 as input)
+      * lame, lamemp3enc: post CODEC and BITRATE tags
+      * mad: remove id3tag dependency used by in practice unreachable legacy code
+      * mpeg2dec: don't treat non-fatal errors as fatal and fix spurious failure to decode some files
+      * mpeg2dec: post QoS messages when dropping a frame due to QoS
+      * rtpasfdepay: avoid re-sending header; fix fragmented packet handling and packet padding
+      * twolame: improve output framing and timestamping
+      * x264enc: allow renegotiation but prefer current caps
+      * x264enc: negotiate profile, level and output stream-format from downstream caps where appropriate
+
+Bugs fixed in this release
+     
+      * 644233 : Set the H.264 level from the caps for encoding
+      * 391543 : lame should add a tag with the chosen bitrate
+      * 429476 : [mpeg2dec] can't play auge.mpg
+      * 653473 : x264enc: " subme " property value can go up to 10
+      * 655223 : [x264enc] properly handle stream-format from caps
+      * 658297 : rmdemux: tags get lost when transcoding
+      * 659252 : dvdreadsrc: various fixes for titles not starting on a new file
+      * 660562 : mpeg2dec: post QoS messages when dropping a frame due to QoS
+      * 662964 : asfdemux memleak
+      * 664175 : x264enc ! avimux results in not-negotiated flow error
+      * 665101 : Wrong format string in gst_dvd_read_src_do_seek
+
+Download
+
+You can find source releases of gst-plugins-ugly in the download directory:
+http://gstreamer.freedesktop.org/src/gst-plugins-ugly/
+
+GStreamer Homepage
+
+More details can be found on the project's website:
+http://gstreamer.freedesktop.org/
+
+Support and Bugs
+
+We use GNOME's bugzilla for bug reports and feature requests:
+http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
+
+Developers
+
+GStreamer is stored in Git, hosted at git.freedesktop.org, and can be cloned from there.
+Interested developers of the core library, plug-ins, and applications should
+subscribe to the gstreamer-devel list. If there is sufficient interest we
+will create more lists as necessary.
+
+        
+Applications
+  
+Contributors to this release
+    
+      * Brian Gitonga Marete
+      * David Schleef
+      * Edward Hervey
+      * Julien Isorce
+      * Mark Nauwelaerts
+      * Olivier Crête
+      * Sebastian Dröge
+      * Stefan Kost
+      * Stefan Sauer
+      * Thiago Santos
+      * Tim-Philipp Müller
+      * Vincent Penquerc'h
+      * Руслан Ижбулатов
\ No newline at end of file
diff --git a/REQUIREMENTS b/REQUIREMENTS
new file mode 100644 (file)
index 0000000..4198a37
--- /dev/null
@@ -0,0 +1,126 @@
+GStreamer uses a *large* array of tools and libraries, most of which are
+optional.  We have attempted to make sure that any code that depends on
+optional libraries doesn't get built unless you have those libraries.  If
+you find this not to be the case, please, let us know by filing a bug
+report at http://bugzilla.gnome.org/.
+
+
+Required tools:
+===============
+
+An extra set of tools is required if you wish to build GStreamer out of
+CVS (using autogen.sh):
+
+autoconf 2.52 or better 
+automake 1.5
+gettext 0.11.5
+libtool v1.4 or better
+pkgconfig 0.9.0 or better (http://www.freedesktop.org/software/pkgconfig/)
+
+Required libraries:
+===================
+
+The core GStreamer libraries. See the gstreamer/ module in GStreamer cvs, or
+the version that corresponds to this plugin release.
+
+Optional libraries:
+===================
+
+This file lists supporting libraries for which gst-plugins contains plugins,
+as well as their minimum version.  You can find the corresponding plugins in
+ext/(library)
+
+dirac          (Dirac video codec)
+                       http://www.bbc.co.uk/rd/projects/dirac/index.shtml
+libaudiofile    (for afsrc/afsink
+                       http://oss.sgi.com/projects/audiofile/
+libmad          (for the mad mp3 decoder plugin)
+                       http://www.mars.org/home/rob/proj/mpeg/
+libjpeg         (for jpegenc/jpegdec)
+                       http://www.ijg.org/
+libopenquicktime (for the QT plugin)
+                       http://sourceforge.net/projects/openquicktime/
+libXv          (for videosink)
+libxaudio      (for xa mp3 decoder)
+                       http://www.xaudio.com/
+libvorbis      (for vorbisenc, vorbisdec)
+                       http://www.xiph.org/ogg/vorbis/index.html
+libcdparanoia  (for cdparanoia ripper)
+                       http://www.xiph.org/paranoia/index.html
+liblame                (for lame mp3 encoder)
+                       http://www.mp3dev.org/mp3/
+libshout       (for the shoutcast plugin)
+                       http://www.icecast.org
+libasound      (for the alsa src/sink plugin)
+                       http://alsa-project.org/
+librtp         (for the rtp sink plugin)
+                       http://www.linphone.org/ortp/
+aalib          (for the aa sink plugin)
+                       http://aa-project.sourceforge.net/aalib/
+libcaca                (for the color aa sink plugin)
+                       http://sam.zoy.org/projects/libcaca/
+aRts           (for the arts plugin wrapper, and the artsd sink)
+                       http://www.arts-project.org
+raw1394/linux1394      (for the dv plugin)
+                       http://linux1394.sourceforge.net
+libdvdread     (for the dvdsrc)
+                       http://www.dtek.chalmers.se/groups/dvd/
+                       (optional: libcss for encrypted DVDs)
+libesound      (for the esd sink 
+                       ftp.gnome.org/pub/GNOME/stable/sources/esound)
+gnome-vfs      (for the gnome-vfs src)
+               >= 2.4.0
+libgsm         (for the gsm plugin)
+                       http://kbs.cs.tu-berlin.de/~jutta/toast.html
+sdl            (for the sdl sink)
+                       http://www.libsdl.org
+xmms           (for the xmms plugins wrapper)
+                       http://www.xmms.org
+mpeg2dec/a52dec        (for mpeg2 related plugins and dvd playback)
+                       http://libmpeg2.sourceforge.net/
+                       and http://liba52.sourceforge.net/
+               >=      v0.3.1/v0.7.2
+swfdec         (for the swfdec (flash) plugin)
+                       http://www.schleef.org/swfdec/
+liboil         (for the liboil optimization library)
+                       http://www.schleef.org/liboil/
+               >=      0.2.0
+flac           (for the FLAC lossless audio format)
+                       http://flac.sourceforge.net
+                >= 1.0.3 preferred, 1.0.2 should work
+gtk            (for the gdk_pixbuf plugin)
+                       http://www.gtk.org/
+               >= 2.2.1 preferred, 2.0 ok
+pango          (for the textoverlay plugins)
+                       http://www.pango.org/
+librfb         (for capturing of VNC output into a videostream)
+                       http://www.schleef.org/
+libHermes       (for colorspace conversions (should not be needed anymore))
+                        http://www.clanlib.org/hermes/
+dtsdec         (for DTS audio decoding)
+                       http://www.videolan.org/libdca.html
+divx           (for divx decoding)
+                       http://www.divx.com/divx/linux/
+libmng         (for mng animated image format encoding/decoding)
+                       http://gjuyn.xs4all.nl/libmng
+libvisual      (for audio visualisations)
+                       http://libvisual.sourceforge.net/v2/
+musepack       (for musepack audio codec/format)
+                       (http://www.musepack.net/)
+nas            (for the NAS sound server sink)
+                       (http://radscan.com/nas.html)
+libtheora      (for Ogg Theora video support)
+                       (http://www.theora.org)
+libmms         (for MMS protocol support)
+                       (http://www.sf.net/projects/libmms)
+libamrnb       (for AMR-NB support)
+                       (http://www.penguin.cz/~utx/amr)
+libamrwb       (for AMR-WB support)
+                       (http://www.penguin.cz/~utx/amr)
+
+
+Optional (debian) packages:
+===========================
+
+gtk-doc-tools 1.6  -- needed to build documentation
+python-xml  -- needed to build plugin documentation
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..d24c61b
--- /dev/null
@@ -0,0 +1,1155 @@
+# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
+# This file 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.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
+#
+# This file 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.
+
+# serial 1
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.3], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.3])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 1
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 12
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+             [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
+#
+# This file 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.
+
+# serial 1
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
+#
+# This file 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.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
+#
+# This file 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.
+
+# serial 5
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# (`yes' being less verbose, `no' or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 1
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4_if([$1], [v7],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([common/m4/as-ac-expand.m4])
+m4_include([common/m4/as-auto-alt.m4])
+m4_include([common/m4/as-compiler-flag.m4])
+m4_include([common/m4/as-python.m4])
+m4_include([common/m4/as-scrub-include.m4])
+m4_include([common/m4/as-version.m4])
+m4_include([common/m4/ax_create_stdint_h.m4])
+m4_include([common/m4/gst-arch.m4])
+m4_include([common/m4/gst-args.m4])
+m4_include([common/m4/gst-check.m4])
+m4_include([common/m4/gst-default.m4])
+m4_include([common/m4/gst-dowhile.m4])
+m4_include([common/m4/gst-error.m4])
+m4_include([common/m4/gst-feature.m4])
+m4_include([common/m4/gst-function.m4])
+m4_include([common/m4/gst-gettext.m4])
+m4_include([common/m4/gst-glib2.m4])
+m4_include([common/m4/gst-package-release-datetime.m4])
+m4_include([common/m4/gst-plugin-docs.m4])
+m4_include([common/m4/gst-plugindir.m4])
+m4_include([common/m4/gst.m4])
+m4_include([common/m4/gtk-doc.m4])
+m4_include([common/m4/orc.m4])
+m4_include([common/m4/pkg.m4])
+m4_include([m4/a52.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/gst-sid.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/intlmacosx.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/po.m4])
+m4_include([m4/progtest.m4])
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..9a0ebde
--- /dev/null
@@ -0,0 +1,121 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+DIE=0
+package=gst-plugins-ugly
+srcfile=ext/mad/gstmad.c
+
+# Make sure we have common
+if test ! -f common/gst-autogen.sh;
+then
+  echo "+ Setting up common submodule"
+  git submodule init
+fi
+git submodule update
+
+# source helper functions
+if test ! -f common/gst-autogen.sh;
+then
+  echo There is something wrong with your source tree.
+  echo You are missing common/gst-autogen.sh
+  exit 1
+fi
+. common/gst-autogen.sh
+
+# install pre-commit hook for doing clean commits
+if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \);
+then
+    rm -f .git/hooks/pre-commit
+    ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit
+fi
+
+
+CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc'
+
+autogen_options $@
+
+printf "+ check for build tools"
+if test ! -z "$NOCHECK"; then echo " skipped"; else  echo; fi
+version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262 autoconf261 autoconf260" \
+              "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 60 || DIE=1
+version_check "automake" "$AUTOMAKE automake automake-1.11 automake-1.10" \
+              "ftp://ftp.gnu.org/pub/gnu/automake/" 1 10 || DIE=1
+version_check "autopoint" "autopoint" \
+              "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
+version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
+              "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
+version_check "pkg-config" "" \
+              "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
+
+die_check $DIE
+
+autoconf_2_52d_check || DIE=1
+aclocal_check || DIE=1
+autoheader_check || DIE=1
+
+die_check $DIE
+
+# if no arguments specified then this will be printed
+if test -z "$*"; then
+  echo "+ checking for autogen.sh options"
+  echo "  This autogen script will automatically run ./configure as:"
+  echo "  ./configure $CONFIGURE_DEF_OPT"
+  echo "  To pass any additional options, please specify them on the $0"
+  echo "  command line."
+fi
+
+toplevel_check $srcfile
+
+# autopoint
+#    older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
+if test -x mkinstalldirs; then rm mkinstalldirs; fi
+#    first remove patch if necessary, then run autopoint, then reapply
+if test -f po/Makefile.in.in;
+then
+  patch -p0 -R < common/gettext.patch
+fi
+tool_run "$autopoint --force"
+patch -p0 < common/gettext.patch
+
+tool_run "$libtoolize" "--copy --force"
+tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
+tool_run "$autoheader"
+
+# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode
+echo timestamp > stamp-h.in 2> /dev/null
+
+tool_run "$autoconf"
+tool_run "$automake" "-a -c"
+
+# if enable exists, add an -enable option for each of the lines in that file
+if test -f enable; then
+  for a in `cat enable`; do
+    CONFIGURE_FILE_OPT="--enable-$a"
+  done
+fi
+
+# if disable exists, add an -disable option for each of the lines in that file
+if test -f disable; then
+  for a in `cat disable`; do
+    CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
+  done
+fi
+
+test -n "$NOCONFIGURE" && {
+  echo "+ skipping configure stage for package $package, as requested."
+  echo "+ autogen.sh done."
+  exit 0
+}
+
+echo "+ running configure ... "
+test ! -z "$CONFIGURE_DEF_OPT" && echo "  ./configure default flags: $CONFIGURE_DEF_OPT"
+test ! -z "$CONFIGURE_EXT_OPT" && echo "  ./configure external flags: $CONFIGURE_EXT_OPT"
+test ! -z "$CONFIGURE_FILE_OPT" && echo "  ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
+echo
+
+./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
+        echo "  configure failed"
+        exit 1
+}
+
+echo "Now type 'make' to compile $package."
diff --git a/autoregen.sh b/autoregen.sh
new file mode 100755 (executable)
index 0000000..c67a299
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./autogen.sh  $@
diff --git a/common/ChangeLog b/common/ChangeLog
new file mode 100644 (file)
index 0000000..92d0d25
--- /dev/null
@@ -0,0 +1,1712 @@
+2008-12-17  Edward Hervey  <bilboed@gmail.com>
+
+       * gst.supp:
+       And yet another variation of the GstAudioFilter leak.
+
+2008-12-15  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       Patch by: Roland Illig <roland dot illig at gmx dot de>
+
+       * m4/gst-parser.m4:
+       Fix AG_GST_BISON_CHECK to handle version numbers with more than
+       two components (i.e. 2.4.1). Fixes bug #564507.
+
+2008-12-14  Edward Hervey  <bilboed@gmail.com>
+
+       * gst.supp:
+       And yet another variant of the GstAudioFilter leak.
+
+2008-12-13  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * gst.supp:
+       Added variants of leaks of dynamic pad templates created in
+       GstAudioFilter.
+       Add conditional jump triggered by getaddrinfo (maybe glibc-2.9).
+
+2008-12-12  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * gst.supp:
+       Fix leak in GIO called by gnomevfs. Nothing we can do about this.
+
+2008-12-12  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * gst.supp:
+       Added another suppression for dynamic pad templates, in this case
+       GstAudioFilter.
+       Added suppression for PangoLanguage which can never be freed
+       according to the Pango API.
+
+2008-12-12  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * gst.supp:
+       A whole bunch of suppressions detected on latest gentoo ~amd64.
+       Make some existing suppressions more generic (for subtle dependecy
+       code changes).
+       Added suppressions for glibc-2.9.
+       Added suppressions for new variants of ALSA leaks.
+       Added suppressions for a series of leaks in plugins registrations due
+       to some pad templates' caps calculated at runtime.
+       Added suppressions for variants of some leaks in pango/fontconfig.
+       Added suppressions for leak in gstffmpegcsp.c (nothing we can do
+       about it, but will only exist once).
+
+2008-12-04  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * m4/gst-plugin-docs.m4:
+       Remove the check if $have_gtk_doc equals yes as it's not defined
+       and $enable_gtk_doc should be good enough.
+       Also this restores the build of the plugin documentation.
+
+2008-12-01  Mark Nauwelaerts  <mark.nauwelaerts@collabora.co.uk>
+
+       * gst.supp:
+       Add suppression variant for Ubuntu Hardy x86/64bit.
+
+2008-12-01  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+         Simplily uninstall rule. Its closer to upstream and fixes #150331.
+
+2008-11-29  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * m4/glib-gettext.m4:
+       Update glib-gettext.m4 from latest stable GLib release.
+
+2008-11-29  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       Patch by: Cygwin Ports maintainer
+                  <yselkowitz at users dot sourceforge dot net>
+
+       * gettext.patch:
+       Update the gettext patch for use with gettext 0.17 which is
+       required to build with libtool 2.2 because of conflicts.
+       First part of bug #556091.
+
+2008-11-29  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * m4/gtk-doc.m4:
+       * m4/pkg.m4:
+       Update gtk-doc and pkg-config m4 macros from their latest releases.
+
+2008-11-20  Michael Smith <msmith@songbirdnest.com>
+
+       * m4/as-objc.m4:
+         Fix objective C test macro when none of the compilers are found at all.
+
+2008-10-30  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc.mak:
+         Also cp the entities here to all xinlcude based docs (workaround for
+         not being able to set up a search path).
+
+2008-10-17  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gtk-doc.mak:
+         Don't clobber the real registry cache file when
+         building docs.
+
+2008-10-07  Jan Schmidt - Sun Microsystems <jan.schmidt@sun.com>
+
+       * m4/gst-error.m4:
+         Also disable the bogus "loop not entered at top" warnings appearing on Sparc Forte builds.
+
+2008-10-06  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc.mak:
+         Apply the same fix as below to gtk-doc.mak. Somehow did not end up in
+         CVS.
+
+2008-09-05  David Schleef  <ds@schleef.org>
+
+       * gtk-doc-plugins.mak: Fix the check for gtkdoc-rebase: don't
+         pass the 'which' error back to make.  This fix is more specific
+         than what is in upstream.
+
+2008-09-05  David Schleef  <ds@schleef.org>
+
+       * gtk-doc.mak: Fix the check for gtkdoc-rebase: don't pass the
+         'which' error back to make.  This fix is more specific than
+         what is in upstream.
+
+2008-09-04  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+         Get closer to upstream makefiles. Don't install index.sgml twice. Call
+         gtkdoc-rebase (if exists).
+
+2008-08-21  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+         Revert $(top_builddir) -> $(builddir) change of rev. 1.39 as there is
+         no variable called builddir.
+
+2008-07-31  Mark Nauwelaerts  <mark.nauwelaerts@collabora.co.uk>
+
+       * gst.supp:
+       Add suppressions for Ubunty Hardy x86/64bit, similar to earlier
+       versions and 32bit variant.
+
+2008-07-31  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * m4/gst-feature.m4:
+       Remove GST_DISABLE_(ENUMTYPES|INDEX|URI).
+
+2008-07-21  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * m4/gst-error.m4::
+         When checking for GST_ERROR_CXXFLAGS, check each compiler flag
+         individually, not all together.
+
+2008-07-20  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * m4/gst-parser.m4::
+         Fix bison version number detection for older --version
+         output format (as bison 1.28 on OSX 10.4 outputs).
+         Fixes #543853.
+
+2008-07-12  Stefan Kost  <ensonic@users.sf.net>
+
+       * plugins.xsl:
+         Split refsect2 also here to make "Element Pads" subtitle visible.
+
+2008-07-08  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * m4/gst-error.m4:
+       Add compiler flags to warn if declarations after statements or
+       variable length arrays are used. These are C99/GCC extensions and
+       are not supported by some compilers we want to support.
+
+2008-07-02  Mark Nauwelaerts  <mark.nauwelaerts@collabora.co.uk>
+
+       * gtk-doc-plugins.mak:
+       Only clean doc maintainer stamps in maintainer-clean.  Fixes #539977.
+
+2008-06-20  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gstdoc-scangobj:
+       Always use format strings for printf-like functions, even if they just
+       print a string. Fixes bug #536981.
+
+2008-06-20  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+       Include CFLAGS and LDFLAGS in GTKDOC_CFLAGS and GTKDOC_LDFLAGS,
+       otherwise the values passed to configure are ignored.
+       Fixes bug #536978.
+
+2008-06-05  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * m4/gst-error.m4:
+         Add -fno-strict-aliasing when compiling with -Werror, to work around
+         warnings caused by G_LOCK with recent GLib versions (2.16.x) (#316221).
+
+2008-06-05  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gtk-doc.mak:
+       Don't copy html/*.png files unless they don't already exist
+       in the destdir. Fixes distcheck failure caused by permissions
+       problems trying to copy a file into the destdir when it already
+       exists.
+
+2008-05-28  Stefan Kost  <ensonic@users.sf.net>
+
+       * plugins.xsl:
+         The class was not shown in plugin docs. Fix typo in changelog below.
+
+2008-05-22  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gstdoc-scangobj:
+       Emit warnings if one of the GTypes we're expecting is 0
+       when scanning.
+
+2008-05-21  Felipe Contreras  <felipe.contreras@gmail.com>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+       Fix installing png images when gtk-doc is disabled.
+
+2008-05-21  Felipe Contreras  <felipe.contreras@gmail.com>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+       Fix make clean when gtk-doc is disabled and other cleanups.
+
+2008-05-17  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gtk-doc-plugins.mak:
+       Be more quiet when the files don't yet exist.
+
+2008-05-16  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gstdoc-scangobj:
+       Add a mechanism for adding 'implicitly created' GTypes into the
+       scan, allowing for documenting plugin-private base classes that
+       provide signals or properties for public elements.
+
+       * gtk-doc-plugins.mak:
+       Use $(builddir) instead of $(top_builddir) in a few places - there's
+       no need to hard code 'docs/plugins' as the only useable path.
+
+2008-05-14  Peter Kjellerstedt  <pkj@axis.com>
+
+       * m4/gst-feature.m4:
+       Report plug-ins without external dependencies that will not be built
+       even when the name of the plug-in is a substring of another plug-in,
+       e.g., goom vs. goom2k1.
+
+2008-05-14  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * gst.supp:
+         Add suppression for glibc bug on gutsy/x86-64
+
+2008-05-12  Stefan Kost  <ensonic@users.sf.net>
+
+       * plugins.xsl:
+         Improve the layout of the caps, but splitting them on ";".
+
+2008-05-09  Sebastian Dröge  <slomo@circular-chaos.org>
+       
+       Patch by: Brian Cameron <brian dot cameron at sun dot com>
+
+       * m4/gst-default.m4:
+       Don't set the default audio sink to the default visualizer.
+       Fixes bug #532295.
+
+2008-05-07  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * check.mak: (help):
+         Document GST_CHECKS environment variable in checks 'make help'.
+
+2008-05-06  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com>
+
+       * scangobj-merge.py:
+       Don't depend on Twisted just for the OrderedDict but implement our
+       own ordered dictionary class. Fixes bug #531577.
+
+2008-04-23  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * gst.supp:
+       Re-arrange latest suppressions.
+       Add all known suppressions for ubuntu hardy. Same as for older
+       ubuntus, but with different codepaths.
+
+2008-04-22  Edward Hervey  <bilboed@gmail.com>
+
+       * gst.supp: Make tls leak suppression a bit more generic.
+
+2008-04-22  Edward Hervey  <bilboed@gmail.com>
+
+       * gst.supp: Fix ommission in latest commit.
+       Make tls leak suppression more generic in order to cover more
+       distributions (and hopefully also future distributions).
+
+2008-04-22  Edward Hervey  <bilboed@gmail.com>
+
+       * gst.supp: Add suppressions for Hardy.
+       They're just the newer versions of similar suppressions we had
+       for the previous versions of ubuntu.
+
+2008-04-15  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * Makefile.am:
+       * m4/Makefile.am:
+       Dist all files in common. Fixes bug #527984.
+
+2008-04-14  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-function.m4:
+         Rename AC_CACHE_VAL cache-ids to contain '_cv_' in order to make
+         autoconf-2.62 complain less.
+
+2008-04-13  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-args.m4:
+       * m4/gst-valgrind.m4:
+         Bump valgrind requirement to 3.0 (which was released in August 2005).
+         Fixes #489269. Also, check for version >=REQ and not >REQ.
+
+2008-04-09  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-default.m4:
+         Add --with-default-{audiosink|audiosrc|videosink|videosrc|visualizer}
+         configure switches (#519417).
+
+2008-04-03  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-args.m4:
+         Add --disable-foo switch for dependency-less plugins (#525586).
+
+2008-04-01  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-parser.m4:
+       Unconditionally require flex 2.5.31 and bison 1.875.
+
+2008-03-23  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-arch.m4:
+       amd64/x86_64 allows unaligned memory access too.
+
+2008-03-21  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-dowhile.m4:
+       Add macro that checks if the compiler supports do {} while (0)
+       macros and define HAVE_DOWHILE_MACROS if it does. This is
+       needed by glib/gmacros.h to use something else than
+       if (1) else for G_STMT_START/END when compling C++, which
+       causes compiler warnings because of ambigious else with g++ 4.3.
+
+2008-03-21  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-plugin-docs.m4:
+       * mangle-tmpl.py:
+       Don't depend on PyXML and use only XML modules that are shipped
+       with python. Fixes bug #519635.
+
+2008-03-07  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * m4/gtk-doc.m4: (GTK_DOC_CHECK): 
+       The previous commit to this file by Stefan Kost mentionned checking for
+       SED, but NOT checking for gtkdoc-check (wth is that doing there ??).
+       Therefore, removing the check for gtkdoc-check
+
+2008-03-03  David Schleef  <ds@schleef.org>
+
+       * m4/ax_create_stdint_h.m4: Oops, checked in the wrong copy of
+         this file.  (Update from upstream)
+
+2008-03-03  David Schleef  <ds@schleef.org>
+
+       * m4/ax_create_stdint_h.m4:  Update from upstream.  Fixes a bug
+         compiling with MSVC.
+
+2008-03-03  Edward Hervey  <edward.hervey@collabora.co.uk>
+
+       * m4/pkg.m4:
+       Allow override of pkg-config results, as proposed by configure --help.
+       This is in fact just a backport from upstream pkg.m4.
+       Fixes #518892
+
+2008-03-03  Peter Kjellerstedt  <pkj@axis.com>
+
+       * ChangeLog:
+       Changelog surgery of my previous commit to add bugzilla reference.
+       * m4/gst-args.m4:
+       Add AG_GST_CHECK_PLUGIN and AG_GST_DISABLE_PLUGIN to make it easier
+       to include and exclude plug-ins without external references, i.e.,
+       plug-ins listed in GST_PLUGINS_SELECTED. (#498222)
+
+2008-03-03  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add another glibc suppression.
+
+2008-02-29  Peter Kjellerstedt  <pkj@axis.com>
+
+       * m4/gst-feature.m4:
+       Make the comment before defines generated via AG_GST_CHECK_FEATURE
+       look nicer. (#498222)
+
+2008-02-26  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * m4/Makefile.am:
+       * m4/as-gcc-inline-assembly.m4:
+       Add Dave Schleef's GCC inline assembly detection macro
+       for using in gst-plugins-good in the goom 2k4 plugin.
+
+2008-02-25  Andy Wingo  <wingo@pobox.com>
+
+       * gst-autogen.sh: Instead of only passing certain arguments to
+       configure, pass anything that we didn't handle. Much friendlier.
+       Fixes #34412.
+
+2008-02-23  Jan Schmidt  <Jan.Schmidt@sun.com>
+
+       * m4/gst-error.m4:
+       Store the detected compiler flags into ERROR_CFLAGS rather than
+       ERROR_CXXFLAGS, and use the macro that checks the C compiler, not
+       the C++ one.
+
+2008-02-23  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-error.m4:
+         Reflow checks for additional warning flags so they're not
+         nested, which fixes the result reporting in the configure
+         output.
+
+2008-02-22  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/as-compiler-flag.m4:
+         Add AS_CXX_COMPILER_FLAG
+
+       * m4/gst-error.m4:
+         Add AG_GST_SET_ERROR_CXXFLAGS (Forte bits need testing)
+
+2008-02-22  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gtk-doc-plugins.mak:
+         Add 'check-inspected-versions' target; this helps identify
+         files that should have been removed or where the version
+         number should (ideally) be updated before a release
+         (which doesn't happen automatically if the releaser doesn't
+         build that plugin locally). Not adding at a distcheck hook
+         yet though, because it's not really that important and would
+         probably also be a problem on buildbots.
+
+2008-02-22  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add even more glibc 2.7 suppressions.
+
+2008-02-22  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add another suppression for GLib caching some values after
+       the first call.
+
+2008-02-12  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       Patch by:
+         Tim Mooney <mooney at dogbert dot cc dot ndsu dot nodak dot edu>
+
+       * m4/gst-error.m4:
+       Use no%E_MACRO_REDEFINED on Solaris to prevent compiler warnings.
+       Fixes bug #515905.
+
+2008-02-11  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add a few more glibc 2.7 suppressions to make the avisubtitle unit
+       test valgrind clean. Fixes bug #515703.
+
+2008-02-08  Stefan Kost  <ensonic@users.sf.net>
+
+       * ChangeLog:
+         Changelog surgery for last commit.
+
+2008-02-08  Stefan Kost  <ensonic@users.sf.net>
+
+       * m4/gtk-doc.m4:
+         Conditionally check for SED. Also sync a bit with upstream macro.
+
+2008-02-08  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+         Use '$(SED)' instead of 'sed'. Don't use -i for in-place as its gnu
+         only, move to a temp file instead.
+
+2008-02-06  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+        As our docs are versioned, we need to patch the index.sgml file to have
+        correct paths there, unless we also want to fork gtk-doc's xsl (which
+        we don't). This hopefully fixes xrefs between modules.
+
+2008-02-02  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-feature.m4:
+       Use printf instead of echo as "echo -e" isn't POSIX and doesn't work
+       with strict POSIX shells like tcsh or dash and also not every platform
+       has a /bin/echo that supports it.
+
+2008-01-24  Stefan Kost  <ensonic@users.sf.net>
+
+       * ChangeLog:
+         ChangeLog surgery.
+
+       * gstdoc-scangobj:
+         Sync the object scanner with gtk-doc fixes. Update args and hierarchy
+         files.
+
+2008-01-20  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * check.mak:
+       * coverage/lcov.mak:
+       * gtk-doc-plugins.mak:
+       * release.mak:
+       Use $(MAKE) instead of make to fix the build if GNU make is called
+       something else on the system.
+       
+       * m4/as-docbook.m4:
+       Fix path for docbook.xsl if we have no /etc/xml/catalog and add a
+       docbook-xsl search path for FreeBSD.
+
+2008-01-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add a suppression for a glibc bug:
+       http://valgrind.org/docs/manual/faq.html#faq.exit_errors>
+
+2008-01-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add some more glibc 2.7 suppressions and make the GLib suppressions
+       for the home/tmp/etc directory caching a bit more generic.
+
+2008-01-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst.supp:
+       Add some glibc 2.7 supressions as found on Debian/unstable.
+
+2008-01-14  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * download-translations:
+       Apparently I have problems with leaving things commented out when
+       I edit shell scripts.
+
+2008-01-12  Jan Schmidt  <Jan.Schmidt@sun.com>
+
+       * download-translations:
+       Remove bash-isms
+
+2008-01-12  Jan Schmidt  <Jan.Schmidt@sun.com>
+
+       * check-exports:
+       Restore the cleanup rm of our tmp file which I didn't mean to leave 
+       commented out.
+
+2008-01-12  Jan Schmidt  <Jan.Schmidt@sun.com>
+
+       * check-exports:
+         Fixes to make check-export work on both Solaris and Linux
+
+       * m4/gst-error.m4:
+         Disable extra warning category (argument mismatch) as an error
+         on Forte, as it prevents the libcheck fail_if macros from compiling.
+
+       * win32.mak:
+         Substitute the GStreamer version so things will keep working in 0.11
+
+2008-01-11  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Peter Kjellerstedt <pkj axis com>
+
+       * m4/gst-glib2.m4:
+       * m4/gst-libxml2.m4:
+         Improve/fix output from configure if either glib-2.0 or
+         libxml2 are not installed (#498222).
+
+2008-01-09  Stefan Kost  <ensonic@users.sf.net>
+
+       * coverage/lcov.mak:
+         Update coverage make-rules: use them conditionaly, use libtool mode
+         and use lcov to cleanup.
+
+2007-12-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * glib-gen.mak:
+         Also use #include "header" instead of #include <header> for the
+         headers that were used to generate the source files for the same
+         reason as below.
+
+         Remove whitespace before #include.
+
+2007-12-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * glib-gen.mak:
+         Use #include "header" instead of #include <header> for the generated
+         enum C files as the file will always be in the same directory and
+         some compilers seem to be a bit strict about that unless . is added
+         to the include path.
+
+         Include all headers that were used to generate the source files in
+         the C file as they're used there.
+
+2007-12-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * win32.mak: (win32), (win32defs), (win32crlf):
+         Make check for CR LF in Visual C++ 6.0 project files
+         work, based on patch by David Schleef (#496722, #393626).
+       
+2007-12-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * Makefile.am:
+         Don't forget to dist the new win32.mak.
+
+2007-12-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * win32.mak: (win32), (win32defs):
+         Move common win32 Makefile foo into this new file.
+
+2007-12-15  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+         We should have never forked this that much :/.
+
+2007-12-13  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * check-exports:
+         Fix build on the ppc64 build bot.
+
+2007-12-13  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * check-exports:
+         Suppress more unintentional exports (too much hassle to rename them,
+         since the win32 project files would need changing too).
+
+2007-12-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * Makefile.am:
+         check-exports should be disted.
+
+2007-12-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * check-exports:
+         Add quick'n'dirty script to check the exported symbols of a library
+         against the symbols in the corresponding .def file (#493983). Based
+         on script by Ole André Vadla Ravnås.
+
+2007-11-06  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gtk-doc-plugins.mak:
+       Fix distcheck by making sure the types files are treated like the
+       other gtkdoc-scangobj generated files.
+
+2007-09-21  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-args.m4:
+         Let the AG_GST_ARG_ENABLE_EXPERIMENTAL macro default to disable
+         building of experimental plugins. Nobody uses it yet and the
+         --enable--experimental stuff from gst-plugins-good defaults to
+         disable too.
+
+2007-09-06  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gtk-doc-plugins.mak:
+         Just use the normal 'check' target and avoid a circular
+         dependency.
+
+2007-09-06  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gtk-doc-plugins.mak:
+         Add rule to error out if .hierarchy file contains tabs.
+
+2007-08-20  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * download-translations:
+       * po.mak:
+         If there are new languages, they need to be added to po/LINGUAS.
+
+2007-08-20  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * download-translations:
+       * po.mak:
+         Fix up 'download-po' a bit, so that we find new translations
+         for languages that aren't in our po/LINGUAS file yet too.
+
+2007-07-16  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst.supp:
+       Add a suppression for GLib caching the tmp dir seen on an
+       Ubuntu Feisty system.
+
+2007-07-13  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * m4/gst-feature.m4:
+       If we want to use 'echo -e', call /bin/echo instead of the shell's
+       since -e is a bash extension, and our /bin/sh might not be being
+       provided by bash.
+
+2007-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po.mak:
+         Translation project has moved.  Also, no idea how this used to
+         work given that we weren't downloading a .po file.
+
+2007-06-25  Stefan Kost  <ensonic@users.sf.net>
+
+       * gst-xmlinspect.py:
+       * plugins.xsl:
+         Also extract element caps for plugin-docs. Fixes parts of #117692.
+
+2007-06-21  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Andreas Schwab
+
+       * m4/gst-feature.m4:
+         Fix quoting (#449493).
+
+2007-06-10  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-parser.m4:
+       Only generate the parser if bison >= 1.875 _and_ flex >= 2.5.31 is
+       installed and use pre-generated sources otherwise. Fixes bug #444820.
+
+2007-05-11  Michael Smith <msmith@fluendo.com>
+
+       * gst.supp:
+         Suppression variant for our good friend the TLS leak, this time for
+         Ubuntu Feisty/x86.
+
+2007-05-09  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gtk-doc-plugins.mak:
+         Fix make distcheck again; change some spaces to tabs in makefile.
+
+2007-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak (-module):
+         Error out when the html build step gives warnings, so they get
+         fixed properly.
+
+2007-04-23  Stefan Kost  <ensonic@users.sf.net>
+
+       * m4/gst-feature.m4:
+         Add macro AG_GST_PARSE_SUBSYSTEM_DISABLES that checks the defines in
+         the configuration header and AC_DEFINES the setings.
+
+2007-04-19  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       Patch by: Vincent Torri <vtorri at univ-evry dot fr>
+
+       * m4/gst-parser.m4:
+       Put the AC_MSG_RESULT output in brackets to get it properly written to
+       the terminal.
+
+2007-04-18  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-parser.m4:
+       Check for flex >= 2.5.31 and set GENERATE_PARSER if we have at least
+       that version. Otherwise use pre-generated parser sources as we can't
+       raise the required flex version. HAVE_MT_SAVE_FLEX is obsolete now
+       as we use a new enough flex version anyway. First part of #349180
+
+2007-04-10  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         Allow pre-setting the GST(PB)_TOOLS/PLUGINS_DIR variables to help
+         builds against older GStreamer.
+
+2007-03-25  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * m4/gst-parser.m4:
+       Fix the flex version check. It ignored the micro version before.
+
+2007-03-09  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * check.mak:
+       Use the same timeout when generating valgrind suppressions as 
+       running the valgrind test.
+
+       * gst.supp:
+       Add some more suppressions and stuff.
+
+2007-03-08  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * check.mak:
+       Make sure GSlice is disabled when building suppressions too.
+
+       * gst.supp:
+       Add around *850* lines of suppressions for one-time initialisations
+       inside libasound and gconf/bonobo/ORBit. I feel so dirty.
+
+2007-03-07  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst.supp:
+       add a suppression for this GConf flup on the FC5 buildbot.
+
+2007-03-06  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst.supp:
+       Make the suppression a little more generic, to catch the FC5 
+       backtrace too.
+
+2007-03-06  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst.supp:
+       Add a suppression for libcdio 0.76. It leaks an internal struct
+       when the CD-ROM device is not accessible.
+
+2007-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-arch.m4:
+         Move a line that was in the wrong macro
+
+2007-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst.m4:
+         Add
+       * m4/gst-arch.m4:
+       * m4/gst-args.m4:
+       * m4/gst-check.m4:
+       * m4/gst-debuginfo.m4:
+       * m4/gst-default.m4:
+       * m4/gst-doc.m4:
+       * m4/gst-error.m4:
+       * m4/gst-feature.m4:
+       * m4/gst-function.m4:
+       * m4/gst-gettext.m4:
+       * m4/gst-glib2.m4:
+       * m4/gst-libxml2.m4:
+       * m4/gst-parser.m4:
+       * m4/gst-plugin-docs.m4:
+       * m4/gst-plugindir.m4:
+       * m4/gst-valgrind.m4:
+       * m4/gst-x11.m4:
+         Convert all macros to use AG_GST style so we can properly warn
+         when they're missing if configure.ac calls AG_GST_INIT
+         Will require update in all GStreamer modules.
+
+2007-02-11  Stefan Kost  <ensonic@users.sf.net>
+
+       * m4/gst-args.m4:
+         Remove 'enable' from configure switch description as this leads to 
+         confusing lines like "disable enable builing ...".
+       * m4/gst-feature.m4:
+         Fix comment to sound less horrible.
+
+2007-02-07  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Will Newton  <will.newton gmail com>
+
+       * m4/gst-check.m4:
+         Use $PKG_CONFIG rather than pkg-config directly, the one in our path
+         might not be the one we want, like when cross-compiling. Also, other
+         macros such as PKG_CHECK_MODULES use $PKG_CONFIG, so we should
+         probably too just for consistency. Fixes #405288.
+
+2007-01-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-parser.m4:
+         Need to use double square brackets again so m4 doesn't remove them
+         (fixes #378931).
+
+       * m4/gst-args.m4:
+         Use double square brackets here as well, for the same reason.
+
+2007-01-05  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-parser.m4:
+         Use 'sed' rather than 'tr' to strip trailing letters from version
+         numbers, since 'tr' might not be available and we know sed is
+         (#378931).
+
+2006-10-21  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * check.mak:
+         Increase default timeout under valgrind, 60 is just too short and
+         some tests take a bit longer these days and not everyone has a
+         beefy machine.
+
+2006-09-29  Michael Smith  <msmith@fluendo.com>
+
+       * gst.supp:
+         More suppressions for edgy. 
+
+2006-09-28  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * m4/gst-glib2.m4:
+       Use gmodule-no-export-2.0.pc instead of gmodule-2.0.pc - we neither
+       want nor need --export-dynamic (which ends up making us export a bunch
+       of unneeded symbols)
+
+2006-09-14  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst.supp:
+         Some suppressions for the more recent ld.so in ubuntu edgy.
+
+2006-08-23  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst.supp:
+         Shorten function trail so the suppression works on
+         my ubuntu dapper system with core cvs as well.
+
+2006-07-28  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst.supp:
+       Extra suppressions from my Ubuntu x86_64 machine
+
+2006-07-24  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Frederic Peters <fpeters at entrouvert com>
+
+       * m4/gst-parser.m4:
+         Need to double square brackets in .m4 files. Should fix bison
+         version detection with version numbers like 1.23a (#348354).
+
+2006-07-24  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * check.mak:
+       Valgrind fails to find tests written in tests/check/ directly (rather
+       than a subdir) - because valgrind gets run with a filename that
+       doesn't contain a relative path, it goes searching /usr/bin instead.
+       Run with ./.... to make things work either way.
+
+       * gtk-doc-plugins.mak:
+       Add $(top_builddir)/src as a place to look for plugins
+       when building too, since that's where gst-template keeps things
+
+2006-07-23  Stefan Kost  <ensonic@users.sf.net>
+
+       Patch by: Frederic Peters <fpeters@entrouvert.com>
+
+       * m4/gst-parser.m4:
+         Fix bison detection (#348354)
+
+2006-07-21  Stefan Kost  <ensonic@users.sf.net>
+
+       * m4/gst-parser.m4:
+         check for bison and flex
+
+2006-07-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-plugin-docs.m4:
+         remove the configure argument for enabling plugin doc build;
+         having gtk-doc enabled and pyxml present is enough of a trigger
+
+2006-07-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * coverage/lcov.mak:
+         fix up rules to work with gst-python as well
+         run "make lcov" to test and generate the reports
+         run "make lcov-reset" to redo it after that
+
+2006-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * check.mak:
+         add an inspect target that inspects every element feature,
+         so we can have that added for coverage
+       * coverage/lcov.mak:
+         add support for lcov
+
+2006-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+         when building with gcov, reset CFLAGS and friends to O0
+
+2006-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+         Find the gcov that matches the gcc version
+         Only allow gcov if we use gcc
+
+2006-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * coverage/coverage-report-entry.pl:
+       * coverage/coverage-report.pl:
+       * coverage/coverage-report.xsl:
+         copy coverage reporting files from dbus
+
+2006-07-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+         libtool strips gcov's -f flags, so libgcov does not get
+         linked in.  Setting GCOV_LIBS with -lgcov fixes libtool's
+         stripping
+         also show what pkg-config-path we set
+
+2006-06-22  Tim-Philipp Müller  <tim at centricular dot net>
+
+       Patch by: Peter Kjellerstedt <pkj at axis com>
+
+       * m4/gst-feature.m4:
+         Show list of plugins without external dependencies that
+         will not be built as well (#344136).
+
+2006-06-15  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * m4/gst-plugin-docs.m4:
+         add GST_PLUGIN_DOCS, which checks for everything needed
+         to build the plugin docs (namely gtk-doc and pyxml); also
+         adds a new --enable-plugin-docs configure switch; will
+         set ENABLE_PLUGIN_DOCS conditional for use in Makefile.am
+         files (see #344039).
+
+2006-06-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         add GST_PKG_CHECK_MODULES, which in the normal case of checking
+         for a dependency lib for a plug-in only needs two arguments
+         to do the right thing.
+       * m4/gst-feature.m4:
+         clean up output a little of feature checking; also deal with
+         non-plug-in feature checks
+       * m4/Makefile.am:
+       * m4/gst-gstreamer.m4:
+         remove this file; it's a useless check
+
+2006-06-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-arch.m4:
+         add PPC64 so we can have separate structure sizes for it
+
+2006-06-05  Edward Hervey  <edward@fluendo.com>
+
+       * gtk-doc.mak:
+       Check for the proper .devhelp2 file to remove.
+
+2006-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc.mak:
+         allow a magic variable to suppress errors from docbuilding
+
+2006-05-30  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * gtk-doc.mak:
+         error out if gtkdoc-mktmpl finds unused declarations
+
+2006-05-28  Edward Hervey  <edward@fluendo.com>
+
+       * gst.supp:
+       Reverting previous commit.  That's good to know, Edward, but why ?
+       
+2006-05-28  Edward Hervey  <edward@fluendo.com>
+
+       * gst.supp:
+       Added suppresion for memleak in g_option_context_parse on fc5-64
+
+2006-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         set GSTPB_PLUGINS_DIR just like GST_PLUGINS_DIR
+
+2006-05-18  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * check.mak:
+         Fix 'make help' in check directories, it should be
+         'valgrind.gen-suppressions' not 'valgrind-gen-suppressions'
+         (not changing target to match help string on purpose to keep
+         scripts etc. functional).
+
+2006-05-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       Patch by: Peter Kjellerstedt
+
+       * m4/gst-arch.m4:
+         add support for CRIS and CRISv32.
+
+2006-05-17  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * m4/gst-args.m4:
+       Fix the macros for command-line supplied package and origin names
+       so they don't end up being configure as "" (Fixes #341479)
+
+2006-05-14  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * gtk-doc.mak:
+       Add uninstall rule to remove .devhelp2 files.
+
+2006-05-09  Edward Hervey  <edward@fluendo.com>
+
+       * gst.supp: 
+         Add suppression for GSlice version of
+         g_type_init calloc leak
+
+2006-04-05  Michael Smith  <msmith@fluendo.com>
+
+       * gst.supp:
+         Delete a bogus suppression for the registry code.
+         Generalise a suppression for a glib bug (see #337404)
+
+2006-04-04  Michael Smith <msmith@fluendo.com>
+
+       * gst.supp:
+         Add a leak suppression: the existing glibc-doesn't-free-TLS one
+         wasn't triggering here.
+
+2006-04-04  Michael Smith <msmith@fluendo.com>
+
+       * gst.supp:
+         Add some minimally-neccesary suppressions for my x86/dapper system.
+
+2006-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * plugins.xsl:
+         Do not display an origin link if origin does not start with http
+         See #323798
+
+2006-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+       * m4/gst-feature.m4:
+         add more macros
+       * m4/gst-x11.m4:
+         X11-related checks
+
+2006-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-version.m4:
+         newer version
+       * m4/gst-args.m4:
+       * m4/gst-doc.m4:
+         update and add other macros to be shared across projects
+
+2006-03-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst.supp:
+         add a suppression for g_parse_debug_string
+
+2006-03-23  Stefan Kost  <ensonic@users.sf.net>
+
+       * gstdoc-scangobj:
+         sync fully with gtkdoc-0.15
+
+2006-03-23  Stefan Kost  <ensonic@users.sf.net>
+
+       * gstdoc-scangobj:
+       * gtk-doc.mak:
+         sync a little with gtk-doc mainline
+
+2006-03-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst.supp:
+         add another clone suppression
+         change all glibc suppressions to match 2.3.*
+
+2006-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/check.m4:
+         fix test so it actually works when the normal check is used
+         over debian's/ubuntu's
+
+2006-03-08  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * check.mak:
+       Set G_SLICE=always-malloc when valgrinding tests
+       (closes #333272)
+
+2006-02-21  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * m4/gst-glib2.m4:
+       Fix debug output when the GLib version prerequisite is not found
+
+2006-02-13  Andy Wingo  <wingo@pobox.com>
+
+       * m4/check.m4: Hack around Debian/Ubuntu's broken installation of
+       the PIC version of check as libcheck_pic.a. Should work with
+       cross-compilation too. Grr.
+
+2006-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-default.m4:
+         switch to auto* sinks for defaults
+
+2006-02-02  Wim Taymans  <wim@fluendo.com>
+
+       * check.mak:
+         add a .valgrind.gen-suppressions target to aid in generating
+         suppressions
+       * gst.supp:
+         add more repressions from my debian glibc as of today
+
+2006-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak:
+         only add srcdir/gst if it exists
+
+2006-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * release.mak:
+         don't complain about disted enums in win32
+
+2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         AC_SUBST CFLAGS and LIBS
+         do a non-command because something is stripping out our AC_SUBST
+
+2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+       * m4/gst-valgrind.m4:
+         properly give a "no" result manually when providing a
+         not-found action to fix configure output
+
+2006-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/pkg.m4:
+         update with a more recent version
+
+2006-01-07  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gettext.patch:
+         make Makefile depend on LINGUAS, so rebuilds work when adding
+         a language
+
+2006-01-03  Michael Smith  <msmith@fluendo.com>
+
+       * check.mak:
+         Clarify error message from valgrind test runs.
+
+2005-12-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-arch.m4:
+         define HOST_CPU
+
+2005-11-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         add a valgrind-forever target for tests
+
+2005-11-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         when a "make test.check" run fails, make it rerun the test with       
+         at least debug level 2
+
+2005-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/Makefile.am:
+       * m4/gst-check.m4:
+         fix check for base plugins
+       * m4/gst-default.m4:
+         add m4 to set default elements
+
+2005-10-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         check for tools correctly
+
+2005-10-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc.mak:
+         only enable breaking on new API when make distcheck passes,
+         not before
+
+2005-10-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         Resurrect Julien's dead body and wipe his mind clean
+
+2005-10-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-check.m4:
+         Kill Julien
+
+2005-10-17  Julien MOUTTE  <julien@moutte.net>
+
+       * m4/gst-check.m4: I know Thomas will kill me but this 
+       ifelse statement seems incorrect as it is always setting
+       required to "yes". With this one it seems to work. Fixes
+       build of gst-plugins-base on my setup where gstreamer-check
+       is definitely not present/required.
+
+2005-10-18  Stefan Kost  <ensonic@users.sf.net>
+
+       * gtk-doc.mak:
+         make build break on new api that has not been added to the
+         sections file
+
+2005-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-glib2.m4:
+       * m4/Makefile.am:
+       * m4/gst-check.m4:
+         add macro for easy checks for GStreamer libs
+
+2005-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-glib2.m4:
+         update, warn in error cases
+
+2005-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-error.m4:
+         add GST_SET_DEFAULT_LEVEL
+
+2005-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/Makefile.am:
+       * m4/gst-gettext.m4:
+         remove the AM_GNU_GETTEXT* calls, they need to be in configure.ac
+       * m4/gst-glib2.m4:
+         clean up and re-use in core soon
+       * m4/gst-plugindir.m4:
+         macro to set up PLUGINDIR and plugindir define/var
+
+2005-10-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/Makefile.am:
+       * m4/gst-gettext.m4:
+         add macro for setting up gettext
+
+2005-10-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-args.m4:
+         add some .m4's for argument checking that can be shared among modules
+
+2005-10-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-libtool.m4:
+         set _LT_LDFLAGS
+       * m4/gst-libxml2.m4:
+         document
+
+2005-10-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-arch.m4:
+         indent a little
+         add AC_REQUIRE
+       * m4/gst-error.m4:
+         clean up
+
+2005-10-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-autogen.sh:
+         update version detection expression to catch stuff like
+         Libtool (libtool15) 1.5.0
+
+2005-10-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst.supp:
+         commit 6 new suppressions related to g_module_open; can these
+         really not be folded into one ?
+
+2005-10-11  Edward Hervey  <edward@fluendo.com>
+
+       * gst.supp: 
+       made the <g_type_init calloc 2> suppression more generic
+       Added pthread memleak suppresions
+       Added nss_parse_* memleak suppresion (used by g_option_context_parse)
+
+2005-10-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         be more strict, more leak resolution
+       * gst.supp:
+         clean up the g_type_init suppressions
+
+2005-10-07  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/Makefile.am:
+       * m4/gst-valgrind.m4:
+         put the valgrind detection in an .m4
+
+2005-09-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         add some more targets, like "help", but also more intensive tests
+
+2005-09-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc.mak:
+         make certain doc warnings fatal so people maintain docs again
+
+2005-09-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * gtk-doc-plugins.mak:
+       * scangobj-merge.py:
+         merge additions from the .signals.new and .args.new file in
+         the original ones, only updating if necessary
+
+2005-09-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-xmlinspect.py:
+       * gstdoc-scangobj:
+       * gtk-doc-plugins.mak:
+         fix properly for new API; make update in plugins dir now works
+
+2005-09-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-xmlinspect.py:
+       * gstdoc-scangobj:
+         some fixes for new API
+       * gtk-doc-plugins.mak:
+         set environment properly
+
+2005-09-17  David Schleef  <ds@schleef.org>
+
+       * gtk-doc-plugins.mak: Use new environment variables.
+
+2005-09-16  Michael Smith <msmith@fluendo.com>
+
+       * gstdoc-scangobj:
+         Make the scanobj code reflect registry/plugin API changes
+
+2005-09-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak:
+         split out scanobj step (which will be run by doc maintainer)
+         from scan step (which will be run on every build)
+         clean up some of the commands for make distcheck
+
+2005-09-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak:
+       * mangle-tmpl.py:
+         first stab at reorganizing the plugins build so we can maintain
+         element docs
+
+2005-09-14  David Schleef  <ds@schleef.org>
+
+       * as-libtool.mak: Remove
+       * m4/as-libtool.m4: The libtool bug that this worked around has
+         been fixed.
+       * m4/as-version.m4: Don't define GST_RELEASE, since it causes
+         config.h to be regenerated needlessly, and we don't use it.
+
+2005-09-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak:
+         error out on inspect failure
+
+2005-09-14  Michael Smith <msmith@fluendo.com>
+
+       * glib-gen.mak:
+         Don't call glib-mkenums with arguments that confuse/break MinGW,
+         fixes 316155.
+
+2005-09-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gtk-doc-plugins.mak:
+       * gtk-doc.mak:
+       * m4/gst-doc.m4:
+         separate out gtk-doc and docbook stuff
+         have two separate --enable configure flags
+
+2005-08-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         add a .gdb target; rebuild registry for each target, otherwise
+         a code rebuild always triggers a reg rebuild, and it's just too
+         annoying
+       * gstdoc-scangobj:
+
+2005-08-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         separate out REGISTRY_ENVIRONMENT; we want to use that from
+         our valgrind runs, but we also want TESTS_ENVIRONMENT to contain
+         everything that the first test, gst-register, needs
+
+2005-08-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         parse output of valgrind and check for definitely lost, and error
+         out; somehow I was led to believe valgrind returns non-zero for
+         leaks, but I can't make it do that, so let's parse
+
+2005-08-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * check.mak:
+         for some weird reason valgrind does not report actual memleaks
+         if GST_PLUGIN_PATH is set to anything but the core gstreamer dir
+         while valgrind is running.  Since the registry is going to go
+         anyway, I don't want to waste any more time on this; I just run
+         valgrind without GST_PLUGIN_PATH set.  Since the registry loading
+         doesn't check if GST_PLUGIN_PATH got changed as a reason to rebuild
+         the registry, that's actually fine.
+
+2005-08-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * mangle-tmpl.py:
+         keep original Long_Description; only insert an include if it's
+         not already the first line in there
+       * plugins.xsl:
+         output more information for plugins, including an origin hyperlink
+
+2005-08-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-xmlinspect.py:
+         a first stab at inspecting plugins and outputting an xml description
+       * gtk-doc-plugins.mak:
+         a gtk-doc using snippet for plugins documentation
+       * plugins.xsl:
+         a stylesheet to convert gst-xmlinspect.py output to docbook output
+         for inclusion in the gtk-doc stuff
+
+2005-07-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * m4/gst-doc.m4:
+         s/pdf/eps/ in test for whether we output EPS images (#309379).
+
+2005-07-18  Andy Wingo  <wingo@pobox.com>
+
+       * m4/as-libtool-tags.m4: Ooh, backported from libtool 1.6. Much
+       better. Thanks, Paolo Bonzini!
+       
+       * m4/Makefile.am (EXTRA_DIST): 
+       * m4/as-libtool-tags.m4: New file, tries to disable some CXX and
+       fortran checks.
+
+2005-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-error.m4:
+         add macro to set ERROR_CFLAGS
+
+2005-06-30  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst-autogen.sh:
+         Remove the old autoregen.sh if it exists before recreating it,
+         to prevent confusing any shell process that might be reading it
+         currently.
+
+2005-06-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gtk-doc.m4:
+         added
+
+2005-06-03  Stefan Kost  <ensonic@users.sf.net>
+
+       * gst-autogen.sh: create autoregen.sh *before* shifting the options
+
+2005-05-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-autogen.sh: only update autoregen.sh on actual runs
+
+2005-03-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/check.m4: m4 from the check unit test suite
+
+2004-12-14  David Schleef  <ds@schleef.org>
+
+       * m4/gst-arch.m4: remove MMX stuff, since it doesn't work and
+       isn't needed anywhere
+
+2004-12-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-autogen.sh:
+         allow failure command to be run so we can clean upfrom autopoint
+
+2004-09-03  Zeeshan Ali Khattak <zeenix@gmail.com>
+       * m4/gst-feature.m4: Trying to correct the GST_CHECK_CONFIGPROG macro
+
+2004-07-21  Benjamin Otte  <otte@gnome.org>
+
+       * m4/.cvsignore: exciting updates for libtool m4 files
+
+2004-07-12  David Schleef  <ds@schleef.org>
+
+       * m4/as-objc.m4:  Add a macro to test for objective C
+
+2004-06-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-feature.m4:
+         not all of them support --plugin-libs, so redirect stderr
+
+2004-06-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-scrub-include.m4:
+         sync with upstream to 0.1.4.  Fixes #132440
+
+2004-06-07  Benjamin Otte  <otte@gnome.org>
+
+       * m4/gst-feature.m4:
+         write a big marker into configure output when checking next plugin
+         to allow easier parsing of why plugins are(n't) built.
+
+2004-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-compiler-flag.m4:
+       * m4/as-compiler.m4:
+       * m4/as-libtool.m4:
+       * m4/as-version.m4:
+         sync with upstream, change sticky options to -ko
+
+2004-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-scrub-include.m4: synced with upstream
+
+2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po.mak:
+          snippet for updating .po files
+
+2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * m4/Makefile.am:
+          integrate these with the dist
+
+2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * release.mak: add a release target
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Stephane Loeuillet
+
+       * m4/ax_create_stdint_h.m4:
+          use head -n instead of head - (#136500)
+
+2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-doc.m4: don't build PS without dvips binary
+
+2004-02-22   Julio M. Merino Vidal <jmmv@menta.net>
+
+       reviewed by: Benjamin Otte  <otte@gnome.org>
+
+       * m4/as-docbook.m4:
+         don't use == operator with test(1) (fixes #135115)
+
+2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+       * common/m4/gst-arch.m4: x86_64 is x86 too (clue from Fedora 2 test)
+
+2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-feature.m4:
+          remove AM_CONDITIONAL for the subsystem since automake 1.6.x
+          requires that call be in configure.ac
+
+2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-libxml2.m4:
+          take required version as argument, and default to 2.4.9 if not
+          specified
+
+2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/gst-feature.m4:
+          rename and fix up GST_CHECK_DISABLE_SUBSYSTEM
+
+2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * common/m4/as-ac-expand.m4:
+       * common/m4/as-auto-alt.m4:
+       * common/m4/as-compiler-flag.m4:
+       * common/m4/as-compiler.m4:
+       * common/m4/as-docbook.m4:
+       * common/m4/as-libtool.m4:
+       * common/m4/as-scrub-include.m4:
+       * common/m4/as-version.m4:
+       * common/m4/glib-gettext.m4:
+       * common/m4/gst-arch.m4:
+       * common/m4/gst-debuginfo.m4:
+       * common/m4/gst-doc.m4:
+       * common/m4/gst-feature.m4:
+       * common/m4/gst-function.m4:
+       * common/m4/gst-glib2.m4:
+       * common/m4/gst-gstreamer.m4:
+       * common/m4/gst-libxml2.m4:
+       * common/m4/gst-makecontext.m4:
+       * common/m4/gst-mcsc.m4:
+       * common/m4/pkg.m4:
+          fix underquoted macros as reported by automake 1.8.x (#133800)
+
+2004-02-11  Johan Dahlin  <johan@gnome.org>
+
+       * gst-autogen.sh: Use A-Z instead of A-z in sed expression to
+       avoid a warning
+
+2004-02-05  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * m4/gst-doc.m4:
+          we use --output-format=xml and --ingnore-files options to
+          gtkdoc-mkdb, which got added between 0.9 and 1.0
+
+2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/as-libtool.m4: remove AM_PROG_LIBTOOL so it can move back
+          to configure.ac to shut up libtoolize
+
+2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+        * glib-gen.mak: added; used to generate enums and marshal code
+
+2004-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+        * gettext.patch: added; used by autogen.sh to make sure
+          GETTEXT_PACKAGE is understood from po/Makefile.in.in -> po/Makefile.in
+
diff --git a/common/Makefile.am b/common/Makefile.am
new file mode 100644 (file)
index 0000000..25966fc
--- /dev/null
@@ -0,0 +1,22 @@
+SUBDIRS = m4
+
+EXTRA_DIST = \
+       ChangeLog \
+       gettext.patch \
+       glib-gen.mak gtk-doc.mak upload-doc.mak \
+       cruft.mak release.mak win32.mak po.mak \
+       parallel-subdirs.mak \
+       gst-autogen.sh \
+       check-exports \
+       c-to-xml.py mangle-tmpl.py scangobj-merge.py \
+       gtk-doc-plugins.mak \
+       plugins.xsl gstdoc-scangobj \
+       gst.supp check.mak \
+       coverage/lcov.mak \
+       coverage/coverage-report.pl \
+       coverage/coverage-report.xsl \
+       coverage/coverage-report-entry.pl \
+       download-translations \
+       extract-release-date-from-doap-file \
+       gst-indent \
+       orc.mak
diff --git a/common/Makefile.in b/common/Makefile.in
new file mode 100644 (file)
index 0000000..2aefe46
--- /dev/null
@@ -0,0 +1,744 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = common
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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 = m4
+EXTRA_DIST = \
+       ChangeLog \
+       gettext.patch \
+       glib-gen.mak gtk-doc.mak upload-doc.mak \
+       cruft.mak release.mak win32.mak po.mak \
+       parallel-subdirs.mak \
+       gst-autogen.sh \
+       check-exports \
+       c-to-xml.py mangle-tmpl.py scangobj-merge.py \
+       gtk-doc-plugins.mak \
+       plugins.xsl gstdoc-scangobj \
+       gst.supp check.mak \
+       coverage/lcov.mak \
+       coverage/coverage-report.pl \
+       coverage/coverage-report.xsl \
+       coverage/coverage-report-entry.pl \
+       download-translations \
+       extract-release-date-from-doap-file \
+       gst-indent \
+       orc.mak
+
+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 common/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu common/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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/common/c-to-xml.py b/common/c-to-xml.py
new file mode 100644 (file)
index 0000000..397c112
--- /dev/null
@@ -0,0 +1,34 @@
+# -*- Mode: Python -*-
+# vi:si:et:sw=4:sts=4:ts=4
+
+"""
+Convert a C program to valid XML to be included in docbook
+"""
+
+import sys
+import os
+from xml.sax import saxutils
+
+def main():
+    if len(sys.argv) == 1:
+        sys.stderr.write("Please specify a source file to convert")
+        sys.exit(1)
+    source = sys.argv[1]
+
+    if not os.path.exists(source):
+        sys.stderr.write("%s does not exist.\n" % source)
+        sys.exit(1)
+
+    content = open(source, "r").read()
+
+    # print header
+    print '<?xml version="1.0"?>'
+    print '<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">'
+    print
+    print '<programlisting>'
+
+    # print content
+    print saxutils.escape(content).encode('UTF-8')
+    print '</programlisting>'
+
+main()
diff --git a/common/check-exports b/common/check-exports
new file mode 100755 (executable)
index 0000000..dd7bafb
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+# check-exports
+#
+# quick'n'dirty script that retrieves the list of exported symbols of a given
+# library using 'nm', and compares that against the list of symbols-to-export
+# of our win32/common/libfoo.def files.
+
+if [ $# -ne 2 ]; then
+       echo "Usage: $0 library.def library.so"
+       exit 1
+fi
+
+def_path="$1"
+def_name="$(basename $def_path)"
+lib_path="$2"
+
+lib_result="`mktemp /tmp/defname.XXXXXX`"
+
+LC_ALL=C
+export LC_ALL
+
+# On Solaris, add -p to get the correct output format
+NMARGS=
+if nm -V 2>&1 |grep Solaris > /dev/null; then
+  NMARGS=-p
+fi
+
+# FIXME 0.11: in 0.11, we should change the export filter to only export
+# _gst_foo, but not __gst_foo (we can't change this now, since we added
+# __gst_debug_min and __gst_debug_enabled at some point and need to keep
+# ABI compatibility).  So below we special-case some symbols that shouldn't
+# really be exported, either because we're too lazy to rename them to something
+# that's not exported (like the _gst_parse_* stuff) or because we had them in
+# public headers at some point although they shouldn't be and so we need to
+# keep them exported now (like _gst_debug_init,
+# __gst_element_factory_add_interface or
+# __gst_element_factory_add_static_pad_template).  We suppress them here to
+# make sure they're at least not exported in the windows msvc build (they
+# were never in the .def file, so they never got exported).
+# _end is special cased because for some reason it is reported as an exported
+# BSS symbol, unlike on linux where it's a local absolute symbol.
+nm $NMARGS $lib_path | awk \
+       '{
+               if ($3 !~ /^_gst_[a-z]*_init/ && \
+                   $3 !~ /^__gst_element_details_/ && \
+                   $3 !~ /^__gst_element_factory_add_/ && \
+                   $3 !~ /^gst_interfaces_marshal/ && \
+                   $3 ~ /^[_]*(gst_|Gst|GST_).*/)
+               {
+                       if ($2 ~ /^[BSDG]$/)
+                               print "\t" $3 " DATA"
+                       else if ($2 == "T")
+                               print "\t" $3
+               }
+        }' | sort | awk '{ if (NR == 1) print "EXPORTS"; print $0; }' \
+       > $lib_result
+
+diffoutput=`diff -u $def_path $lib_result`
+diffresult=$?
+
+rm $lib_result
+
+if test "$diffresult" -eq 0; then
+  exit 0;
+else
+  echo -n "$diffoutput" >&2
+  echo >&2
+  exit 1;
+fi
+
diff --git a/common/check.mak b/common/check.mak
new file mode 100644 (file)
index 0000000..30487f1
--- /dev/null
@@ -0,0 +1,181 @@
+# keep target around, since it's referenced in the modules' Makefiles
+clean-local-check:
+       @echo
+
+if HAVE_VALGRIND
+# hangs spectacularly on some machines, so let's not do this by default yet
+check-valgrind:
+       $(MAKE) valgrind
+else
+check-valgrind:
+       @true
+endif
+
+LOOPS = 10
+
+# run any given test by running make test.check
+# if the test fails, run it again at at least debug level 2
+%.check: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $* ||                                                   \
+       $(TESTS_ENVIRONMENT)                                    \
+       GST_DEBUG=$$GST_DEBUG,*:2                               \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $*
+
+# run any given test in a loop
+%.torture: %
+       @for i in `seq 1 $(LOOPS)`; do                          \
+       $(TESTS_ENVIRONMENT)                                    \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $*; done
+
+# run any given test in an infinite loop
+%.forever: %
+       @while true; do                                         \
+       $(TESTS_ENVIRONMENT)                                    \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $* || break; done
+
+# valgrind any given test by running make test.valgrind
+%.valgrind: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=360                                  \
+       G_SLICE=always-malloc                                   \
+       $(LIBTOOL) --mode=execute                               \
+       $(VALGRIND_PATH) -q                                     \
+       $(foreach s,$(SUPPRESSIONS),--suppressions=$(s))        \
+       --tool=memcheck --leak-check=full --trace-children=yes  \
+       --leak-resolution=high --num-callers=20                 \
+       ./$* 2>&1 | tee valgrind.log
+       @if grep "==" valgrind.log > /dev/null 2>&1; then       \
+           rm valgrind.log;                                    \
+           exit 1;                                             \
+       fi
+       @rm valgrind.log
+       
+# valgrind any given test and generate suppressions for it
+%.valgrind.gen-suppressions: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=360                                  \
+       G_SLICE=always-malloc                                   \
+       $(LIBTOOL) --mode=execute                               \
+       $(VALGRIND_PATH) -q                                     \
+       $(foreach s,$(SUPPRESSIONS),--suppressions=$(s))        \
+       --tool=memcheck --leak-check=full --trace-children=yes  \
+       --leak-resolution=high --num-callers=20                 \
+       --gen-suppressions=all                                  \
+       ./$* 2>&1 | tee suppressions.log
+       
+# valgrind any given test until failure by running make test.valgrind-forever
+%.valgrind-forever: %
+       @while $(MAKE) $*.valgrind; do                          \
+         true; done
+
+# gdb any given test by running make test.gdb
+%.gdb: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_FORK=no                                              \
+       $(LIBTOOL) --mode=execute                               \
+       gdb $*
+
+# torture tests
+torture: $(TESTS)
+       -rm test-registry.xml
+       @echo "Torturing tests ..."
+       @for i in `seq 1 $(LOOPS)`; do                          \
+               $(MAKE) check ||                                \
+               (echo "Failure after $$i runs"; exit 1) ||      \
+               exit 1;                                         \
+       done
+       @banner="All $(LOOPS) loops passed";                    \
+       dashes=`echo "$$banner" | sed s/./=/g`;                 \
+       echo $$dashes; echo $$banner; echo $$dashes
+
+# forever tests
+forever: $(TESTS)
+       -rm test-registry.xml
+       @echo "Forever tests ..."
+       @while true; do                                         \
+               $(MAKE) check ||                                \
+               (echo "Failure"; exit 1) ||                     \
+               exit 1;                                         \
+       done
+
+# valgrind all tests
+valgrind: $(TESTS)
+       @echo "Valgrinding tests ..."
+       @failed=0;                                                      \
+       for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do   \
+               $(MAKE) $$t.valgrind;                                   \
+               if test "$$?" -ne 0; then                               \
+                       echo "Valgrind error for test $$t";             \
+                       failed=`expr $$failed + 1`;                     \
+                       whicht="$$whicht $$t";                          \
+               fi;                                                     \
+       done;                                                           \
+       if test "$$failed" -ne 0; then                                  \
+               echo "$$failed tests had leaks or errors under valgrind:";      \
+               echo "$$whicht";                                        \
+               false;                                                  \
+       fi
+
+# valgrind all tests and generate suppressions
+valgrind.gen-suppressions: $(TESTS)
+       @echo "Valgrinding tests ..."
+       @failed=0;                                                      \
+       for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do   \
+               $(MAKE) $$t.valgrind.gen-suppressions;                  \
+               if test "$$?" -ne 0; then                               \
+                       echo "Valgrind error for test $$t";             \
+                       failed=`expr $$failed + 1`;                     \
+                       whicht="$$whicht $$t";                          \
+               fi;                                                     \
+       done;                                                           \
+       if test "$$failed" -ne 0; then                                  \
+               echo "$$failed tests had leaks or errors under valgrind:";      \
+               echo "$$whicht";                                        \
+               false;                                                  \
+       fi
+
+# inspect every plugin feature
+GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_MAJORMINOR)
+inspect:
+       @echo "Inspecting features ..."
+       @for e in `$(TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2     \
+         | cut -d: -f2`;                                               \
+         do echo Inspecting $$e;                                       \
+            $(GST_INSPECT) $$e > /dev/null 2>&1; done
+
+help:
+       @echo
+       @echo "make check                         -- run all checks"
+       @echo "make torture                       -- run all checks $(LOOPS) times"
+       @echo "make (dir)/(test).check            -- run the given check once"
+       @echo "make (dir)/(test).forever          -- run the given check forever"
+       @echo "make (dir)/(test).torture          -- run the given check $(LOOPS) times"
+       @echo
+       @echo "make (dir)/(test).gdb              -- start up gdb for the given test"
+       @echo
+       @echo "make valgrind                      -- valgrind all tests"
+       @echo "make valgrind.gen-suppressions     -- generate suppressions for all tests"
+       @echo "                                      and save to suppressions.log"
+       @echo "make (dir)/(test).valgrind         -- valgrind the given test"
+       @echo "make (dir)/(test).valgrind-forever -- valgrind the given test forever"
+       @echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions"
+       @echo "                                               and save to suppressions.log"
+       @echo "make inspect                       -- inspect all plugin features"
+       @echo
+       @echo
+       @echo "Additionally, you can use the GST_CHECKS environment variable to"
+       @echo "specify which test(s) should be run. This is useful if you are"
+       @echo "debugging a failure in one particular test, or want to reproduce"
+       @echo "a race condition in a single test."
+       @echo
+       @echo "Examples:"
+       @echo
+       @echo "  GST_CHECKS=test_this,test_that  make element/foobar.check"
+       @echo "  GST_CHECKS=test_many_threads    make element/foobar.forever"
+       @echo
+
diff --git a/common/coverage/coverage-report-entry.pl b/common/coverage/coverage-report-entry.pl
new file mode 100644 (file)
index 0000000..51c506c
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 2006 Daniel Berrange
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+print <<EOF;
+<html>
+<head>
+<title>Coverage report for $ARGV[0]</title>
+<style type="text/css">
+          span.perfect {
+            background: rgb(0,255,0);
+          }
+          span.terrible {
+            background: rgb(255,0,0);
+          }
+</style>
+</head>
+<body>
+<h1>Coverage report for $ARGV[0]</h1>
+
+<pre>
+EOF
+
+
+while (<>) {
+    s/&/&amp;/g;
+    s/</&lt;/g;
+    s/>/&gt;/g;
+
+    if (/^\s*function (\S+) called (\d+) returned \d+% blocks executed \d+%/) {
+       my $class = $2 > 0 ? "perfect" : "terrible";
+       $_ = "<span class=\"$class\" id=\"" . $1 . "\">$_</span>";
+    } elsif (/^\s*branch\s+\d+\s+taken\s+(\d+)%\s+.*$/) {
+       my $class = $1 > 0 ? "perfect" : "terrible";
+       $_ = "<span class=\"$class\">$_</span>";
+    } elsif (/^\s*branch\s+\d+\s+never executed.*$/) {
+       my $class = "terrible";
+       $_ = "<span class=\"$class\">$_</span>";
+    } elsif (/^\s*call\s+\d+\s+never executed.*$/) {
+       my $class = "terrible";
+       $_ = "<span class=\"$class\">$_</span>";
+    } elsif (/^\s*call\s+\d+\s+returned\s+(\d+)%.*$/) {
+       my $class = $1 > 0 ? "perfect" : "terrible";
+       $_ = "<span class=\"$class\">$_</span>";
+    }
+
+    print;
+}
+
+print <<EOF;
+</pre>
+</body>
+</html>
+EOF
diff --git a/common/coverage/coverage-report.pl b/common/coverage/coverage-report.pl
new file mode 100644 (file)
index 0000000..ed30f8d
--- /dev/null
@@ -0,0 +1,125 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 2006 Daniel Berrange
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+use warnings;
+use strict;
+
+my %coverage = ( functions => {}, files => {} );
+
+my %filemap;
+
+my $type;
+my $name;
+
+my @functions;
+
+while (<>) {
+    if (/^Function '(.*)'\s*$/) {
+       $type = "function";
+       $name = $1;
+       $coverage{$type}->{$name} = {};
+       push @functions, $name;
+    } elsif (/^File '(.*?)'\s*$/) {
+       $type = "file";
+       $name = $1;
+       $coverage{$type}->{$name} = {};
+
+       foreach my $func (@functions) {
+           $coverage{"function"}->{$func}->{file} = $name;
+       }
+       @functions = ();
+    } elsif (/^Lines executed:(.*)%\s*of\s*(\d+)\s*$/) {
+       $coverage{$type}->{$name}->{lines} = $2;
+       $coverage{$type}->{$name}->{linesCoverage} = $1;
+    } elsif (/^Branches executed:(.*)%\s*of\s*(\d+)\s*$/) {
+       $coverage{$type}->{$name}->{branches} = $2;
+       $coverage{$type}->{$name}->{branchesCoverage} = $1;
+    } elsif (/^Taken at least once:(.*)%\s*of\s*(\d+)\s*$/) {
+       $coverage{$type}->{$name}->{conds} = $2;
+       $coverage{$type}->{$name}->{condsCoverage} = $1;
+    } elsif (/^Calls executed:(.*)%\s*of\s*(\d+)\s*$/) {
+       $coverage{$type}->{$name}->{calls} = $2;
+       $coverage{$type}->{$name}->{callsCoverage} = $1;
+    } elsif (/^No branches$/) {
+       $coverage{$type}->{$name}->{branches} = 0;
+       $coverage{$type}->{$name}->{branchesCoverage} = "100.00";
+       $coverage{$type}->{$name}->{conds} = 0;
+       $coverage{$type}->{$name}->{condsCoverage} = "100.00";
+    } elsif (/^No calls$/) {
+       $coverage{$type}->{$name}->{calls} = 0;
+       $coverage{$type}->{$name}->{callsCoverage} = "100.00";
+    } elsif (/^\s*(.*):creating '(.*)'\s*$/) {
+       $filemap{$1} = $2;
+    } elsif (/^\s*$/) {
+       # nada
+    } else {
+       warn "Shit [$_]\n";
+    }
+}
+
+my %summary;
+foreach my $type ("function", "file") {
+    $summary{$type} = {};
+    foreach my $m ("lines", "branches", "conds", "calls") {
+       my $totalGot = 0;
+       my $totalMiss = 0;
+       my $count = 0;
+       foreach my $func (keys %{$coverage{function}}) {
+           $count++;
+           my $got = $coverage{function}->{$func}->{$m};
+           $totalGot += $got;
+           my $miss = $got * $coverage{function}->{$func}->{$m ."Coverage"} / 100;
+           $totalMiss += $miss;
+       }
+       $summary{$type}->{$m} = sprintf("%d", $totalGot);
+       $summary{$type}->{$m . "Coverage"} = sprintf("%.2f", $totalMiss / $totalGot * 100);
+    }
+}
+
+
+
+print "<coverage>\n";
+
+foreach my $type ("function", "file") {
+    printf "<%ss>\n", $type;
+    foreach my $name (sort { $a cmp $b } keys %{$coverage{$type}}) {
+       my $rec = $coverage{$type}->{$name};
+       printf "  <entry name=\"%s\" details=\"%s\">\n", $name, ($type eq "file" ? $filemap{$name} : $filemap{$rec->{file}});
+       printf "    <lines count=\"%s\" coverage=\"%s\"/>\n", $rec->{lines}, $rec->{linesCoverage};
+       if (exists $rec->{branches}) {
+           printf "    <branches count=\"%s\" coverage=\"%s\"/>\n", $rec->{branches}, $rec->{branchesCoverage};
+       }
+       if (exists $rec->{conds}) {
+           printf "    <conditions count=\"%s\" coverage=\"%s\"/>\n", $rec->{conds}, $rec->{condsCoverage};
+       }
+       if (exists $rec->{calls}) {
+           printf "    <calls count=\"%s\" coverage=\"%s\"/>\n", $rec->{calls}, $rec->{callsCoverage};
+       }
+       print  "  </entry>\n";
+    }
+
+    printf "  <summary>\n";
+    printf "    <lines count=\"%s\" coverage=\"%s\"/>\n", $summary{$type}->{lines}, $summary{$type}->{linesCoverage};
+    printf "    <branches count=\"%s\" coverage=\"%s\"/>\n", $summary{$type}->{branches}, $summary{$type}->{branchesCoverage};
+    printf "    <conditions count=\"%s\" coverage=\"%s\"/>\n", $summary{$type}->{conds}, $summary{$type}->{condsCoverage};
+    printf "    <calls count=\"%s\" coverage=\"%s\"/>\n", $summary{$type}->{calls}, $summary{$type}->{callsCoverage};
+    printf  "  </summary>\n";
+    printf "</%ss>\n", $type;
+}
+
+print "</coverage>\n";
diff --git a/common/coverage/coverage-report.xsl b/common/coverage/coverage-report.xsl
new file mode 100644 (file)
index 0000000..b19ebb6
--- /dev/null
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!--\r
+#\r
+# Copyright (C) 2006 Daniel Berrange\r
+#\r
+# This program is free software; you can redistribute it and/or modify\r
+# it under the terms of the GNU General Public License as published by\r
+# the Free Software Foundation; either version 2 of the License, or\r
+# (at your option) any later version.\r
+#\r
+# This program is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+# GNU General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU General Public License\r
+# along with this program; if not, write to the Free Software\r
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+-->\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+                version="1.0">\r
+\r
+  <xsl:output method="html"/>\r
+\r
+  <xsl:template match="coverage">\r
+    <html>\r
+      <head>\r
+        <title>Coverage report</title>\r
+        <style type="text/css">\r
+          tbody tr.odd td.label {\r
+            border-top: 1px solid rgb(128,128,128);\r
+            border-bottom: 1px solid rgb(128,128,128);\r
+          }\r
+          tbody tr.odd td.label {\r
+            background: rgb(200,200,200);\r
+          }\r
+          \r
+          thead, tfoot {\r
+            background: rgb(60,60,60);\r
+            color: white;\r
+            font-weight: bold;\r
+          }\r
+\r
+          tr td.perfect {\r
+            background: rgb(0,255,0);\r
+            color: black;\r
+          }\r
+          tr td.excellant {\r
+            background: rgb(140,255,140);\r
+            color: black;\r
+          }\r
+          tr td.good {\r
+            background: rgb(160,255,0);\r
+            color: black;\r
+          }\r
+          tr td.poor {\r
+            background: rgb(255,160,0);\r
+            color: black;\r
+          }\r
+          tr td.bad {\r
+            background: rgb(255,140,140);\r
+            color: black;\r
+          }\r
+          tr td.terrible {\r
+            background: rgb(255,0,0);\r
+            color: black;\r
+          }\r
+        </style>\r
+      </head>\r
+      <body>\r
+        <h1>Coverage report</h1>\r
+        <xsl:apply-templates/>\r
+      </body>\r
+    </html>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="functions">\r
+    <h2>Function coverage</h2>\r
+    <xsl:call-template name="content">\r
+      <xsl:with-param name="type" select="'function'"/>\r
+    </xsl:call-template>\r
+  </xsl:template>\r
+  \r
+\r
+  <xsl:template match="files">\r
+    <h2>File coverage</h2>\r
+    <xsl:call-template name="content">\r
+      <xsl:with-param name="type" select="'file'"/>\r
+    </xsl:call-template>\r
+  </xsl:template>\r
+\r
+  <xsl:template name="content">\r
+    <xsl:param name="type"/>\r
+    <table>\r
+      <thead>\r
+        <tr>\r
+          <th>Name</th>\r
+          <th>Lines</th>\r
+          <th>Branches</th>\r
+          <th>Conditions</th>\r
+          <th>Calls</th>\r
+        </tr>\r
+      </thead>\r
+      <tbody>\r
+        <xsl:for-each select="entry">\r
+          <xsl:call-template name="entry">\r
+            <xsl:with-param name="type" select="$type"/>\r
+            <xsl:with-param name="class">\r
+              <xsl:choose>\r
+                <xsl:when test="position() mod 2">\r
+                  <xsl:text>odd</xsl:text>\r
+                </xsl:when>\r
+                <xsl:otherwise>\r
+                  <xsl:text>even</xsl:text>\r
+                </xsl:otherwise>\r
+              </xsl:choose>\r
+            </xsl:with-param>\r
+          </xsl:call-template>\r
+        </xsl:for-each>\r
+      </tbody>\r
+      <tfoot>\r
+        <xsl:for-each select="summary">\r
+          <xsl:call-template name="entry">\r
+            <xsl:with-param name="type" select="'summary'"/>\r
+            <xsl:with-param name="class">\r
+              <xsl:choose>\r
+                <xsl:when test="position() mod 2">\r
+                  <xsl:text>odd</xsl:text>\r
+                </xsl:when>\r
+                <xsl:otherwise>\r
+                  <xsl:text>even</xsl:text>\r
+                </xsl:otherwise>\r
+              </xsl:choose>\r
+            </xsl:with-param>\r
+          </xsl:call-template>\r
+        </xsl:for-each>\r
+      </tfoot>\r
+    </table>\r
+  </xsl:template>\r
+  \r
+  <xsl:template name="entry">\r
+    <xsl:param name="type"/>\r
+    <xsl:param name="class"/>\r
+    <tr class="{$class}">\r
+      <xsl:choose>\r
+        <xsl:when test="$type = 'function'">\r
+          <td class="label"><a href="{@details}.html#{@name}"><xsl:value-of select="@name"/></a></td>\r
+        </xsl:when>\r
+        <xsl:when test="$type = 'file'">\r
+          <td class="label"><a href="{@details}.html"><xsl:value-of select="@name"/></a></td>\r
+        </xsl:when>\r
+        <xsl:otherwise>\r
+          <td class="label">Summary</td>\r
+        </xsl:otherwise>\r
+      </xsl:choose>\r
+\r
+      <xsl:if test="count(lines)">\r
+        <xsl:apply-templates select="lines"/>\r
+      </xsl:if>\r
+      <xsl:if test="not(count(lines))">\r
+        <xsl:call-template name="missing"/>\r
+      </xsl:if>\r
+\r
+      <xsl:if test="count(branches)">\r
+        <xsl:apply-templates select="branches"/>\r
+      </xsl:if>\r
+      <xsl:if test="not(count(branches))">\r
+        <xsl:call-template name="missing"/>\r
+      </xsl:if>\r
+\r
+      <xsl:if test="count(conditions)">\r
+        <xsl:apply-templates select="conditions"/>\r
+      </xsl:if>\r
+      <xsl:if test="not(count(conditions))">\r
+        <xsl:call-template name="missing"/>\r
+      </xsl:if>\r
+\r
+      <xsl:if test="count(calls)">\r
+        <xsl:apply-templates select="calls"/>\r
+      </xsl:if>\r
+      <xsl:if test="not(count(calls))">\r
+        <xsl:call-template name="missing"/>\r
+      </xsl:if>\r
+\r
+    </tr>\r
+  </xsl:template>\r
+  \r
+  <xsl:template match="lines">\r
+    <xsl:call-template name="row"/>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="branches">\r
+    <xsl:call-template name="row"/>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="conditions">\r
+    <xsl:call-template name="row"/>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="calls">\r
+    <xsl:call-template name="row"/>\r
+  </xsl:template>\r
+\r
+  <xsl:template name="missing">\r
+    <td></td>\r
+  </xsl:template>\r
+\r
+  <xsl:template name="row">\r
+    <xsl:variable name="quality">\r
+      <xsl:choose>\r
+        <xsl:when test="@coverage = 100">\r
+          <xsl:text>perfect</xsl:text>\r
+        </xsl:when>\r
+        <xsl:when test="@coverage >= 80.0">\r
+          <xsl:text>excellant</xsl:text>\r
+        </xsl:when>\r
+        <xsl:when test="@coverage >= 60.0">\r
+          <xsl:text>good</xsl:text>\r
+        </xsl:when>\r
+        <xsl:when test="@coverage >= 40.0">\r
+          <xsl:text>poor</xsl:text>\r
+        </xsl:when>\r
+        <xsl:when test="@coverage >= 20.0">\r
+          <xsl:text>bad</xsl:text>\r
+        </xsl:when>\r
+        <xsl:otherwise>\r
+          <xsl:text>terrible</xsl:text>\r
+        </xsl:otherwise>\r
+      </xsl:choose>\r
+    </xsl:variable>\r
+    \r
+    <td class="{$quality}"><xsl:value-of select="@coverage"/>% of <xsl:value-of select="@count"/></td>\r
+  </xsl:template>\r
+\r
+</xsl:stylesheet>\r
diff --git a/common/coverage/lcov.mak b/common/coverage/lcov.mak
new file mode 100644 (file)
index 0000000..fc1f6b2
--- /dev/null
@@ -0,0 +1,43 @@
+## .PHONY so it always rebuilds it
+.PHONY: lcov-reset lcov lcov-run lcov-report lcov-upload
+
+# run lcov from scratch, always
+lcov-reset:
+       $(MAKE) lcov-run
+       $(MAKE) lcov-report
+
+# run lcov from scratch if the dir is not there
+lcov:
+       $(MAKE) lcov-reset
+
+if GST_GCOV_ENABLED
+# reset run coverage tests
+lcov-run:
+       @-rm -rf lcov
+       lcov --directory . --zerocounters
+       -if test -d tests/check; then $(MAKE) -C tests/check inspect; fi
+       -$(MAKE) check
+
+# generate report based on current coverage data
+lcov-report:
+       mkdir lcov
+       lcov --compat-libtool --directory . --capture --output-file lcov/lcov.info
+       lcov --list-full-path -l lcov/lcov.info | grep -v "`cd $(top_srcdir) && pwd`" | cut -d\| -f1 > lcov/remove
+       lcov --list-full-path -l lcov/lcov.info | grep "tests/check/" | cut -d\| -f1 >> lcov/remove
+       lcov --list-full-path -l lcov/lcov.info | grep "docs/plugins/" | cut -d\| -f1 >> lcov/remove
+       lcov -r lcov/lcov.info `cat lcov/remove` > lcov/lcov.cleaned.info
+       rm lcov/remove
+       mv lcov/lcov.cleaned.info lcov/lcov.info
+       genhtml -t "$(PACKAGE_STRING)" -o lcov --num-spaces 2 lcov/lcov.info
+
+lcov-upload: lcov
+       rsync -rvz -e ssh --delete lcov/* gstreamer.freedesktop.org:/srv/gstreamer.freedesktop.org/www/data/coverage/lcov/$(PACKAGE)
+
+else
+lcov-run:
+       echo "Need to reconfigure with --enable-gcov"
+
+lcov-report:
+       echo "Need to reconfigure with --enable-gcov"
+endif
+
diff --git a/common/cruft.mak b/common/cruft.mak
new file mode 100644 (file)
index 0000000..53eec24
--- /dev/null
@@ -0,0 +1,56 @@
+# checks for left-over files in the (usually uninstalled) tree, ie. for
+# stuff that best be deleted to avoid problems like having old plugin binaries
+# lying around.
+#
+# set CRUFT_FILES and/or CRUFT_DIRS in your Makefile.am when you include this
+
+check-cruft:
+       @cruft_files=""; cruft_dirs=""; \
+       for f in $(CRUFT_FILES); do \
+         if test -e $$f; then \
+           cruft_files="$$cruft_files $$f"; \
+         fi \
+       done; \
+       for d in $(CRUFT_DIRS); do \
+         if test -e $$d; then \
+           cruft_dirs="$$cruft_dirs $$d"; \
+         fi \
+       done; \
+       if test "x$$cruft_files$$cruft_dirs" != x; then \
+         echo; \
+         echo "**** CRUFT ALERT *****"; \
+         echo; \
+         echo "The following files and directories may not be needed any "; \
+         echo "longer (usually because a plugin has been merged into     "; \
+         echo "another plugin, moved to a different module, or been      "; \
+         echo "renamed), and you probably want to clean them up if you   "; \
+         echo "don't have local changes:                                 "; \
+         echo; \
+         for f in $$cruft_files; do echo "file $$f"; done; \
+         echo; \
+         for d in $$cruft_dirs; do echo "directory $$d"; done; \
+         echo; \
+         echo "'make clean-cruft' will remove these for you."; \
+         echo; \
+       fi
+
+clean-cruft-dirs:
+       @for d in $(CRUFT_DIRS); do \
+         if test -e $$d; then \
+           rm -r "$$d" && echo "Removed directory $$d"; \
+         fi \
+       done
+
+clean-cruft-files:
+       @for f in $(CRUFT_FILES); do \
+         if test -e $$f; then \
+           rm "$$f" && echo "Removed file $$f"; \
+         fi \
+       done
+
+clean-cruft: clean-cruft-dirs clean-cruft-files
+
+# also might want to add this to your Makefile.am:
+#
+# all-local: check-cruft
+
diff --git a/common/download-translations b/common/download-translations
new file mode 100755 (executable)
index 0000000..aef1d31
--- /dev/null
@@ -0,0 +1,152 @@
+#!/bin/sh
+# Shell script to download the latest translations for a given GStreamer
+# package from translationproject.org
+
+
+# DOMAINS based on http://translationproject.org/extra/matrix.html
+# We need to check all domains, not only po/LINGUAS, since there might be
+# new translations
+DOMAINS=\
+"af am ar az be bg pt_BR bs ca zh_CN cs cy da de el eo es et eu fa fi fr "\
+"ga en_GB gl gu he hi zh_HK hr hu id is it ja ko ku ky lg lt lv mk mn ms "\
+"mt nb ne nl nn or pa pl pt rm ro ru rw sk sl sq sr sv ta tq th tk "\
+"tr zh_TW uk ven vi wa xh zu"
+
+# for testing/debugging:
+#DOMAINS="es fr hu sv pl xx"
+
+# check for 'diff' program
+diff --version 2>/dev/null >/dev/null
+if [ ! $? ]; then
+  echo "==== You must have the 'diff' program installed for this script ===="
+  exit 1
+fi
+
+# check for 'wget' program
+wget --version 2>/dev/null >/dev/null
+if [ ! $? ]; then
+  echo "==== You must have the 'wget' program installed for this script ===="
+  exit 1
+fi
+
+# make sure we're in the top-level directory
+if [ ! -d ./po ]; then
+  echo "==== No ./po directory in the current working directory ===="
+  exit 1
+fi
+
+# make sure a package argument was passed to us
+if [ -z "$1" ]; then
+  echo "Usage: $0 PACKAGE, e.g. $0 gst-plugins-good"
+  exit 1
+fi
+
+if test "$1" != "gstreamer" -a \
+        "$1" != "gst-plugins-base" -a \
+        "$1" != "gst-plugins-good" -a \
+        "$1" != "gst-plugins-ugly" -a \
+        "$1" != "gst-plugins-bad"; then
+  echo "Unexpected package '$1' ?!"
+  exit 1
+fi
+
+PACKAGE="$1"
+
+DOMAINS_TO_ADD=""
+DOMAINS_UPDATED=""
+DOMAINS_NOT_IN_LINGUAS=""
+
+echo "Downloading latest translation files for package $PACKAGE ..."
+echo
+
+for d in $DOMAINS
+do
+  PACKAGE_PO_URL_BASE="http://translationproject.org/latest/$PACKAGE"
+  PO_URL="$PACKAGE_PO_URL_BASE/$d.po"
+  PO_FILENAME="$PACKAGE.$d.po"
+  if wget -q -nc -O $PO_FILENAME $PO_URL; then
+    # we want all .po files in UTF-8 format really, so convert if needed..
+    CHARSET=`grep Content-Type $PO_FILENAME | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
+    if test "x$CHARSET" != "xUTF-8" -a "x$CHARSET" != "xutf-8"; then
+      # note: things like the bugs address will be added back by make update-po
+      if msguniq $PO_FILENAME --no-location \
+                              --output-file=$PO_FILENAME.utf8 \
+                              --to-code=UTF-8; then
+        mv $PO_FILENAME.utf8 $PO_FILENAME
+      else
+        echo "**** $d: conversion from $CHARSET to UTF-8 failed ****"
+      fi
+    fi
+    if [ -f "po/$d.po" ]; then
+      # ./po/foo.po exists, so let's check if ours matches the latest from the
+      # translation project website
+      REVDATE_NEW=`grep PO-Revision-Date $PO_FILENAME`;
+      REVDATE_OLD=`grep PO-Revision-Date po/$d.po`;
+      CHARSET_OLD=`grep Content-Type po/$d.po | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
+      if test "x$REVDATE_NEW" = "x$REVDATE_OLD" -a "x$CHARSET_OLD" = "xUTF-8"; then
+        # note: source code line markers will be removed later by make upload-po
+        echo "$d.po: up-to-date"
+        rm -f $PO_FILENAME
+      else
+        mv $PO_FILENAME "po/$d.po"
+        if test "x$CHARSET_OLD" != "xUTF-8" -a "x$CHARSET_OLD" != "xutf-8"; then
+          echo "$d.po: update (and charset converted from $CHARSET_OLD to UTF-8)"
+        else
+          echo "$d.po: updated"
+        fi
+        DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
+      fi
+      # make sure domain is listed in LINGUAS
+      if ! grep $d "po/LINGUAS" >/dev/null 2>/dev/null; then
+        DOMAINS_NOT_IN_LINGUAS="$DOMAINS_NOT_IN_LINGUAS $d"
+      fi
+    else
+      # ./po/foo.po doesn't exist, but foo.po exists on the translation project
+      # website, so it's probably a new translation
+      echo "$d.po: new language"
+      mv $PO_FILENAME "po/$d.po"
+      DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
+      DOMAINS_TO_ADD="$DOMAINS_TO_ADD $d"
+    fi
+  else
+    rm -f $PO_FILENAME
+    echo "$d.po: failure (does probably not exist)"
+  fi
+done
+
+if [ -n "$DOMAINS_UPDATED" ]; then
+  echo "===================================================================="
+  echo
+  echo "Language domains updated    :$DOMAINS_UPDATED"
+  echo "Language domains to git add :$DOMAINS_TO_ADD"
+  echo
+  echo "Source: http://translationproject.org/latest/$PACKAGE/"
+  echo
+  if [ -n "$DOMAINS_TO_ADD" ]; then
+    CMD_STRING="git add"
+    for d in $DOMAINS_TO_ADD; do
+      CMD_STRING="$CMD_STRING po/$d.po"
+    done
+    echo "Please run"
+    echo
+    echo "  $CMD_STRING"
+    echo
+    echo "now and add the following domains to the po/LINGUAS file:"
+    echo
+    echo "  $DOMAINS_TO_ADD"
+    echo
+    echo
+  fi
+  echo "===================================================================="
+fi
+
+if [ -n "$DOMAINS_NOT_IN_LINGUAS" ]; then
+  echo
+  echo "Existing domains missing from the po/LINGUAS file:"
+  echo
+  echo "  $DOMAINS_NOT_IN_LINGUAS"
+  echo
+  echo
+fi
+
+
diff --git a/common/extract-release-date-from-doap-file b/common/extract-release-date-from-doap-file
new file mode 100755 (executable)
index 0000000..f2bc418
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+# Shell script to extract the date given a release version and a .doap file
+
+if test "x$1" = "x" -o "x$2" = "x" -o ! -s "$2"; then
+  echo "Usage: $0 RELEASE-VERSION-NUMBER DOAP-FILE" >&2;
+  exit 1
+fi
+
+if ! grep '<Project' "$2" >/dev/null ; then
+  echo "$2 does not look lika a .doap file" >&2;
+  exit 1
+fi
+
+if ! grep "$1" "$2" >/dev/null ; then
+  echo "$2 contains no reference to a version $1" >&2;
+  exit 1
+fi
+
+awk 'BEGIN {x=0}
+{
+if ($0~"<release>") {x=1; chunk=""}
+if (x==1) {
+  if ($0~"<revision>") { chunk = chunk $0 }
+  if ($0~"<created>") { chunk = chunk $0 }
+}
+if ($0~"</release>") {x=0; print chunk}
+}' < "$2" | \
+\
+grep '<revision>'"$1"'</revision>' | \
+\
+sed -e 's/^.*<created>//' -e 's/<\/created>.*$//'
+
diff --git a/common/gettext.patch b/common/gettext.patch
new file mode 100644 (file)
index 0000000..682b905
--- /dev/null
@@ -0,0 +1,12 @@
+--- po/Makefile.in.in.orig     2006-01-07 12:03:45.000000000 +0100
++++ po/Makefile.in.in  2006-01-07 12:04:23.000000000 +0100
+@@ -11,6 +11,9 @@
+ PACKAGE = @PACKAGE@
+ VERSION = @VERSION@
++# thomas: add GETTEXT_PACKAGE substitution as used in Makevars
++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
++
+ SHELL = /bin/sh
+ @SET_MAKE@
diff --git a/common/glib-gen.mak b/common/glib-gen.mak
new file mode 100644 (file)
index 0000000..ef93a5f
--- /dev/null
@@ -0,0 +1,44 @@
+# these are the variables your Makefile.am should set
+# the example is based on the colorbalance interface
+
+#glib_enum_headers=$(colorbalance_headers)
+#glib_enum_define=GST_COLOR_BALANCE
+#glib_enum_prefix=gst_color_balance
+
+enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
+
+# these are all the rules generating the relevant files
+%-marshal.h: %-marshal.list
+       $(AM_V_GEN)glib-genmarshal --header --prefix=$(glib_enum_prefix)_marshal $^ > $*-marshal.h.tmp && \
+       mv $*-marshal.h.tmp $*-marshal.h
+
+%-marshal.c: %-marshal.list
+       $(AM_V_GEN)echo "#include \"$*-marshal.h\"" >> $*-marshal.c.tmp && \
+       glib-genmarshal --body --prefix=$(glib_enum_prefix)_marshal $^ >> $*-marshal.c.tmp && \
+       mv $*-marshal.c.tmp $*-marshal.c
+
+%-enumtypes.h: $(glib_enum_headers)
+       $(AM_V_GEN)glib-mkenums \
+       --fhead "#ifndef __$(glib_enum_define)_ENUM_TYPES_H__\n#define __$(glib_enum_define)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
+       --fprod "\n/* enumerations from \"@filename@\" */\n" \
+       --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n"         \
+       --ftail "G_END_DECLS\n\n#endif /* __$(glib_enum_define)_ENUM_TYPES_H__ */" \
+       $^ > $@
+
+%-enumtypes.c: $(glib_enum_headers)
+       @if test "x$(glib_enum_headers)" = "x"; then echo "ERROR: glib_enum_headers is empty, please fix Makefile"; exit 1; fi
+       $(AM_V_GEN)glib-mkenums \
+       --fhead "#include \"$*-enumtypes.h\"\n$(enum_headers)" \
+       --fprod "\n/* enumerations from \"@filename@\" */" \
+       --vhead "GType\n@enum_name@_get_type (void)\n{\n  static volatile gsize g_define_type_id__volatile = 0;\n  if (g_once_init_enter (&g_define_type_id__volatile)) {\n    static const G@Type@Value values[] = {"     \
+       --vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+       --vtail "      { 0, NULL, NULL }\n    };\n    GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n  }\n  return g_define_type_id__volatile;\n}\n" \
+       $^ > $@
+
+# a hack rule to make sure .Plo files exist because they get include'd
+# from Makefile's
+.deps/%-marshal.Plo:
+       @touch $@
+
+.deps/%-enumtypes.Plo:
+       @touch $@
diff --git a/common/gst-autogen.sh b/common/gst-autogen.sh
new file mode 100644 (file)
index 0000000..f05e021
--- /dev/null
@@ -0,0 +1,376 @@
+# a silly hack that generates autoregen.sh but it's handy
+# Remove the old autoregen.sh first to create a new file,
+# as the current one may be being read by the shell executing
+# this script.
+if [ -f "autoregen.sh" ]; then
+  rm autoregen.sh
+fi
+echo "#!/bin/sh" > autoregen.sh
+echo "./autogen.sh $@ \$@" >> autoregen.sh
+chmod +x autoregen.sh
+
+# helper functions for autogen.sh
+
+debug ()
+# print out a debug message if DEBUG is a defined variable
+{
+  if test ! -z "$DEBUG"
+  then
+    echo "DEBUG: $1"
+  fi
+}
+
+version_get ()
+# based on the command's version output, set variables
+# _MAJOR, _MINOR, _MICRO, _VERSION, using the given prefix as variable prefix
+#
+# arg 1: command binary name
+# arg 2: (uppercased) variable name prefix
+{
+  COMMAND=$1
+  VARPREFIX=`echo $2 | tr .,- _`
+
+  # strip everything that's not a digit, then use cut to get the first field
+  pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1`
+  debug "pkg_version $pkg_version"
+  # remove any non-digit characters from the version numbers to permit numeric
+  # comparison
+  pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
+  pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
+  pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
+  test -z "$pkg_major" && pkg_major=0
+  test -z "$pkg_minor" && pkg_minor=0
+  test -z "$pkg_micro" && pkg_micro=0
+  debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
+  eval ${VARPREFIX}_MAJOR=$pkg_major
+  eval ${VARPREFIX}_MINOR=$pkg_minor
+  eval ${VARPREFIX}_MICRO=$pkg_micro
+  eval ${VARPREFIX}_VERSION=$pkg_version
+}
+
+version_compare ()
+# Checks whether the version of VARPREFIX is equal to or
+# newer than the requested version
+# arg1: VARPREFIX
+# arg2: MAJOR
+# arg3: MINOR
+# arg4: MICRO
+{
+  VARPREFIX=`echo $1 | tr .,- _`
+  MAJOR=$2
+  MINOR=$3
+  MICRO=$4
+
+  eval pkg_major=\$${VARPREFIX}_MAJOR;
+  eval pkg_minor=\$${VARPREFIX}_MINOR;
+  eval pkg_micro=\$${VARPREFIX}_MICRO;
+
+  #start checking the version
+  debug "version_compare: $VARPREFIX against $MAJOR.$MINOR.$MICRO"
+
+    # reset check
+    WRONG=
+
+    if [ ! "$pkg_major" -gt "$MAJOR" ]; then
+      debug "major: $pkg_major <= $MAJOR"
+      if [ "$pkg_major" -lt "$MAJOR" ]; then
+        debug "major: $pkg_major < $MAJOR"
+        WRONG=1
+      elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
+        debug "minor: $pkg_minor <= $MINOR"
+        if [ "$pkg_minor" -lt "$MINOR" ]; then
+          debug "minor: $pkg_minor < $MINOR"
+          WRONG=1
+        elif [ "$pkg_micro" -lt "$MICRO" ]; then
+          debug "micro: $pkg_micro < $MICRO"
+         WRONG=1
+        fi
+      fi
+    fi
+    if test ! -z "$WRONG"; then
+      debug "version_compare: $VARPREFIX older than $MAJOR.$MINOR.$MICRO"
+      return 1
+    fi
+    debug "version_compare: $VARPREFIX equal to/newer than $MAJOR.$MINOR.$MICRO"
+    return 0
+}
+
+
+version_check ()
+# check the version of a package
+# first argument : package name (executable)
+# second argument : optional path where to look for it instead
+# third argument : source download url
+# rest of arguments : major, minor, micro version
+# all consecutive ones : suggestions for binaries to use
+# (if not specified in second argument)
+{
+  PACKAGE=$1
+  PKG_PATH=$2
+  URL=$3
+  MAJOR=$4
+  MINOR=$5
+  MICRO=$6
+
+  # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
+  if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
+  debug "major $MAJOR minor $MINOR micro $MICRO"
+  VERSION=$MAJOR
+  if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
+  if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
+
+  debug "major $MAJOR minor $MINOR micro $MICRO"
+
+  for SUGGESTION in $PKG_PATH; do
+    COMMAND="$SUGGESTION"
+
+    # don't check if asked not to
+    test -z "$NOCHECK" && {
+      printf "  checking for $COMMAND >= $VERSION ... "
+    } || {
+      # we set a var with the same name as the package, but stripped of
+      # unwanted chars
+      VAR=`echo $PACKAGE | sed 's/-//g'`
+      debug "setting $VAR"
+      eval $VAR="$COMMAND"
+      return 0
+    }
+
+    which $COMMAND > /dev/null 2>&1
+    if test $? -eq 1;
+    then 
+      debug "$COMMAND not found"
+      continue
+    fi
+
+    VARPREFIX=`echo $COMMAND | sed 's/-//g' | tr [:lower:] [:upper:]`
+    version_get $COMMAND $VARPREFIX
+
+    version_compare $VARPREFIX $MAJOR $MINOR $MICRO
+    if test $? -ne 0; then
+      echo "found $pkg_version, not ok !"
+      continue
+    else
+      echo "found $pkg_version, ok."
+      # we set a var with the same name as the package, but stripped of
+      # unwanted chars
+      VAR=`echo $PACKAGE | sed 's/-//g'`
+      debug "setting $VAR"
+      eval $VAR="$COMMAND"
+      return 0
+    fi
+  done
+
+  echo "$PACKAGE not found !"
+  echo "You must have $PACKAGE installed to compile $package."
+  echo "Download the appropriate package for your distribution,"
+  echo "or get the source tarball at $URL"
+  return 1;
+}
+
+aclocal_check ()
+{
+  # normally aclocal is part of automake
+  # so we expect it to be in the same place as automake
+  # so if a different automake is supplied, we need to adapt as well
+  # so how's about replacing automake with aclocal in the set var,
+  # and saving that in $aclocal ?
+  # note, this will fail if the actual automake isn't called automake*
+  # or if part of the path before it contains it
+  if [ -z "$automake" ]; then
+    echo "Error: no automake variable set !"
+    return 1
+  else
+    aclocal=`echo $automake | sed s/automake/aclocal/`
+    debug "aclocal: $aclocal"
+    if [ "$aclocal" != "aclocal" ];
+    then
+      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
+    fi
+    if [ ! -x `which $aclocal` ]; then
+      echo "Error: cannot execute $aclocal !"
+      return 1
+    fi
+  fi
+}
+
+autoheader_check ()
+{
+  # same here - autoheader is part of autoconf
+  # use the same voodoo
+  if [ -z "$autoconf" ]; then
+    echo "Error: no autoconf variable set !"
+    return 1
+  else
+    autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
+    debug "autoheader: $autoheader"
+    if [ "$autoheader" != "autoheader" ];
+    then
+      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
+    fi
+    if [ ! -x `which $autoheader` ]; then
+      echo "Error: cannot execute $autoheader !"
+      return 1
+    fi
+  fi
+
+}
+
+autoconf_2_52d_check ()
+{
+  # autoconf 2.52d has a weird issue involving a yes:no error
+  # so don't allow it's use
+  test -z "$NOCHECK" && {
+    ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'`
+    if test "$ac_version" = "2.52d"; then
+      echo "autoconf 2.52d has an issue with our current build."
+      echo "We don't know who's to blame however.  So until we do, get a"
+      echo "regular version.  RPM's of a working version are on the gstreamer site."
+      exit 1
+    fi
+  }
+  return 0
+}
+libtool_2_2_gettext_check ()
+{
+  # libtool 2.2 needs autopoint 0.17 or higher
+  version_compare LIBTOOLIZE 2 2 0
+  if test $? -eq 0
+  then
+    version_compare AUTOPOINT 0 17 0
+    if test $? -ne 0
+    then
+      echo "libtool 2.2 requires autopoint 0.17 or higher"
+      return 1
+    fi
+  fi
+  return 0
+}
+
+
+die_check ()
+{
+  # call with $DIE
+  # if set to 1, we need to print something helpful then die
+  DIE=$1
+  if test "x$DIE" = "x1";
+  then
+    echo
+    echo "- Please get the right tools before proceeding."
+    echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
+    exit 1
+  fi
+}
+
+autogen_options ()
+{
+  if test "x$1" = "x"; then
+    return 0
+  fi
+
+  while test "x$1" != "x" ; do
+    optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    case "$1" in
+      --noconfigure)
+          NOCONFIGURE=defined
+         AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
+          echo "+ configure run disabled"
+          shift
+          ;;
+      --nocheck)
+         AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
+          NOCHECK=defined
+          echo "+ autotools version check disabled"
+          shift
+          ;;
+      -d|--debug)
+          DEBUG=defined
+         AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
+          echo "+ debug output enabled"
+          shift
+          ;;
+      -h|--help)
+          echo "autogen.sh (autogen options) -- (configure options)"
+          echo "autogen.sh help options: "
+          echo " --noconfigure            don't run the configure script"
+          echo " --nocheck                don't do version checks"
+          echo " --debug                  debug the autogen process"
+          echo
+          echo " --with-autoconf PATH     use autoconf in PATH"
+          echo " --with-automake PATH     use automake in PATH"
+          echo
+          echo "Any argument either not in the above list or after a '--' will be "
+          echo "passed to ./configure."
+         exit 1
+          ;;
+      --with-automake=*)
+          AUTOMAKE=$optarg
+          echo "+ using alternate automake in $optarg"
+         CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
+          shift
+          ;;
+      --with-autoconf=*)
+          AUTOCONF=$optarg
+          echo "+ using alternate autoconf in $optarg"
+         CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
+          shift
+          ;;
+      --) shift ; break ;;
+      *)
+          echo "+ passing argument $1 to configure"
+         CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1"
+          shift
+          ;;
+    esac
+  done
+
+  for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
+  if test ! -z "$CONFIGURE_EXT_OPT"
+  then
+    echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
+  fi
+}
+
+toplevel_check ()
+{
+  srcfile=$1
+  test -f $srcfile || {
+        echo "You must run this script in the top-level $package directory"
+        exit 1
+  }
+}
+
+tool_run ()
+{
+  tool=$1
+  options=$2
+  run_if_fail=$3
+  echo "+ running $tool $options..."
+  $tool $options || {
+    echo
+    echo $tool failed
+    eval $run_if_fail
+    exit 1
+  }
+}
+
+install_git_hooks ()
+{
+  if test -d .git; then
+    # install pre-commit hook for doing clean commits
+    for hook in pre-commit; do
+      if test ! \( -x .git/hooks/$hook -a -L .git/hooks/$hook \); then
+        echo "+ Installing git $hook hook"
+        rm -f .git/hooks/$hook
+        ln -s ../../common/hooks/$hook.hook .git/hooks/$hook || {
+          # if we couldn't create a symbolic link, try doing a plain cp
+          if cp common/hooks/pre-commit.hook .git/hooks/pre-commit; then
+            chmod +x .git/hooks/pre-commit;
+          else
+            echo "********** Couldn't install git $hook hook **********";
+          fi
+        }
+      fi
+    done
+  fi
+}
diff --git a/common/gst-indent b/common/gst-indent
new file mode 100755 (executable)
index 0000000..732b2ba
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Check that the code follows a consistant code style
+#
+
+# Check for existence of indent, and error out if not present.
+# On some *bsd systems the binary seems to be called gnunindent,
+# so check for that first.
+
+version=`gnuindent --version 2>/dev/null`
+if test "x$version" = "x"; then
+  version=`indent --version 2>/dev/null`
+  if test "x$version" = "x"; then
+    echo "GStreamer git pre-commit hook:"
+    echo "Did not find GNU indent, please install it before continuing."
+    exit 1
+  fi
+  INDENT=indent
+else
+  INDENT=gnuindent
+fi
+
+case `$INDENT --version` in
+  GNU*)
+      ;;
+  default)
+      echo "GStreamer git pre-commit hook:"
+      echo "Did not find GNU indent, please install it before continuing."
+      echo "(Found $INDENT, but it doesn't seem to be GNU indent)"
+      exit 1
+      ;;
+esac
+
+INDENT_PARAMETERS="--braces-on-if-line \
+       --case-brace-indentation0 \
+       --case-indentation2 \
+       --braces-after-struct-decl-line \
+       --line-length80 \
+       --no-tabs \
+       --cuddle-else \
+       --dont-line-up-parentheses \
+       --continuation-indentation4 \
+       --honour-newlines \
+       --tab-size8 \
+       --indent-level2 \
+       --leave-preprocessor-space"
+
+$INDENT ${INDENT_PARAMETERS} $@
+
diff --git a/common/gst.supp b/common/gst.supp
new file mode 100644 (file)
index 0000000..d7f8961
--- /dev/null
@@ -0,0 +1,3963 @@
+### this file contains suppressions for valgrind when running
+### the gstreamer unit tests
+### it might be useful for wider use as well
+
+### syscall suppressions
+
+{
+   <clone on Wim's Debian>
+   Memcheck:Param
+   clone(parent_tidptr)
+   fun:clone
+   fun:clone
+}
+
+{
+   <clone on Wim's Debian>
+   Memcheck:Param
+   clone(child_tidptr)
+   fun:clone
+   fun:clone
+}
+
+{
+   <clone on Wim's Debian>
+   Memcheck:Param
+   clone(tlsinfo)
+   fun:clone
+   fun:clone
+}
+
+### glibc suppressions
+
+{
+   <conditional jump on wim's debian 2/2/06>
+   Memcheck:Cond
+   obj:/lib/ld-2.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.*.so
+   fun:_dlerror_run
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_file
+}
+
+{
+   <Conditional jump>
+   Memcheck:Cond
+   fun:strlen
+   fun:fillin_rpath
+   fun:_dl_init_paths
+   fun:dl_main
+   fun:_dl_sysdep_start
+   fun:_dl_start
+   obj:/lib64/ld-2.*.so
+   obj:*
+   obj:*
+}
+
+{
+   <Conditional jump>
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_main
+   fun:_dl_sysdep_start
+   fun:_dl_start
+}
+
+{
+   <insert a suppression name here>
+   Memcheck:Cond
+   fun:*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+# glibc does not deallocate thread-local storage
+
+{
+   <tls>
+   Memcheck:Leak
+   fun:calloc
+   fun:_dl_allocate_tls
+   fun:pthread_create@@*
+}
+
+# I get an extra stack entry on x86/dapper
+{
+   <tls>
+   Memcheck:Leak
+   fun:calloc
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_allocate_tls
+   fun:pthread_create@@*
+}
+
+
+{
+   <pthread strstr>
+   Memcheck:Cond
+   fun:strstr
+   fun:__pthread_initialize_minimal
+   obj:/lib/libpthread-*.so
+   obj:/lib/libpthread-*.so
+   fun:call_init
+   fun:_dl_init
+   obj:/lib/ld-*.so
+}
+
+# a thread-related free problem in glibc from Edgard
+{
+   __libc_freeres_rw_acess
+   Memcheck:Addr4
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   obj:*
+   fun:__libc_freeres
+}
+
+{
+   <a conditional jump on wim's debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+}
+
+# g_module_open-related problems
+{
+   <started showing up on fc4-quick>
+   Memcheck:Addr2
+   fun:memcpy
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+   fun:gst_plugin_load_file
+   fun:gst_registry_scan_path_level
+   fun:gst_registry_scan_path_level
+   fun:gst_registry_scan_path_level
+   fun:init_post
+   fun:g_option_context_parse
+   fun:gst_init_check
+   fun:gst_init
+   fun:gst_check_init
+   fun:main
+}
+
+{
+   <started showing up on fc4-quick>
+   Memcheck:Addr4
+   fun:memcpy
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+   fun:gst_plugin_load_file
+   fun:gst_registry_scan_path_level
+   fun:gst_registry_scan_path_level
+   fun:gst_registry_scan_path_level
+   fun:init_post
+   fun:g_option_context_parse
+   fun:gst_init_check
+   fun:gst_init
+   fun:gst_check_init
+   fun:main
+}
+
+{
+   <g_module_open on wim's debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:do_sym
+   fun:_dl_sym
+   fun:dlsym_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlsym
+   fun:g_module_symbol
+   fun:g_module_open
+   fun:gst_plugin_load_file
+}
+
+{
+   <g_module_open on wim's debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+   fun:gst_plugin_load_file
+}
+{
+   <g_module_open on wim's debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+   fun:gst_plugin_load_file
+   fun:gst_plugin_load_by_name
+   fun:gst_plugin_feature_load
+}
+
+{
+   <leak on wim's debian in g_module_open>
+   Memcheck:Leak
+   fun:malloc
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+   fun:gst_plugin_load_file
+   fun:gst_plugin_load_by_name
+}
+
+{
+   <invalid read on wim's debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+}
+
+{
+   <invalid read on wim's debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+}
+
+{
+   <invalid read on wim's debian - 2006-02-02>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <invalid read on wim's debian - 2006-02-02>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:dl_open_worker
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   fun:dlopen_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <invalid read on wim's debian - 2006-02-02>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:do_sym
+   fun:_dl_sym
+   fun:dlsym_doit
+   obj:/lib/ld-2.3.*.so
+   fun:_dlerror_run
+   fun:dlsym
+   fun:g_module_symbol
+   fun:g_module_open
+}
+
+{
+   <futex on Andy's 64-bit ubuntu>
+   Memcheck:Param
+   futex(uaddr2)
+   fun:pthread_once
+   obj:/lib/libc-2.3.*.so
+   obj:/lib/libc-2.3.*.so
+   fun:mbsnrtowcs
+   fun:vfprintf
+   fun:vsprintf
+   fun:sprintf
+   obj:/lib/libc-2.3.*.so
+   fun:tmpfile
+   fun:setup_pipe
+   fun:setup_messaging_with_key
+   fun:setup_messaging
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   fun:_dl_sym
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlsym
+   fun:g_module_symbol
+   fun:g_module_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   fun:iconv_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   obj:/lib/i686/cmov/libc-2.7.so
+   fun:iconv_open
+}
+
+{
+   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   fun:iconv_open
+}
+
+{
+   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libc-2.7.so
+   fun:iconv_open
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on Ubunty Hardy 64-bit>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Cond
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+{
+   <suppression for glibc 2.7 on debian>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/i686/cmov/libdl-2.7.so
+   fun:dlopen
+}
+
+# suppression for a glibc bug:
+# http://valgrind.org/docs/manual/faq.html#faq.exit_errors>
+{
+   <Workaround for a glibc bug>
+   Memcheck:Free
+   fun:free
+   obj:*libc-*.so
+   fun:__libc_freeres
+   fun:*
+   fun:_Exit
+}
+
+# same as above, just so it works for tpm on gutsy/x86-64
+{
+   <workaround glibc bug on gutsy x86-64>
+   Memcheck:Free
+   fun:free
+   fun:free_mem
+   fun:__libc_freeres
+}
+
+# valgrind doesn't allow me to specify a suppression for Addr1, Addr2, Addr4
+# as Addr*, so 3 copies for that; and then 2 of each for that pesky memcpy
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr1
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr2
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr4
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr1
+   fun:memcpy
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr2
+   fun:memcpy
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+{
+   <Invalid read of size 1, 2, 4 on thomas's FC4>
+   Memcheck:Addr4
+   fun:memcpy
+   fun:_dl_signal_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+   fun:g_module_open
+}
+
+{
+   <Addr8 on Andy's AMD64 ubuntu in dl_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/libc-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   obj:/lib/libdl-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+}
+
+{
+   <Conditional jump on Andy's AMD64 ubuntu>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/libc-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   fun:_dl_open
+   obj:/lib/libdl-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/libdl-2.3.*.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_file
+   fun:gst_plugin_load_by_name
+   fun:gst_plugin_feature_load
+}
+
+{
+   <Mike's x86 dapper>
+   Memcheck:Addr4
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libc-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   fun:_dl_open
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   fun:dlopen
+}
+
+{
+   <Mike's x86 dapper>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libc-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   fun:_dl_open
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   fun:dlopen
+}
+
+{
+   <Another dapper one>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libc-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   fun:_dl_open
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+   fun:dlopen
+}
+
+### glib suppressions
+{
+   <g_parse_debug_string>
+   Memcheck:Cond
+   fun:g_parse_debug_string
+   obj:/usr/lib*/libglib-2.0.so.*
+   fun:g_slice_alloc
+   fun:g_slice_alloc0
+}
+
+{
+   <g_type_init leaks>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_type_init*
+   fun:init_pre*
+}
+
+{
+   <g_type_register_fundamental leaks>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_type_register_fundamental
+}
+
+{
+   <glib 2.21 static type data>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:type_node_any_new_W
+}
+
+{
+   <glib 2.21 static type data>
+   Memcheck:Leak
+   fun:realloc
+   fun:g_realloc
+   fun:type_node_any_new_W
+}
+
+{
+   <glib 2.21 static type data>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:g_type_class_ref
+}
+
+{
+   <glib 2.21 static type data>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:type_add_flags_W
+}
+
+{
+   <glib 2.21 static type data>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:type_add_flags_W
+}
+
+#pthread memleaks
+
+{
+   Thread creation leak
+   Memcheck:Leak
+   fun:calloc
+   fun:allocate_dtv
+   fun:_dl_allocate*
+   fun:_dl_allocate*
+   fun:__pthread_initialize_minimal
+}
+
+{
+   Thread management leak
+   Memcheck:Leak
+   fun:calloc
+   fun:allocate_dtv
+   fun:_dl_allocate*
+   fun:_dl_allocate*
+   fun:__pthread_*
+}
+
+{
+   Thread management leak 2
+   Memcheck:Leak
+   fun:memalign
+   fun:_dl_allocate*
+   fun:_dl_allocate*
+   fun:__pthread_*
+}
+
+{
+   pthread_create Syscall param write(buf) points to uninitialised byte(s)
+   Memcheck:Param
+   write(buf)
+   fun:pthread_create@@GLIBC_2.2.5
+   fun:g_thread_create*
+
+}
+
+# nss_parse_* memleak (used by g_option_context_parse)
+{
+   nss_parse_* memleak
+   Memcheck:Leak
+   fun:malloc
+   fun:nss_parse_service_list
+   fun:__nss_database_lookup
+}
+
+# liboil suppressions
+{
+   <liboil cpu_fault_check_try>
+   Memcheck:Value8
+   obj:/usr/lib/liboil-0.3.so.0.1.0
+   obj:/usr/lib/liboil-0.3.so.0.1.0
+   obj:/usr/lib/liboil-0.3.so.0.1.0
+   fun:oil_cpu_fault_check_try
+   fun:oil_test_check_impl
+   fun:oil_class_optimize
+   fun:oil_optimize_all
+   fun:oil_init
+}
+
+{
+   <annoying read error inside dlopen stuff on Ubuntu Dapper x86_64>
+   Memcheck:Addr8
+   obj:/lib/ld-2.3.6.so
+}
+
+{
+   <Ubuntu Dapper x86_64>
+   Memcheck:Param
+   futex(uaddr2)
+   fun:pthread_once
+   obj:/lib/libc-2.3.6.so
+   obj:/lib/libc-2.3.6.so
+   fun:setlocale
+   fun:init_pre
+   fun:g_option_context_parse
+   fun:gst_init_check
+   fun:gst_init
+   fun:gst_check_init
+   fun:main
+}
+
+{
+   <Ubuntu Dapper x86_64 dlopen stuff again>
+   Memcheck:Cond
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   fun:_dl_open
+   obj:/lib/libdl-2.3.6.so
+   obj:/lib/ld-2.3.6.so
+   obj:/lib/libdl-2.3.6.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_file
+}
+# this exists in a bunch of different variations, hence the short tail/trace
+{
+   <dlopen invalid read of size 4 suppression on tpm's Ubuntu edgy/x86>
+   Memcheck:Addr4
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+}
+{
+   <and the same for 64bit systems>
+   Memcheck:Addr8
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+}
+
+# More edgy suppressions (Mike)
+{
+   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+   Memcheck:Cond
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   fun:dlopen_doit
+   obj:/lib/ld-2.4.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+}
+
+{
+   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+   Memcheck:Cond
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   fun:dlopen_doit
+   obj:/lib/ld-2.4.so
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.1
+}
+
+{
+   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+   Memcheck:Cond
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   fun:do_sym
+   fun:_dl_sym
+}
+
+# This one's overly general, but there's zero other information in the stack
+# trace - just these five lines!
+{
+   <dlopen Condition jump suppressions for Ubuntu Edgy/x86>
+   Memcheck:Cond
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+   obj:/lib/ld-2.4.so
+}
+
+{
+   <tls leaks on Edgy/x86>
+   Memcheck:Leak
+   fun:calloc
+   obj:/lib/ld-2.4.so
+   fun:_dl_allocate_tls
+   fun:pthread_create@@GLIBC_2.1
+}
+
+# TLS leaks for feisty/x86
+{
+   <tls leaks on Feisty/x86>
+   Memcheck:Leak
+   fun:calloc
+   fun:allocate_dtv
+   fun:_dl_allocate_tls
+   fun:pthread_create@@GLIBC_2.1
+}
+
+{
+   <libcdio 0.76 leak>
+   Memcheck:Leak
+   fun:calloc
+   obj:/usr/lib/libcdio.so.6.0.1
+   fun:cdio_open_am_linux
+   obj:/usr/lib/libcdio.so.6.0.1
+   fun:cdio_open_am
+}
+
+{
+   <Addr8 on Jan's AMD64 ubuntu Feisty in dl_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.5.so
+}
+
+{
+   <First of many Alsa errors>
+   Memcheck:Cond
+   fun:snd_pcm_direct_shm_create_or_connect
+   fun:snd_pcm_dsnoop_open
+   fun:_snd_pcm_dsnoop_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_plug_open
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_asym_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+}
+
+{
+   <alsa error>
+   Memcheck:Cond
+   fun:snd*_pcm_hw_param_set_near
+}
+
+{
+   <alsa error>
+   Memcheck:Cond
+   ...
+   fun:snd*_pcm_hw_param_set_near
+}
+
+{
+   <alsa error>
+   Memcheck:Cond
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_close
+   obj:/*lib/libasound.so.2.0.0
+}
+{
+   <alsa error>
+   Memcheck:Cond
+   fun:snd_pcm_direct_shm_create_or_connect
+   fun:snd_pcm_dmix_open
+   fun:_snd_pcm_dmix_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_softvol_open
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_plug_open
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_asym_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+}
+{
+   <alsa error>
+   Memcheck:Leak
+   fun:malloc
+   fun:strdup
+   fun:snd_dlobj_cache_add
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:snd_pcm_dsnoop_open
+   fun:_snd_pcm_dsnoop_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_plug_open
+   obj:/*lib/libasound.so.2.0.0
+   fun:snd_pcm_open_slave
+   fun:_snd_pcm_asym_open
+   obj:/*lib/libasound.so.2.0.0
+   obj:/*lib/libasound.so.2.0.0
+}
+# Catch about 15 variations on inserting info into an ALSA
+# internal cache
+{
+   <alsa error>
+   Memcheck:Leak
+   fun:malloc
+   ...
+   fun:snd*_dlobj_cache_add
+   obj:/*lib*/libasound.so.2.0.0
+}
+
+{
+   <alsa leak in loading configuration>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:snd_pcm_open_conf
+}
+
+{
+   <alsa leak snd_config_hook_load>
+   Memcheck:Leak
+   fun:*alloc
+   obj:/*lib*/libasound.so.2.0.0
+   ...
+   fun:snd_config_hook_load
+}
+
+{
+   <alsa leak snd_config_update_r>
+   Memcheck:Leak
+   fun:*alloc
+   obj:/*lib*/libasound.so.2.0.0
+   ...
+   fun:snd_config_update_r
+   fun:snd_config_update
+}
+{
+   <alsa leak snd_config_update_r>
+   Memcheck:Leak
+   fun:*alloc
+   fun:strdup
+   ...
+   fun:snd_config_update_r
+   fun:snd_config_update
+}
+{
+   <nss lookup within ALSA>
+   Memcheck:Leak
+   fun:malloc
+   obj:/lib/libc*.so
+   fun:__nss_database_lookup
+   obj:*
+   obj:*
+   fun:getgrnam_r
+   fun:getgrnam
+   fun:snd_pcm_direct_parse_open_conf
+}
+
+{
+   <libxcb leak on Ubuntu Feisty>
+   Memcheck:Leak
+   fun:calloc
+   fun:_XCBInitDisplayLock
+   fun:XOpenDisplay
+}
+
+# GConf internal initialisations related to getting the default client.
+{
+   <Orbit something or other>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_tcval
+   obj:/usr/lib/libORBit-2.so.*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:CORBA_ORB_string_to_object
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_get_current_lock_holder
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so.*
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_tcval
+   obj:*
+   fun:PortableServer_POA_servant_to_reference
+   fun:*
+   fun:*
+   fun:*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_tcval
+   obj:/usr/lib/libORBit-2.so.*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:CORBA_ORB_string_to_object
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_get_current_lock_holder
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so.*
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal initialisation>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:ORBit_demarshal_value
+   fun:*
+   fun:ORBit_small_invoke_stub
+   fun:ConfigServer_get_default_database
+   fun:*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:*
+   fun:IOP_generate_profiles
+   fun:ORBit_marshal_object
+   fun:ORBit_marshal_value
+   fun:*
+   fun:ORBit_small_invoke_stub
+   fun:ConfigServer_add_client
+   fun:*
+   fun:*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_by_tc
+   fun:*
+   fun:PortableServer_POA_servant_to_reference
+   fun:*
+   fun:*
+   fun:*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf internal init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_by_tc
+   obj:/usr/lib/libORBit-2.so.*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:CORBA_ORB_string_to_object
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_get_current_lock_holder
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so.*
+   obj:/usr/lib/libgconf-2.so.*
+   fun:gconf_engine_get_default
+}
+
+{
+   <insert a suppression name here>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:*
+   fun:*
+   fun:gconf_activate_server
+}
+
+# Some libORBit/bonobo initialisation stuff
+{
+   <bonobo init>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:ORBit_alloc_string
+   fun:CORBA_string_dup
+   fun:Bonobo_ActivationEnvValue_set
+   fun:bonobo_activation_init_activation_env
+   fun:bonobo_activation_orb_init
+   fun:bonobo_activation_init
+}
+{
+   <bonobo init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc*
+   obj:/usr/lib/libORBit-2.so*
+   fun:PortableServer_POA_servant_to_reference
+   obj:/usr/lib/libbonobo-2.so*
+}
+{
+   <bonobo init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_tcval
+   fun:ORBit_small_allocbuf
+   fun:ORBit_adaptor_setup
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_POA_setup_root
+   fun:ORBit_init_internals
+   fun:CORBA_ORB_init
+}
+{
+   <bonobo init - more recent variant of above>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc_tcval
+   fun:ORBit_adaptor_setup
+   fun:*
+   fun:ORBit_POA_setup_root
+   fun:ORBit_init_internals
+   fun:CORBA_ORB_init
+}
+{
+   <bonobo init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_allocbuf
+   fun:bonobo_activation_init_activation_env
+   fun:bonobo_activation_orb_init
+   fun:bonobo_activation_init
+}
+
+# More GConf stuff from the FC5 buildbot, mostly variations on the
+# above stack traces
+{
+   <incompletely initialised ORBit buffer>
+   Memcheck:Param
+   writev(vector[...])
+   fun:writev
+   obj:/usr/lib/libORBit-2.so*
+   fun:link_connection_writev
+   fun:giop_send_buffer_write
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_small_invoke_stub
+   fun:ORBit_small_invoke_stub_n
+   fun:ORBit_c_stub_invoke
+   fun:ConfigServer_ping
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc*
+   obj:/usr/lib/libORBit-2.so*
+   fun:PortableServer_POA_servant_to_reference
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:CORBA_ORB_string_to_object
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_get_current_lock_holder
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc*
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:CORBA_ORB_string_to_object
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_get_current_lock_holder
+   fun:gconf_activate_server
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <bonobo init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc*
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_demarshal_IOR
+   fun:ORBit_demarshal_object
+   fun:ORBit_demarshal_value
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_small_invoke_stub
+   fun:ORBit_small_invoke_stub_n
+   fun:ORBit_c_stub_invoke
+   fun:ConfigServer_get_default_database
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <gconf init>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:ORBit_alloc*
+   fun:ORBit_small_alloc*
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_OAObject_object_to_objkey
+   fun:IOP_generate_profiles
+   fun:ORBit_marshal_object
+   fun:ORBit_marshal_value
+   obj:/usr/lib/libORBit-2.so*
+   fun:ORBit_small_invoke_stub
+   fun:ORBit_small_invoke_stub_n
+   fun:ORBit_c_stub_invoke
+   fun:ConfigServer_add_client
+   obj:/usr/lib/libgconf-2.so*
+   obj:/usr/lib/libgconf-2.so*
+   fun:gconf_engine_get_default
+}
+{
+   <GLib caching the home dir>
+   Memcheck:Leak
+   fun:malloc
+   obj:*libc-*.so
+   fun:__nss_database_lookup
+   obj:*
+   obj:*
+   fun:getpwnam_r
+   obj:/usr/lib*/libglib-2.0.so.*
+   fun:g_get_home_dir
+}
+{
+   <GLib caching the user name>
+   Memcheck:Leak
+   fun:malloc
+   obj:*libc-*.so
+   fun:__nss_database_lookup
+   obj:*
+   obj:*
+   fun:getpwnam_r
+   obj:/usr/lib*/libglib-2.0.so.*
+   fun:g_get_user_name
+}
+{
+   <GLib caching the tmp dir>
+   Memcheck:Leak
+   fun:malloc
+   obj:*libc-*.so
+   fun:__nss_database_lookup
+   obj:*
+   obj:*
+   fun:getpwnam_r
+   obj:/usr/lib*/libglib-2.0.so.*
+   fun:g_get_tmp_dir
+}
+
+{
+   <GLib caching the host name>
+   Memcheck:Leak
+   fun:malloc
+   obj:*libc-*.so
+   fun:__nss_database_lookup
+   obj:*
+   obj:*
+   fun:getpwnam_r
+   obj:/usr/lib*/libglib-2.0.so.0.*
+   fun:g_get_host_name
+}
+
+
+## Some Fontconfig errors.
+{
+   <First time load of a font - feisty x86_64>
+   Memcheck:Leak
+   fun:malloc
+   fun:FcPatternObjectInsertElt
+   fun:FcPatternObjectAddWithBinding
+   fun:FcPatternAppend
+   fun:FcEndElement
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   fun:XML_ParseBuffer
+   fun:FcConfigParseAndLoad
+   fun:FcConfigParseAndLoad
+   fun:FcParseInclude
+   fun:FcEndElement
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   obj:/usr/lib/libexpat.so.*
+   fun:XML_ParseBuffer
+   fun:FcConfigParseAndLoad
+}
+{
+   <First time load of a font - generic>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:FcInitLoadConfig
+}
+
+# Issues with ubuntu Hardy, same crack as for previous ubuntus
+{
+   <tls leak generic ubuntu hardy x86>
+   Memcheck:Leak
+   fun:calloc
+   obj:*
+   fun:_dl_allocate_tls
+   fun:pthread_create@@*
+   obj:/usr/lib/libgthread*
+   fun:g_thread_*
+}
+
+# I've made this version generic, so that it covers future modifications
+# of library names
+{
+   <tls leak generic>
+   Memcheck:Leak
+   fun:calloc
+   obj:*
+   fun:_dl_allocate_tls
+   fun:pthread_create@@*
+   fun:g_thread_*
+}
+
+# series of invalid read of size 4 in g_module_open for ubuntu
+# hardy x86/32bit
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_*
+}
+
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_*
+}
+
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_*
+}
+
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load_*
+}
+
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+   fun:gst_plugin_load*
+}
+
+{
+   <invalid read of size 4 within <g_module_open>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   fun:_dl_sym
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libdl-2.7.so
+   fun:dlsym
+   fun:g_module_symbol
+   fun:g_module_open
+   fun:gst_plugin_load_*
+}
+
+# series of invalid read of size 8 in g_module_open for ubuntu
+# hardy x86/64bit
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlopen
+   fun:g_module_open
+}
+
+{
+   <invalid read of size 8 within <g_module_open>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/libdl-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libdl-2.7.so
+   fun:dlsym
+   fun:g_module_symbol
+   fun:g_module_open
+}
+
+{
+   <GLib caching>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   fun:__nss_lookup_function
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   fun:__nss_passwd_lookup
+   fun:getpwnam_r
+}
+
+{
+   <GLib caching>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   fun:__nss_lookup_function
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   fun:__nss_passwd_lookup
+   fun:getpwnam_r
+}
+
+{
+   <GLib caching>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   fun:__nss_lookup_function
+   obj:/lib/tls/i686/cmov/libnss_compat-2.7.so
+   fun:_nss_compat_getpwnam_r
+   fun:getpwnam_r
+}
+
+{
+   <GLib caching>
+   Memcheck:Addr4
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/tls/i686/cmov/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   fun:__nss_lookup_function
+   obj:/lib/tls/i686/cmov/libnss_compat-2.7.so
+   fun:_nss_compat_getpwnam_r
+   fun:getpwnam_r
+}
+
+{
+   <GLib caching>
+   Memcheck:Addr8
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/ld-2.7.so
+   obj:/lib/libc-2.7.so
+   obj:/lib/ld-2.7.so
+   fun:__libc_dlopen_mode
+   fun:__nss_lookup_function
+   obj:/lib/libc-2.7.so
+   fun:getpwnam_r
+}
+
+## Leaks in ALSA (variations of leak from snd_config_load1)
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:calloc
+   fun:_snd_config_make
+   fun:_snd_config_make_add
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:malloc
+   fun:snd1_dlobj_cache_add
+   fun:snd_ctl_open_noupdate
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:malloc
+   fun:*
+   fun:snd1_dlobj_cache_add
+   fun:snd_ctl_open_noupdate
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+{
+   <Alsa leak>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:snd_config_load1
+}
+
+
+# The following are leaks of caps that need to be created dynamically
+# in the type registration of the plugin (used for pad templates).
+
+{
+   <Leak in ogmparsers>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_new_simple
+   fun:*
+   fun:g_type_class_ref
+   fun:gst_element_register
+}
+
+{
+   <Leak in ogmparsers>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:*
+   fun:*
+   fun:g_type_class_ref
+   fun:gst_element_register
+   fun:gst_ogm_parse_plugin_init
+   fun:plugin_init
+}
+
+{
+   <Leak in videotestsrc>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_copy
+   fun:gst_video_test_src_base_init
+   fun:g_type_class_ref
+   fun:gst_element_register
+}
+
+{
+   <Leak in videotestsrc>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_copy
+   fun:gst_video_test_src_getcaps
+   fun:gst_video_test_src_base_init
+   fun:g_type_class_ref
+   fun:gst_element_register
+}
+
+{
+   <Leak in ffmpegcolorspace>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_ffmpegcsp_codectype_to_caps
+   fun:gst_ffmpegcolorspace_register
+   fun:plugin_init
+}
+
+{
+   <Leak in ffmpegocolorspace>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_copy
+   fun:gst_ffmpegcolorspace_register
+   fun:plugin_init
+}
+
+{
+   <Leak in gstffmpegdemux>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_new_any
+   fun:gst_ffmpegdemux_register
+   fun:plugin_init
+}
+
+{
+   <Leak in GstAudioFilter subclasses>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+
+{
+   <Leak in GstAudioFilter subclasses, variant>
+   Memcheck:Leak
+   fun:realloc
+   fun:g_realloc
+   fun:g_ptr_array_maybe_expand
+   fun:g_ptr_array_add
+   fun:gst_caps_append
+   fun:gst_audio_filter_class_add_pad_templates
+}
+
+{
+   <Leak in GstAudioFilter subclasses, variant>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:g_ptr_array_maybe_expand
+   fun:g_ptr_array_add
+   fun:gst_caps_append
+   fun:gst_audio_filter_class_add_pad_templates
+}
+
+{
+   <Leak in GstAudioFilter subclasses, variant>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:g_ptr_array_maybe_expand
+   fun:g_ptr_array_add
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+
+{
+   <Leak in GstAudioFilter subclasses, variant2>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:g_ptr_array_sized_new
+   fun:gst_caps_new_empty
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+{
+   <Leak in GstAudioFilter subclasses, variant3>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:g_array_maybe_expand
+   fun:g_array_sized_new
+   fun:*
+   fun:*
+   fun:*
+   fun:gst_value_init_and_copy
+   fun:gst_structure_copy
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+{
+   <Leak in GstAudioFilter subclasses, variant4>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:g_array_maybe_expand
+   fun:g_array_sized_new
+   fun:*
+   fun:gst_structure_copy
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+{
+   <Leak in GstAudioFilter subclasses, variant5>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:g_array_sized_new
+   fun:*
+   fun:gst_structure_copy
+   fun:gst_caps_copy
+   fun:gst_audio_filter_class_add_pad_templates
+}
+
+{
+   <Leak in riff-media>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_riff_create_*_template_caps
+}
+{
+   <Leak in riff-media>
+   Memcheck:Leak
+   fun:malloc
+   fun:realloc
+   fun:g_realloc
+   fun:*
+   fun:*
+   fun:*
+   fun:gst_structure_copy
+   fun:gst_caps_copy
+   fun:gst_caps_append
+   fun:gst_riff_create_*_template_caps
+}
+{
+   <Leak in riff-media>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:g_array_sized_new
+   fun:*
+   fun:gst_structure_copy
+   fun:gst_caps_copy
+   fun:gst_caps_append
+   fun:gst_riff_create_*_template_caps
+}
+
+## Leaks in pango (bilboed: gentoo unstable amd64)
+
+{
+   <Pango leak - generic>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:pango_layout_get_pixel_extents
+}
+{
+   <insert a suppression name here>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:pango_language_from_string
+   fun:pango_language_get_default
+   fun:pango_context_init
+   fun:g_type_create_instance
+   fun:g_object_constructor
+   fun:g_object_newv
+   fun:g_object_new_valist
+   fun:g_object_new
+   fun:pango_font_map_create_context
+}
+
+{
+   <PangoLanguage can never be freed>
+   Memcheck:Leak
+   fun:calloc
+   fun:g_malloc0
+   fun:pango_language_from_string
+}
+
+
+## Leak of property_list in gstffmpegcfg.c
+## This list is created in gst_ffmpegcsp_init(), called from
+## gst_ffmpegenc_register.
+{
+   <insert a suppression name here>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:g_datalist_id_set_data_full
+   fun:gst_ffmpeg_cfg_init
+   fun:gst_ffmpegenc_register
+   fun:plugin_init
+}
+{
+   <insert a suppression name here>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:g_datalist_id_set_data_full
+   fun:g_param_spec_set_qdata_full
+   fun:gst_ffmpeg_cfg_init
+   fun:gst_ffmpegenc_register
+   fun:plugin_init
+}
+
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:gst_ffmpeg_cfg_init
+   fun:gst_ffmpegenc_register
+}
+
+## Leak of GIO module through gnomevfs
+
+{
+   <gio leak>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:*
+   fun:*
+   fun:g_type_create_instance
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:g_io_module_new
+   fun:g_io_modules_load_all_in_directory
+   fun:*
+   fun:get_default_vfs
+}
+
+## Conditional jump in getaddrinfo (bilboed, gentoo ~amd64, Dec 13 2008)
+{
+   <Leak of addrinfo in esd>
+   Memcheck:Cond
+   fun:gaih_inet
+   fun:getaddrinfo
+}
+
+## Dynamic pad templates in mxfmux
+{
+   <Dynamic pad templates in mxfmux>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_slice_alloc
+   fun:gst_caps_new_empty
+   fun:gst_caps_from_string
+   fun:mxf_*_init
+   fun:plugin_init
+}
+
+## We don't know if ffmpeg frees this or not and better pass a copy for safety
+{
+   <insert a suppression name here>
+   Memcheck:Leak
+   fun:malloc
+   fun:g_malloc
+   fun:g_strdup
+   fun:gst_ffmpeg_cfg_fill_context
+   fun:gst_ffmpegenc_setcaps
+   fun:gst_pad_set_caps
+}
+
+## Leak/overreads with glibc-2.10
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:do_sym
+   fun:dlsym_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlsym
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:do_sym
+   fun:dlsym_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlsym
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_check_map_versions
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_check_map_versions
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_map_object*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_map_object*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_check_caller
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_check_caller
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen*
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   obj:/lib*/libc-2.10.*.so
+   obj:/lib*/libc-2.10.*.so
+   fun:_vgnU_freeres
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   obj:/lib*/libc-2.10.*.so
+   obj:/lib*/libc-2.10.*.so
+   fun:_vgnU_freeres
+}
+{
+   <glibc-2.10 mysterious invalid free on exit>
+   Memcheck:Free
+   fun:free
+   obj:/lib*/libc-2.10.*.so
+   obj:/lib*/libc-2.10.*.so
+   fun:_vgnU_freeres
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_fini
+   fun:__run_exit_handlers
+   fun:exit
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_fini
+   fun:__run_exit_handlers
+   fun:exit
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_sort_fini
+   fun:_dl_fini
+   fun:__run_exit_handlers
+   fun:exit
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_sort_fini
+   fun:_dl_fini
+   fun:__run_exit_handlers
+   fun:exit
+}
+
+# glibc-2.10 dl overreads
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_fixup
+   fun:_dl_runtime_resolve
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_fixup
+   fun:_dl_runtime_resolve
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_lookup_symbol_x
+   fun:_dl_fixup
+   fun:_dl_runtime_resolve
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_lookup_symbol_x
+   fun:_dl_fixup
+   fun:_dl_runtime_resolve
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:call_init
+   fun:_dl_init
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_init
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:dl_main
+   fun:_dl_sysdep_start
+   fun:_dl_start
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:dl_main
+   fun:_dl_sysdep_start
+   fun:_dl_start
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_check_map_versions
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_check_map_versions
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_check_map_versions
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_check_map_versions
+   fun:_dl_check_all_versions
+   fun:version_check_doit
+   fun:_dl_receive_error
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:init_tls
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:init_tls
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_protect_relro
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_setup_hash
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:open_path
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:open_path
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:*
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_name_match_p
+   fun:_dl_check_map_versions
+   fun:_dl_check_all_versions
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:do_lookup_x
+   fun:_dl_lookup_symbol_x
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+   fun:dl_open_worker
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+   fun:dl_open_worker
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+   fun:dl_open_worker
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+   fun:dl_open_worker
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_lookup_symbol_x
+   fun:_dl_relocate_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:_dl_check_map_versions
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_check_map_versions
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:*
+   fun:_dl_check_map_versions
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_check_map_versions
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:openaux
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_name_match_p
+   fun:_dl_map_object
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_close_worker
+   fun:_dl_close
+   fun:_dl_catch_error
+   fun:dlerror_run
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_close_worker
+   fun:_dl_close
+   fun:_dl_catch_error
+   fun:dlerror_run
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_close_worker
+   fun:_dl_close
+   fun:_dl_catch_error
+   fun:dlerror_run
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_close_worker
+   fun:_dl_close
+   fun:_dl_catch_error
+   fun:dlerror_run
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:fillin_rpath
+   fun:_dl_init_paths
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:fillin_rpath
+   fun:_dl_init_paths
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:fillin_rpath
+   fun:_dl_init_paths
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:fillin_rpath
+   fun:_dl_init_paths
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_map_object
+   fun:map_doit
+   fun:_dl_catch_error
+   fun:do_preload
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_map_object
+   fun:map_doit
+   fun:_dl_catch_error
+   fun:do_preload
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Param
+   open(filename)
+   fun:open
+   fun:open_verify
+   fun:_dl_map_object
+   fun:map_doit
+   fun:_dl_catch_error
+   fun:do_preload
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Param
+   stat(file_name)
+   fun:_xstat
+   fun:open_path
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:_dl_map_object_deps
+   fun:dl_main
+}
+
+# glibc-2.10 tls issues
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:init_tls
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:init_tls
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:*
+   fun:init_tls
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:init_tls
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:_dl_allocate_tls_init
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:_dl_allocate_tls_init
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:*
+   fun:_dl_allocate_tls_init
+   fun:dl_main
+}
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Value8
+   fun:*
+   fun:_dl_allocate_tls_init
+   fun:dl_main
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Cond
+   fun:__tls*
+   obj:*
+   obj:*
+   fun:_vgnU_freeres
+}
+
+{
+   <glibc-2.10 overreads/conditionals>
+   Memcheck:Param
+   arch_prctl(arg2)
+   fun:init_tls
+}
+# GLib caching tmp/home directories (glibc-2.10 variants)
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Cond
+   fun:*
+   fun:dl_open_worker
+   fun:*
+   fun:*
+   fun:*
+   fun:_dl_catch_error
+   fun:dlerror_run
+   fun:*
+   fun:__nss_lookup_function
+   fun:__nss_lookup
+   fun:getpwnam*
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:dl_open_worker
+   fun:*
+   fun:*
+   fun:*
+   fun:_dl_catch_error
+   fun:dlerror_run
+   fun:*
+   fun:__nss_lookup_function
+   fun:__nss_lookup
+   fun:getpwnam*
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Cond
+   fun:dl_open_worker
+   fun:*
+   fun:*
+   fun:do_dlopen
+   fun:*
+   fun:dlerror_run
+   fun:*
+   fun:__nss_lookup_function
+   fun:__nss_lookup
+   fun:getpwnam*
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:dl_open_worker
+   fun:*
+   fun:*
+   fun:do_dlopen
+   fun:*
+   fun:dlerror_run
+   fun:*
+   fun:__nss_lookup_function
+   fun:__nss_lookup
+   fun:getpwnam*
+}
+
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:_dl_add_to_slotinfo
+   fun:dl_main
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Param
+   open(filename)
+   fun:open
+   fun:open_verify
+   fun:open_path
+   fun:_dl_map_object
+}
+
+
+
+# GModule issues with glibc-2.10
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:dlsym
+   fun:g_module_symbol
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:g_module_*
+   fun:gst_plugin*
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:g_module_*
+   fun:gst_plugin*
+}
+
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:dlopen*
+   fun:g_module_open
+}
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:dlsym
+   fun:g_module_symbol
+}
+
+{
+   <glibc-2.10 GLIB leaks>
+   Memcheck:Value8
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:*
+   fun:dlopen*
+   fun:g_module_open
+}
+
+# Leak in GSlice
+{
+   <insert a suppression name here>
+   Memcheck:Value8
+   fun:g_parse_debug_string
+   fun:slice_config_init
+   fun:g_slice_init_nomessage
+   fun:_g_slice_thread_init_nomessage
+   fun:g_thread_init_glib
+}
+
+# 2.10 pthread issues
+{
+   <insert a suppression name here>
+   Memcheck:Value8
+   fun:__pthread_initialize_minimal
+}
+
+# glibc 2.11 conditional
+{
+   <glibc-2.11 conditional>
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_main
+   fun:_dl_sysdep_start
+   fun:_dl_start
+   obj:/lib64/ld-2.11.so
+}
+
+# glibc 2.11 Leak
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:_dl_*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:_dl_*
+   fun:_dl_*
+   fun:_dl_*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:_dl_*
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:_dl_map_object
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+   fun:openaux
+   fun:_dl_catch_error
+   fun:_dl_map_object_deps
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:_dl_*
+   fun:_dl_*
+   fun:_dl_*
+   fun:dl_open_worker
+   fun:_dl_catch_error
+   fun:_dl_open
+   fun:dlopen_doit
+   fun:_dl_catch_error
+   fun:_dlerror_run
+   fun:dlopen@@GLIBC_2.2.5
+}
+
+# glib type leaks
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_type_register_static
+}
+
+# new registry system
+# all of this will only be created once when loading registry.
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:_priv_gst_registry_chunks_load_plugin
+}
+
+# system-wide tags
+# these tags are registered once
+
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   fun:*
+   fun:*
+   fun:gst_tag_register
+   fun:_gst_tag_initialize
+}
+
+# system-wide type classes that we keep referenced
+
+{
+   <g_type_class_ref leaks>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_type_class_ref
+}
+
+# leaking cached queries which are only initialized once
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:_gst_query_initialize
+   fun:init_post
+}
+
+# macosx (leopard) library loader leak
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:_Znwm
+   fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
+   fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
+   fun:_ZNSsC2EPKcRKSaIcE
+   fun:_Z41__static_initialization_and_destruction_0ii
+   fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
+}
+
+# GObject type registration
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:_g_atomic_array_copy
+}
+
+{
+   <getdelim one-time inits called from libselinux>
+   Memcheck:Leak
+   fun:*alloc
+   fun:getdelim
+   obj:*libselinux*
+}
+
+{
+   <weird one when re-reading registry>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   obj:*/sed
+}
+
+{
+   <weird one when re-reading registry>
+   Memcheck:Addr8
+   ...
+   obj:*/sed
+}
+
+# GLib 2.23 interface vtable
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:g_type_add_interface_static
+}
+
+{
+   <leak in dash on debian sid>
+   Memcheck:Leak
+   fun:*alloc
+   obj:*/dash
+}
+
+# libtool/gentoo fake leak
+# it actually runs bash and valgrind complains
+{
+   <insert_a_suppression_name_here>
+   Memcheck:Leak
+   fun:*alloc
+   obj:/bin/bash
+}
+
+{
+   <ignore possbly-lost leaks in the plugin scanner which doesn't clean up properly>
+   Memcheck:Leak
+   fun:*alloc
+   ...
+   fun:_gst_plugin_loader_client_run
+   fun:main
+}
+
+{
+   <warning with libc 2.13-2 as in Debian/unstable on amd64>
+   Memcheck:Cond
+   fun:*strcasecmp*
+   ...
+   fun:__dcigettext
+}
+
+{
+   <warning with libc 2.13-2 as in Debian/unstable on amd64>
+   Memcheck:Value8
+   fun:*strcasecmp*
+   ...
+   fun:__dcigettext
+}
+
+{
+   <GstSystemClock is a singleton and does not leak>
+   Memcheck:Leak
+   fun:malloc
+   ...
+   fun:gst_poll_new
+   fun:gst_poll_new_timer
+   fun:gst_system_clock_init
+}
+
diff --git a/common/gstdoc-scangobj b/common/gstdoc-scangobj
new file mode 100755 (executable)
index 0000000..5b13352
--- /dev/null
@@ -0,0 +1,1598 @@
+#!/usr/bin/env perl
+# -*- cperl -*-
+#
+# gtk-doc - GTK DocBook documentation generator.
+# Copyright (C) 1998  Damon Chaplin
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+#
+# This gets information about object hierarchies and signals
+# by compiling a small C program. CFLAGS and LDFLAGS must be
+# set appropriately before running this script.
+#
+
+use Getopt::Long;
+
+my $GTK_DOC_PREFIX=`pkg-config --variable prefix gtk-doc`;
+if ($GTK_DOC_PREFIX) {
+  chomp $GTK_DOC_PREFIX;
+  #print "Adding $GTK_DOC_PREFIX/share/gtk-doc/data to \@INC\n";
+  unshift @INC, "$GTK_DOC_PREFIX/share/gtk-doc/data";
+} else {
+  unshift @INC, '/usr/share/gtk-doc/data';
+}
+require "gtkdoc-common.pl";
+
+# Options
+
+# name of documentation module
+my $MODULE;
+my $OUTPUT_DIR;
+my $INSPECT_DIR;
+my $VERBOSE;
+my $PRINT_VERSION;
+my $PRINT_HELP;
+my $TYPE_INIT_FUNC="g_type_init ()";
+
+# --nogtkinit is deprecated, as it is the default now anyway.
+%optctl = (module => \$MODULE,
+           source => \$SOURCE,
+          types => \$TYPES_FILE,
+          nogtkinit => \$NO_GTK_INIT,
+          'type-init-func' => \$TYPE_INIT_FUNC,
+          'output-dir' => \$OUTPUT_DIR,
+          'inspect-dir' => \$INSPECT_DIR,
+          'verbose' => \$VERBOSE,
+          'version' => \$PRINT_VERSION,
+          'help' => \$PRINT_HELP);
+
+GetOptions(\%optctl, "module=s", "source=s", "types:s", "output-dir:s", "inspect-dir:s", "nogtkinit", "type-init-func:s", "verbose", "version", "help");
+
+if ($NO_GTK_INIT) {
+  # Do nothing. This just avoids a warning.
+  # the option is not used anymore
+}
+
+if ($PRINT_VERSION) {
+    print "1.5\n";
+    exit 0;
+}
+
+if (!$MODULE) {
+    $PRINT_HELP = 1;
+}
+
+if ($PRINT_HELP) {
+    print <<EOF;
+gstdoc-scangobj version 1.5 - introspect gstreamer-plugins
+
+--module=MODULE_NAME          Name of the doc module being parsed
+--source=SOURCE_NAME          Name of the source module for plugins
+--types=FILE                  The name of the file to store the types in
+--type-init-func=FUNC         The init function to call instead of g_type_init()
+--output-dir=DIRNAME          The directory where the results are stored
+--inspect-dir=DIRNAME         The directory where the plugin inspect data is stored
+--verbose                     Print extra output while processing
+--version                     Print the version of this program
+--help                        Print this help
+EOF
+    exit 0;
+}
+
+$OUTPUT_DIR = $OUTPUT_DIR ? $OUTPUT_DIR : ".";
+
+$TYPES_FILE = $TYPES_FILE ? $TYPES_FILE : "$OUTPUT_DIR/$MODULE.types";
+
+open (TYPES, $TYPES_FILE) || die "Cannot open $TYPES_FILE: $!\n";
+open (OUTPUT, ">$MODULE-scan.c") || die "Cannot open $MODULE-scan.c: $!\n";
+
+my $old_signals_filename = "$OUTPUT_DIR/$MODULE.signals";
+my $new_signals_filename = "$OUTPUT_DIR/$MODULE.signals.new";
+my $old_hierarchy_filename = "$OUTPUT_DIR/$MODULE.hierarchy";
+my $new_hierarchy_filename = "$OUTPUT_DIR/$MODULE.hierarchy.new";
+my $old_interfaces_filename = "$OUTPUT_DIR/$MODULE.interfaces";
+my $new_interfaces_filename = "$OUTPUT_DIR/$MODULE.interfaces.new";
+my $old_prerequisites_filename = "$OUTPUT_DIR/$MODULE.prerequisites";
+my $new_prerequisites_filename = "$OUTPUT_DIR/$MODULE.prerequisites.new";
+my $old_args_filename = "$OUTPUT_DIR/$MODULE.args";
+my $new_args_filename = "$OUTPUT_DIR/$MODULE.args.new";
+
+my $debug_log="g_message";
+if (!defined($VERBOSE) or $VERBOSE eq "0") {
+    $debug_log="//$debug_log";
+}
+
+# write a C program to scan the types
+
+$includes = "";
+@types = ();
+@impl_types = ();
+
+for (<TYPES>) {
+    if (/^#include/) {
+       $includes .= $_;
+    } elsif (/^%/) {
+       next;
+    } elsif (/^\s*$/) {
+       next;
+    } elsif (/^type:(.*)$/) {
+       $t = $1;
+        chomp $t;
+       push @impl_types, $t;
+    } else {
+       chomp;
+       push @types, $_;
+    }
+}
+
+$ntypes = @types + @impl_types + 1;
+
+print OUTPUT <<EOT;
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+
+$includes
+
+#ifdef GTK_IS_WIDGET_CLASS
+#include <gtk/gtkversion.h>
+#endif
+
+static GType *object_types = NULL;
+
+static GString *xmlstr = NULL;
+
+static const gchar*
+xmlprint (gint indent, const gchar *tag, const gchar *data)
+{
+  const gchar indent_str[] = "                                               ";
+
+  /* reset */
+  g_string_truncate (xmlstr, 0);
+  g_string_append_len (xmlstr, indent_str, MIN (indent, strlen (indent_str)));
+  g_string_append_printf (xmlstr, "<%s>", tag);
+
+  if (data) {
+    gchar *s;
+
+    s = g_markup_escape_text (data, -1);
+    g_string_append (xmlstr, s);
+    g_free (s);
+  }
+
+  g_string_append_printf (xmlstr, "</%s>\\n", tag);
+  return xmlstr->str;
+}
+
+static gint
+gst_feature_sort_compare (gconstpointer a, gconstpointer b)
+{
+  return strcmp (((GstPluginFeature *)a)->name, ((GstPluginFeature *)b)->name);
+}
+
+static gint
+static_pad_template_compare (gconstpointer a, gconstpointer b)
+{
+  GstStaticPadTemplate *spt_a = (GstStaticPadTemplate *) a;
+  GstStaticPadTemplate *spt_b = (GstStaticPadTemplate *) b;
+
+  /* we want SINK before SRC (enum is UNKNOWN, SRC, SINK) */
+  if (spt_a->direction != spt_b->direction)
+    return spt_b->direction - spt_a->direction;
+
+  /* we want ALWAYS first, SOMETIMES second, REQUEST last
+   * (enum is ALWAYS, SOMETIMES, REQUEST) */
+  if (spt_a->presence != spt_b->presence)
+    return spt_a->presence - spt_b->presence;
+
+  return strcmp (spt_a->name_template, spt_b->name_template);
+}
+
+static GType *
+get_object_types (void)
+{
+    gpointer g_object_class;
+    GList *plugins = NULL;
+    GList *factories = NULL;
+    GList *l;
+    GstElementFactory *factory = NULL;
+    GType type;
+    gint i = 0;
+    gboolean reinspect;
+
+    /* get a list of features from plugins in our source module */
+    plugins = gst_registry_get_plugin_list (gst_registry_get_default());
+
+    xmlstr = g_string_new ("");
+
+    reinspect = !g_file_test ("scanobj-build.stamp", G_FILE_TEST_EXISTS);
+
+    while (plugins) {
+      GList *features;
+      GstPlugin *plugin;
+      const gchar *source;
+      FILE *inspect = NULL;
+      gchar *inspect_name;
+
+      plugin = (GstPlugin *) (plugins->data);
+      plugins = g_list_next (plugins);
+      source = gst_plugin_get_source (plugin);
+      if (!source || strcmp (source, "$SOURCE") != 0) {
+        continue;
+      }
+
+      /* skip static coreelements plugin with pipeline and bin element factory */
+      if (gst_plugin_get_filename (plugin) == NULL)
+        continue;
+
+      $debug_log ("plugin: %s source: %s", plugin->desc.name, source);
+
+      if (reinspect) {
+        inspect_name = g_strdup_printf ("$INSPECT_DIR" G_DIR_SEPARATOR_S "plugin-%s.xml",
+            plugin->desc.name);
+        inspect = fopen (inspect_name, "w");
+        if (inspect == NULL) {
+          g_error ("Could not open %s for writing: %s\\n", inspect_name,
+              g_strerror (errno));
+        }
+        g_free (inspect_name);
+
+        /* output plugin data */
+        fputs ("<plugin>\\n",inspect);
+        fputs (xmlprint(2, "name", plugin->desc.name),inspect);
+        fputs (xmlprint(2, "description", plugin->desc.description),inspect);
+        fputs (xmlprint(2, "filename", plugin->filename),inspect);
+        fputs (xmlprint(2, "basename", plugin->basename),inspect);
+        fputs (xmlprint(2, "version", plugin->desc.version),inspect);
+        fputs (xmlprint(2, "license", plugin->desc.license),inspect);
+        fputs (xmlprint(2, "source", plugin->desc.source),inspect);
+        fputs (xmlprint(2, "package", plugin->desc.package),inspect);
+        fputs (xmlprint(2, "origin", plugin->desc.origin),inspect);
+        fputs ("  <elements>\\n", inspect);
+      }
+
+      features =
+          gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
+          plugin->desc.name);
+
+      /* sort factories by feature->name */
+      features = g_list_sort (features, gst_feature_sort_compare);
+
+      while (features) {
+        GstPluginFeature *feature;
+        feature = GST_PLUGIN_FEATURE (features->data);
+        feature = gst_plugin_feature_load (feature);
+        if (!feature) {
+          g_warning ("Could not load plugin feature %s",
+                     gst_plugin_feature_get_name (feature));
+        }
+
+        if (GST_IS_ELEMENT_FACTORY (feature)) {
+          const gchar *pad_dir[] = { "unknown","source","sink" };
+          const gchar *pad_pres[] = { "always","sometimes","request" };
+          GList *pads, *pad;
+
+          $debug_log ("  feature: %s", feature->name);
+
+          factory = GST_ELEMENT_FACTORY (feature);
+          factories = g_list_prepend (factories, factory);
+
+          if (reinspect) {
+            /* output element data */
+            fputs ("    <element>\\n", inspect);
+            fputs (xmlprint(6, "name", feature->name),inspect);
+            fputs (xmlprint(6, "longname", gst_element_factory_get_longname (factory)),inspect);
+            fputs (xmlprint(6, "class", gst_element_factory_get_klass (factory)),inspect);
+            fputs (xmlprint(6, "description", gst_element_factory_get_description (factory)),inspect);
+            fputs (xmlprint(6, "author", gst_element_factory_get_author (factory)),inspect);
+            fputs ("      <pads>\\n", inspect);
+
+            /* output pad-template data */
+            pads = g_list_copy ((GList *) gst_element_factory_get_static_pad_templates (factory));
+            pads = g_list_sort (pads, static_pad_template_compare);
+            for (pad = pads; pad != NULL; pad = pad->next) {
+              GstStaticPadTemplate *pt = pad->data;
+
+              fputs ("        <caps>\\n", inspect);
+              fputs (xmlprint(10, "name", pt->name_template),inspect);
+              fputs (xmlprint(10, "direction", pad_dir[pt->direction]),inspect);
+              fputs (xmlprint(10, "presence", pad_pres[pt->presence]),inspect);
+              fputs (xmlprint(10, "details", pt->static_caps.string),inspect);
+              fputs ("        </caps>\\n", inspect);
+            }
+            g_list_free (pads);
+            fputs ("      </pads>\\n    </element>\\n", inspect);
+          }
+        }
+        features = g_list_next (features);
+      }
+
+      if (reinspect) {
+        fputs ("  </elements>\\n</plugin>", inspect);
+        fclose (inspect);
+      }
+    }
+
+    g_string_free (xmlstr, TRUE);
+
+    $debug_log ("number of element factories: %d", g_list_length (factories));
+
+    /* allocate the object_types array to hold them */
+    object_types = g_new0 (GType, g_list_length (factories)+$ntypes+1);
+
+    l = factories;
+    i = 0;
+
+    /* fill it */
+    while (l) {
+      factory = GST_ELEMENT_FACTORY (l->data);
+      type = gst_element_factory_get_element_type (factory);
+      if (type != 0) {
+        $debug_log ("adding type for factory %s", gst_element_factory_get_longname (factory));
+        object_types[i++] = type;
+      } else {
+        g_message ("type info for factory %s not found",
+            gst_element_factory_get_longname (factory));
+      }
+      l = g_list_next (l);
+    }
+
+EOT
+
+# get_type functions:
+for (@types) {
+print OUTPUT <<EOT;
+    type = $_ ();
+    if (type == 0) {
+      g_message ("$_ () didn't return a valid type");
+    }
+    else {
+      object_types[i++] = type;
+    }
+EOT
+}
+
+# Implicit types retrieved from GLib:
+for (@impl_types) {
+print OUTPUT <<EOT;
+    type = g_type_from_name ("$_");
+    if (type == 0) {
+      g_message ("Implicit type $_ not found");
+    }
+    else {
+      object_types[i++] = type;
+    }
+EOT
+}
+
+print OUTPUT <<EOT;
+
+    object_types[i] = 0;
+
+    /* reference the GObjectClass to initialize the param spec pool
+     * potentially needed by interfaces. See http://bugs.gnome.org/571820 */
+    g_object_class = g_type_class_ref (G_TYPE_OBJECT);
+
+    /* Need to make sure all the types are loaded in and initialize
+     * their signals and properties.
+     */
+    for (i=0; object_types[i]; i++)
+      {
+        if (G_TYPE_IS_CLASSED (object_types[i]))
+          g_type_class_ref (object_types[i]);
+        if (G_TYPE_IS_INTERFACE (object_types[i]))
+          g_type_default_interface_ref (object_types[i]);
+      }
+
+    g_type_class_unref (g_object_class);
+
+    return object_types;
+}
+
+/*
+ * This uses GObject type functions to output signal prototypes and the object
+ * hierarchy.
+ */
+
+/* The output files */
+const gchar *signals_filename = "$new_signals_filename";
+const gchar *hierarchy_filename = "$new_hierarchy_filename";
+const gchar *interfaces_filename = "$new_interfaces_filename";
+const gchar *prerequisites_filename = "$new_prerequisites_filename";
+const gchar *args_filename = "$new_args_filename";
+
+
+static void output_signals (void);
+static void output_object_signals (FILE *fp,
+                                  GType object_type);
+static void output_object_signal (FILE *fp,
+                                 const gchar *object_class_name,
+                                 guint signal_id);
+static const gchar * get_type_name (GType type,
+                                   gboolean * is_pointer);
+static void output_object_hierarchy (void);
+static void output_hierarchy (FILE *fp,
+                             GType type,
+                             guint level);
+
+static void output_object_interfaces (void);
+static void output_interfaces (FILE *fp,
+                              GType type);
+
+static void output_interface_prerequisites (void);
+static void output_prerequisites (FILE *fp,
+                                 GType type);
+
+static void output_args (void);
+static void output_object_args (FILE *fp, GType object_type);
+
+int
+main (int argc, char *argv[])
+{
+  /* Silence the compiler: */
+  if (argv != argv) argc = argc;
+
+  $TYPE_INIT_FUNC;
+
+  get_object_types ();
+
+  output_signals ();
+  output_object_hierarchy ();
+  output_object_interfaces ();
+  output_interface_prerequisites ();
+  output_args ();
+
+  return 0;
+}
+
+
+static void
+output_signals (void)
+{
+  FILE *fp;
+  gint i;
+
+  fp = fopen (signals_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", signals_filename, g_strerror(errno));
+      return;
+    }
+
+  for (i = 0; object_types[i]; i++)
+    output_object_signals (fp, object_types[i]);
+
+  fclose (fp);
+}
+
+static gint
+compare_signals (const void *a, const void *b)
+{
+  const guint *signal_a = a;
+  const guint *signal_b = b;
+
+  return strcmp (g_signal_name (*signal_a), g_signal_name (*signal_b));
+}
+
+/* This outputs all the signals of one object. */
+static void
+output_object_signals (FILE *fp, GType object_type)
+{
+  const gchar *object_class_name;
+  guint *signals, n_signals;
+  guint sig;
+
+  if (G_TYPE_IS_INSTANTIATABLE (object_type) ||
+      G_TYPE_IS_INTERFACE (object_type))
+    {
+
+      object_class_name = g_type_name (object_type);
+
+      signals = g_signal_list_ids (object_type, &n_signals);
+      qsort (signals, n_signals, sizeof (guint), compare_signals);
+
+      for (sig = 0; sig < n_signals; sig++)
+        {
+           output_object_signal (fp, object_class_name, signals[sig]);
+        }
+      g_free (signals);
+   }
+}
+
+
+/* This outputs one signal. */
+static void
+output_object_signal (FILE *fp,
+                     const gchar *object_name,
+                     guint signal_id)
+{
+  GSignalQuery query_info;
+  const gchar *type_name, *ret_type, *object_arg, *arg_name;
+  gchar *pos, *object_arg_lower;
+  gboolean is_pointer;
+  gchar buffer[1024];
+  guint i, param;
+  gint param_num, widget_num, event_num, callback_num;
+  gint *arg_num;
+  gchar signal_name[128];
+  gchar flags[16];
+
+  $debug_log ("Object: %s Signal: %u", object_name, signal_id);
+
+  param_num = 1;
+  widget_num = event_num = callback_num = 0;
+
+  g_signal_query (signal_id, &query_info);
+
+  /* Output the signal object type and the argument name. We assume the
+     type is a pointer - I think that is OK. We remove "Gtk" or "Gnome" and
+     convert to lower case for the argument name. */
+  pos = buffer;
+  sprintf (pos, "%s ", object_name);
+  pos += strlen (pos);
+
+  /* Try to come up with a sensible variable name for the first arg
+   * It chops off 2 know prefixes :/ and makes the name lowercase
+   * It should replace lowercase -> uppercase with '_'
+   * GFileMonitor -> file_monitor
+   * GIOExtensionPoint -> extension_point
+   * GtkTreeView -> tree_view
+   * if 2nd char is upper case too
+   *   search for first lower case and go back one char
+   * else
+   *   search for next upper case
+   */
+  if (!strncmp (object_name, "Gtk", 3))
+      object_arg = object_name + 3;
+  else if (!strncmp (object_name, "Gnome", 5))
+      object_arg = object_name + 5;
+  else
+      object_arg = object_name;
+
+  object_arg_lower = g_ascii_strdown (object_arg, -1);
+  sprintf (pos, "*%s\\n", object_arg_lower);
+  pos += strlen (pos);
+  if (!strncmp (object_arg_lower, "widget", 6))
+    widget_num = 2;
+  g_free(object_arg_lower);
+
+  /* Convert signal name to use underscores rather than dashes '-'. */
+  strncpy (signal_name, query_info.signal_name, 127);
+  signal_name[127] = '\\0';
+  for (i = 0; signal_name[i]; i++)
+    {
+      if (signal_name[i] == '-')
+       signal_name[i] = '_';
+    }
+
+  /* Output the signal parameters. */
+  for (param = 0; param < query_info.n_params; param++)
+    {
+      type_name = get_type_name (query_info.param_types[param] & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer);
+
+      /* Most arguments to the callback are called "arg1", "arg2", etc.
+         GtkWidgets are called "widget", "widget2", ...
+         GtkCallbacks are called "callback", "callback2", ... */
+      if (!strcmp (type_name, "GtkWidget"))
+        {
+          arg_name = "widget";
+          arg_num = &widget_num;
+        }
+      else if (!strcmp (type_name, "GtkCallback")
+               || !strcmp (type_name, "GtkCCallback"))
+        {
+          arg_name = "callback";
+          arg_num = &callback_num;
+        }
+      else
+        {
+          arg_name = "arg";
+          arg_num = &param_num;
+        }
+      sprintf (pos, "%s ", type_name);
+      pos += strlen (pos);
+
+      if (!arg_num || *arg_num == 0)
+        sprintf (pos, "%s%s\\n", is_pointer ? "*" : " ", arg_name);
+      else
+        sprintf (pos, "%s%s%i\\n", is_pointer ? "*" : " ", arg_name,
+                 *arg_num);
+      pos += strlen (pos);
+
+      if (arg_num)
+        {
+          if (*arg_num == 0)
+            *arg_num = 2;
+          else
+            *arg_num += 1;
+        }
+    }
+
+  pos = flags;
+  /* We use one-character flags for simplicity. */
+  if (query_info.signal_flags & G_SIGNAL_RUN_FIRST)
+    *pos++ = 'f';
+  if (query_info.signal_flags & G_SIGNAL_RUN_LAST)
+    *pos++ = 'l';
+  if (query_info.signal_flags & G_SIGNAL_RUN_CLEANUP)
+    *pos++ = 'c';
+  if (query_info.signal_flags & G_SIGNAL_NO_RECURSE)
+    *pos++ = 'r';
+  if (query_info.signal_flags & G_SIGNAL_DETAILED)
+    *pos++ = 'd';
+  if (query_info.signal_flags & G_SIGNAL_ACTION)
+    *pos++ = 'a';
+  if (query_info.signal_flags & G_SIGNAL_NO_HOOKS)
+    *pos++ = 'h';
+  *pos = 0;
+
+  /* Output the return type and function name. */
+  ret_type = get_type_name (query_info.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE, &is_pointer);
+
+  fprintf (fp,
+          "<SIGNAL>\\n<NAME>%s::%s</NAME>\\n<RETURNS>%s%s</RETURNS>\\n<FLAGS>%s</FLAGS>\\n%s</SIGNAL>\\n\\n",
+          object_name, query_info.signal_name, ret_type, is_pointer ? "*" : "", flags, buffer);
+}
+
+
+/* Returns the type name to use for a signal argument or return value, given
+   the GtkType from the signal info. It also sets is_pointer to TRUE if the
+   argument needs a '*' since it is a pointer. */
+static const gchar *
+get_type_name (GType type, gboolean * is_pointer)
+{
+  const gchar *type_name;
+
+  *is_pointer = FALSE;
+  type_name = g_type_name (type);
+
+  switch (type) {
+  case G_TYPE_NONE:
+  case G_TYPE_CHAR:
+  case G_TYPE_UCHAR:
+  case G_TYPE_BOOLEAN:
+  case G_TYPE_INT:
+  case G_TYPE_UINT:
+  case G_TYPE_LONG:
+  case G_TYPE_ULONG:
+  case G_TYPE_FLOAT:
+  case G_TYPE_DOUBLE:
+  case G_TYPE_POINTER:
+    /* These all have normal C type names so they are OK. */
+    return type_name;
+
+  case G_TYPE_STRING:
+    /* A GtkString is really a gchar*. */
+    *is_pointer = TRUE;
+    return "gchar";
+
+  case G_TYPE_ENUM:
+  case G_TYPE_FLAGS:
+    /* We use a gint for both of these. Hopefully a subtype with a decent
+       name will be registered and used instead, as GTK+ does itself. */
+    return "gint";
+
+  case G_TYPE_BOXED:
+    /* The boxed type shouldn't be used itself, only subtypes. Though we
+       return 'gpointer' just in case. */
+    return "gpointer";
+
+  case G_TYPE_PARAM:
+    /* A GParam is really a GParamSpec*. */
+    *is_pointer = TRUE;
+    return "GParamSpec";
+
+#if GLIB_CHECK_VERSION (2, 25, 9)
+  case G_TYPE_VARIANT:
+    *is_pointer = TRUE;
+    return "GVariant";
+#endif
+
+default:
+    break;
+  }
+
+  /* For all GObject subclasses we can use the class name with a "*",
+     e.g. 'GtkWidget *'. */
+  if (g_type_is_a (type, G_TYPE_OBJECT))
+    *is_pointer = TRUE;
+
+  /* Also catch non GObject root types */
+  if (G_TYPE_IS_CLASSED (type))
+    *is_pointer = TRUE;
+
+  /* All boxed subtypes will be pointers as well. */
+  /* Exception: GStrv */
+  if (g_type_is_a (type, G_TYPE_BOXED) &&
+      !g_type_is_a (type, G_TYPE_STRV))
+    *is_pointer = TRUE;
+
+  /* All pointer subtypes will be pointers as well. */
+  if (g_type_is_a (type, G_TYPE_POINTER))
+    *is_pointer = TRUE;
+
+  /* But enums are not */
+  if (g_type_is_a (type, G_TYPE_ENUM) ||
+      g_type_is_a (type, G_TYPE_FLAGS))
+    *is_pointer = FALSE;
+
+  return type_name;
+}
+
+
+/* This outputs the hierarchy of all objects which have been initialized,
+   i.e. by calling their XXX_get_type() initialization function. */
+static void
+output_object_hierarchy (void)
+{
+  FILE *fp;
+  gint i,j;
+  GType root, type;
+  GType root_types[$ntypes] = { G_TYPE_INVALID, };
+
+  fp = fopen (hierarchy_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", hierarchy_filename, g_strerror(errno));
+      return;
+    }
+  output_hierarchy (fp, G_TYPE_OBJECT, 0);
+  output_hierarchy (fp, G_TYPE_INTERFACE, 0);
+
+  for (i=0; object_types[i]; i++) {
+    root = object_types[i];
+    while ((type = g_type_parent (root))) {
+      root = type;
+    }
+    if ((root != G_TYPE_OBJECT) && (root != G_TYPE_INTERFACE)) {
+      for (j=0; root_types[j]; j++) {
+        if (root == root_types[j]) {
+          root = G_TYPE_INVALID; break;
+        }
+      }
+      if(root) {
+        root_types[j] = root;
+        output_hierarchy (fp, root, 0);
+      }
+    }
+  }
+
+  fclose (fp);
+}
+
+static int
+compare_types (const void *a, const void *b)
+{
+  const char *na = g_type_name (*((GType *)a));
+  const char *nb = g_type_name (*((GType *)b));
+
+  return g_strcmp0 (na, nb);
+}
+
+
+/* This is called recursively to output the hierarchy of a object. */
+static void
+output_hierarchy (FILE  *fp,
+                 GType  type,
+                 guint   level)
+{
+  guint i;
+  GType *children;
+  guint n_children;
+
+  if (!type)
+    return;
+
+  for (i = 0; i < level; i++)
+    fprintf (fp, "  ");
+  fprintf (fp, "%s\\n", g_type_name (type));
+
+  children = g_type_children (type, &n_children);
+  qsort (children, n_children, sizeof (GType), compare_types);
+
+
+  for (i=0; i < n_children; i++)
+    output_hierarchy (fp, children[i], level + 1);
+
+  g_free (children);
+}
+
+static void output_object_interfaces (void)
+{
+  guint i;
+  FILE *fp;
+
+  fp = fopen (interfaces_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", interfaces_filename, g_strerror(errno));
+      return;
+    }
+  output_interfaces (fp, G_TYPE_OBJECT);
+
+  for (i = 0; object_types[i]; i++)
+    {
+      if (!g_type_parent (object_types[i]) &&
+          (object_types[i] != G_TYPE_OBJECT) &&
+          G_TYPE_IS_INSTANTIATABLE (object_types[i]))
+        {
+          output_interfaces (fp, object_types[i]);
+        }
+    }
+  fclose (fp);
+}
+
+static void
+output_interfaces (FILE  *fp,
+                  GType  type)
+{
+  guint i;
+  GType *children, *interfaces;
+  guint n_children, n_interfaces;
+
+  if (!type)
+    return;
+
+  interfaces = g_type_interfaces (type, &n_interfaces);
+
+  if (n_interfaces > 0)
+    {
+      fprintf (fp, "%s", g_type_name (type));
+      for (i=0; i < n_interfaces; i++)
+          fprintf (fp, " %s", g_type_name (interfaces[i]));
+      fprintf (fp, "\\n");
+     }
+  g_free (interfaces);
+
+  children = g_type_children (type, &n_children);
+
+  for (i=0; i < n_children; i++)
+    output_interfaces (fp, children[i]);
+
+  g_free (children);
+}
+
+static void output_interface_prerequisites (void)
+{
+  FILE *fp;
+
+  fp = fopen (prerequisites_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", prerequisites_filename, g_strerror(errno));
+      return;
+    }
+  output_prerequisites (fp, G_TYPE_INTERFACE);
+  fclose (fp);
+}
+
+static void
+output_prerequisites (FILE  *fp,
+                     GType  type)
+{
+#if GLIB_CHECK_VERSION(2,1,0)
+  guint i;
+  GType *children, *prerequisites;
+  guint n_children, n_prerequisites;
+
+  if (!type)
+    return;
+
+  prerequisites = g_type_interface_prerequisites (type, &n_prerequisites);
+
+  if (n_prerequisites > 0)
+    {
+      fprintf (fp, "%s", g_type_name (type));
+      for (i=0; i < n_prerequisites; i++)
+          fprintf (fp, " %s", g_type_name (prerequisites[i]));
+      fprintf (fp, "\\n");
+     }
+  g_free (prerequisites);
+
+  children = g_type_children (type, &n_children);
+
+  for (i=0; i < n_children; i++)
+    output_prerequisites (fp, children[i]);
+
+  g_free (children);
+#endif
+}
+
+static void
+output_args (void)
+{
+  FILE *fp;
+  gint i;
+
+  fp = fopen (args_filename, "w");
+  if (fp == NULL)
+    {
+      g_warning ("Couldn't open output file: %s : %s", args_filename, g_strerror(errno));
+      return;
+    }
+
+  for (i = 0; object_types[i]; i++) {
+    output_object_args (fp, object_types[i]);
+  }
+
+  fclose (fp);
+}
+
+static gint
+compare_param_specs (const void *a, const void *b)
+{
+  GParamSpec *spec_a = *(GParamSpec **)a;
+  GParamSpec *spec_b = *(GParamSpec **)b;
+
+  return strcmp (g_param_spec_get_name (spec_a), g_param_spec_get_name (spec_b));
+}
+
+/* Its common to have unsigned properties restricted
+ * to the signed range. Therefore we make this look
+ * a bit nicer by spelling out the max constants.
+ */
+
+/* Don't use "==" with floats, it might trigger a gcc warning.  */
+#define GTKDOC_COMPARE_FLOAT(x, y) (x <= y && x >= y)
+
+static gchar*
+describe_double_constant (gdouble value)
+{
+  gchar *desc;
+
+  if (GTKDOC_COMPARE_FLOAT (value, G_MAXDOUBLE))
+    desc = g_strdup ("G_MAXDOUBLE");
+  else if (GTKDOC_COMPARE_FLOAT (value, G_MINDOUBLE))
+    desc = g_strdup ("G_MINDOUBLE");
+  else if (GTKDOC_COMPARE_FLOAT (value, -G_MAXDOUBLE))
+    desc = g_strdup ("-G_MAXDOUBLE");
+  else if (GTKDOC_COMPARE_FLOAT (value, G_MAXFLOAT))
+    desc = g_strdup ("G_MAXFLOAT");
+  else if (GTKDOC_COMPARE_FLOAT (value, G_MINFLOAT))
+    desc = g_strdup ("G_MINFLOAT");
+  else if (GTKDOC_COMPARE_FLOAT (value, -G_MAXFLOAT))
+    desc = g_strdup ("-G_MAXFLOAT");
+  else{
+    /* make sure floats are output with a decimal dot irrespective of
+    * current locale. Use formatd since we want human-readable numbers
+    * and do not need the exact same bit representation when deserialising */
+    desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE);
+    g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g", value);
+  }
+
+  return desc;
+}
+
+static gchar*
+describe_signed_constant (gsize size, gint64 value)
+{
+  gchar *desc = NULL;
+
+  switch (size) {
+    case 8:
+      if (value == G_MAXINT64)
+        desc = g_strdup ("G_MAXINT64");
+      else if (value == G_MININT64)
+        desc = g_strdup ("G_MININT64");
+      /* fall through */
+    case 4:
+      if (sizeof (int) == 4) {
+        if (value == G_MAXINT)
+          desc = g_strdup ("G_MAXINT");
+        else if (value == G_MININT)
+          desc = g_strdup ("G_MININT");
+        else if (value == (gint64)G_MAXUINT)
+          desc = g_strdup ("G_MAXUINT");
+      }
+      if (value == G_MAXLONG)
+        desc = g_strdup ("G_MAXLONG");
+      else if (value == G_MINLONG)
+        desc = g_strdup ("G_MINLONG");
+      else if (value == (gint64)G_MAXULONG)
+        desc = g_strdup ("G_MAXULONG");
+      /* fall through */
+    case 2:
+      if (sizeof (int) == 2) {
+        if (value == G_MAXINT)
+          desc = g_strdup ("G_MAXINT");
+        else if (value == G_MININT)
+          desc = g_strdup ("G_MININT");
+        else if (value == (gint64)G_MAXUINT)
+          desc = g_strdup ("G_MAXUINT");
+      }
+      break;
+    default:
+      break;
+  }
+  if (!desc)
+    desc = g_strdup_printf ("%" G_GINT64_FORMAT, value);
+
+  return desc;
+}
+
+static gchar*
+describe_unsigned_constant (gsize size, guint64 value)
+{
+  gchar *desc = NULL;
+
+  switch (size) {
+    case 8:
+      if (value == G_MAXINT64)
+        desc = g_strdup ("G_MAXINT64");
+      else if (value == G_MAXUINT64)
+        desc = g_strdup ("G_MAXUINT64");
+      /* fall through */
+    case 4:
+      if (sizeof (int) == 4) {
+        if (value == (guint64)G_MAXINT)
+          desc = g_strdup ("G_MAXINT");
+        else if (value == G_MAXUINT)
+          desc = g_strdup ("G_MAXUINT");
+      }
+      if (value == (guint64)G_MAXLONG)
+        desc = g_strdup ("G_MAXLONG");
+      else if (value == G_MAXULONG)
+        desc = g_strdup ("G_MAXULONG");
+      /* fall through */
+    case 2:
+      if (sizeof (int) == 2) {
+        if (value == (guint64)G_MAXINT)
+          desc = g_strdup ("G_MAXINT");
+        else if (value == G_MAXUINT)
+          desc = g_strdup ("G_MAXUINT");
+      }
+      break;
+    default:
+      break;
+  }
+  if (!desc)
+    desc = g_strdup_printf ("%" G_GUINT64_FORMAT, value);
+
+  return desc;
+}
+
+static gchar*
+describe_type (GParamSpec *spec)
+{
+  gchar *desc;
+  gchar *lower;
+  gchar *upper;
+
+  if (G_IS_PARAM_SPEC_CHAR (spec))
+    {
+      GParamSpecChar *pspec = G_PARAM_SPEC_CHAR (spec);
+
+      lower = describe_signed_constant (sizeof(gchar), pspec->minimum);
+      upper = describe_signed_constant (sizeof(gchar), pspec->maximum);
+      if (pspec->minimum == G_MININT8 && pspec->maximum == G_MAXINT8)
+       desc = g_strdup ("");
+      else if (pspec->minimum == G_MININT8)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXINT8)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_UCHAR (spec))
+    {
+      GParamSpecUChar *pspec = G_PARAM_SPEC_UCHAR (spec);
+
+      lower = describe_unsigned_constant (sizeof(guchar), pspec->minimum);
+      upper = describe_unsigned_constant (sizeof(guchar), pspec->maximum);
+      if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT8)
+       desc = g_strdup ("");
+      else if (pspec->minimum == 0)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXUINT8)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_INT (spec))
+    {
+      GParamSpecInt *pspec = G_PARAM_SPEC_INT (spec);
+
+      lower = describe_signed_constant (sizeof(gint), pspec->minimum);
+      upper = describe_signed_constant (sizeof(gint), pspec->maximum);
+      if (pspec->minimum == G_MININT && pspec->maximum == G_MAXINT)
+       desc = g_strdup ("");
+      else if (pspec->minimum == G_MININT)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXINT)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_UINT (spec))
+    {
+      GParamSpecUInt *pspec = G_PARAM_SPEC_UINT (spec);
+
+      lower = describe_unsigned_constant (sizeof(guint), pspec->minimum);
+      upper = describe_unsigned_constant (sizeof(guint), pspec->maximum);
+      if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT)
+       desc = g_strdup ("");
+      else if (pspec->minimum == 0)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXUINT)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_LONG (spec))
+    {
+      GParamSpecLong *pspec = G_PARAM_SPEC_LONG (spec);
+
+      lower = describe_signed_constant (sizeof(glong), pspec->minimum);
+      upper = describe_signed_constant (sizeof(glong), pspec->maximum);
+      if (pspec->minimum == G_MINLONG && pspec->maximum == G_MAXLONG)
+       desc = g_strdup ("");
+      else if (pspec->minimum == G_MINLONG)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXLONG)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_ULONG (spec))
+    {
+      GParamSpecULong *pspec = G_PARAM_SPEC_ULONG (spec);
+
+      lower = describe_unsigned_constant (sizeof(gulong), pspec->minimum);
+      upper = describe_unsigned_constant (sizeof(gulong), pspec->maximum);
+      if (pspec->minimum == 0 && pspec->maximum == G_MAXULONG)
+       desc = g_strdup ("");
+      else if (pspec->minimum == 0)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXULONG)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_INT64 (spec))
+    {
+      GParamSpecInt64 *pspec = G_PARAM_SPEC_INT64 (spec);
+
+      lower = describe_signed_constant (sizeof(gint64), pspec->minimum);
+      upper = describe_signed_constant (sizeof(gint64), pspec->maximum);
+      if (pspec->minimum == G_MININT64 && pspec->maximum == G_MAXINT64)
+       desc = g_strdup ("");
+      else if (pspec->minimum == G_MININT64)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXINT64)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_UINT64 (spec))
+    {
+      GParamSpecUInt64 *pspec = G_PARAM_SPEC_UINT64 (spec);
+
+      lower = describe_unsigned_constant (sizeof(guint64), pspec->minimum);
+      upper = describe_unsigned_constant (sizeof(guint64), pspec->maximum);
+      if (pspec->minimum == 0 && pspec->maximum == G_MAXUINT64)
+       desc = g_strdup ("");
+      else if (pspec->minimum == 0)
+       desc = g_strdup_printf ("<= %s", upper);
+      else if (pspec->maximum == G_MAXUINT64)
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_FLOAT (spec))
+    {
+      GParamSpecFloat *pspec = G_PARAM_SPEC_FLOAT (spec);
+
+      lower = describe_double_constant (pspec->minimum);
+      upper = describe_double_constant (pspec->maximum);
+      if (GTKDOC_COMPARE_FLOAT (pspec->minimum, -G_MAXFLOAT))
+       {
+         if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXFLOAT))
+           desc = g_strdup ("");
+         else
+           desc = g_strdup_printf ("<= %s", upper);
+       }
+      else if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXFLOAT))
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+  else if (G_IS_PARAM_SPEC_DOUBLE (spec))
+    {
+      GParamSpecDouble *pspec = G_PARAM_SPEC_DOUBLE (spec);
+
+      lower = describe_double_constant (pspec->minimum);
+      upper = describe_double_constant (pspec->maximum);
+      if (GTKDOC_COMPARE_FLOAT (pspec->minimum, -G_MAXDOUBLE))
+       {
+         if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXDOUBLE))
+           desc = g_strdup ("");
+         else
+           desc = g_strdup_printf ("<= %s", upper);
+       }
+      else if (GTKDOC_COMPARE_FLOAT (pspec->maximum, G_MAXDOUBLE))
+       desc = g_strdup_printf (">= %s", lower);
+      else
+       desc = g_strdup_printf ("[%s,%s]", lower, upper);
+      g_free (lower);
+      g_free (upper);
+    }
+#if GLIB_CHECK_VERSION (2, 12, 0)
+  else if (G_IS_PARAM_SPEC_GTYPE (spec))
+    {
+      GParamSpecGType *pspec = G_PARAM_SPEC_GTYPE (spec);
+      gboolean is_pointer;
+
+      desc = g_strdup (get_type_name (pspec->is_a_type, &is_pointer));
+    }
+#endif
+#if GLIB_CHECK_VERSION (2, 25, 9)
+  else if (G_IS_PARAM_SPEC_VARIANT (spec))
+    {
+      GParamSpecVariant *pspec = G_PARAM_SPEC_VARIANT (spec);
+      gchar *variant_type;
+
+      variant_type = g_variant_type_dup_string (pspec->type);
+      desc = g_strdup_printf ("GVariant<%s>", variant_type);
+      g_free (variant_type);
+    }
+#endif
+  else
+    {
+      desc = g_strdup ("");
+    }
+
+  return desc;
+}
+
+static gchar*
+describe_default (GParamSpec *spec)
+{
+  gchar *desc;
+
+  if (G_IS_PARAM_SPEC_CHAR (spec))
+    {
+      GParamSpecChar *pspec = G_PARAM_SPEC_CHAR (spec);
+
+      desc = g_strdup_printf ("%d", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_UCHAR (spec))
+    {
+      GParamSpecUChar *pspec = G_PARAM_SPEC_UCHAR (spec);
+
+      desc = g_strdup_printf ("%u", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_BOOLEAN (spec))
+    {
+      GParamSpecBoolean *pspec = G_PARAM_SPEC_BOOLEAN (spec);
+
+      desc = g_strdup_printf ("%s", pspec->default_value ? "TRUE" : "FALSE");
+    }
+  else if (G_IS_PARAM_SPEC_INT (spec))
+    {
+      GParamSpecInt *pspec = G_PARAM_SPEC_INT (spec);
+
+      desc = g_strdup_printf ("%d", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_UINT (spec))
+    {
+      GParamSpecUInt *pspec = G_PARAM_SPEC_UINT (spec);
+
+      desc = g_strdup_printf ("%u", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_LONG (spec))
+    {
+      GParamSpecLong *pspec = G_PARAM_SPEC_LONG (spec);
+
+      desc = g_strdup_printf ("%ld", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_LONG (spec))
+    {
+      GParamSpecULong *pspec = G_PARAM_SPEC_ULONG (spec);
+
+      desc = g_strdup_printf ("%lu", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_INT64 (spec))
+    {
+      GParamSpecInt64 *pspec = G_PARAM_SPEC_INT64 (spec);
+
+      desc = g_strdup_printf ("%" G_GINT64_FORMAT, pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_UINT64 (spec))
+    {
+      GParamSpecUInt64 *pspec = G_PARAM_SPEC_UINT64 (spec);
+
+      desc = g_strdup_printf ("%" G_GUINT64_FORMAT, pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_UNICHAR (spec))
+    {
+      GParamSpecUnichar *pspec = G_PARAM_SPEC_UNICHAR (spec);
+
+      if (g_unichar_isprint (pspec->default_value))
+       desc = g_strdup_printf ("'%c'", pspec->default_value);
+      else
+       desc = g_strdup_printf ("%u", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_ENUM (spec))
+    {
+      GParamSpecEnum *pspec = G_PARAM_SPEC_ENUM (spec);
+
+      GEnumValue *value = g_enum_get_value (pspec->enum_class, pspec->default_value);
+      if (value)
+       desc = g_strdup_printf ("%s", value->value_name);
+      else
+       desc = g_strdup_printf ("%d", pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_FLAGS (spec))
+    {
+      GParamSpecFlags *pspec = G_PARAM_SPEC_FLAGS (spec);
+      guint default_value;
+      GString *acc;
+
+      default_value = pspec->default_value;
+      acc = g_string_new ("");
+
+      while (default_value)
+       {
+         GFlagsValue *value = g_flags_get_first_value (pspec->flags_class, default_value);
+
+         if (!value)
+           break;
+
+         if (acc->len > 0)
+           g_string_append (acc, "|");
+         g_string_append (acc, value->value_name);
+
+         default_value &= ~value->value;
+       }
+
+      if (default_value == 0)
+       desc = g_string_free (acc, FALSE);
+      else
+       {
+         desc = g_strdup_printf ("%d", pspec->default_value);
+         g_string_free (acc, TRUE);
+       }
+    }
+  else if (G_IS_PARAM_SPEC_FLOAT (spec))
+    {
+      GParamSpecFloat *pspec = G_PARAM_SPEC_FLOAT (spec);
+
+      /* make sure floats are output with a decimal dot irrespective of
+       * current locale. Use formatd since we want human-readable numbers
+       * and do not need the exact same bit representation when deserialising */
+      desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE);
+      g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g",
+          pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_DOUBLE (spec))
+    {
+      GParamSpecDouble *pspec = G_PARAM_SPEC_DOUBLE (spec);
+
+      /* make sure floats are output with a decimal dot irrespective of
+       * current locale. Use formatd since we want human-readable numbers
+       * and do not need the exact same bit representation when deserialising */
+      desc = g_malloc0 (G_ASCII_DTOSTR_BUF_SIZE);
+      g_ascii_formatd (desc, G_ASCII_DTOSTR_BUF_SIZE, "%g",
+          pspec->default_value);
+    }
+  else if (G_IS_PARAM_SPEC_STRING (spec))
+    {
+      GParamSpecString *pspec = G_PARAM_SPEC_STRING (spec);
+
+      if (pspec->default_value)
+       {
+         gchar *esc = g_strescape (pspec->default_value, NULL);
+
+         desc = g_strdup_printf ("\\"%s\\"", esc);
+
+         g_free (esc);
+       }
+      else
+       desc = g_strdup_printf ("NULL");
+    }
+  else
+    {
+      desc = g_strdup ("");
+    }
+
+  return desc;
+}
+
+
+static void
+output_object_args (FILE *fp, GType object_type)
+{
+  gpointer class;
+  const gchar *object_class_name;
+  guint arg;
+  gchar flags[16], *pos;
+  GParamSpec **properties;
+  guint n_properties;
+  gboolean child_prop;
+  gboolean style_prop;
+  gboolean is_pointer;
+  const gchar *type_name;
+  gchar *type_desc;
+  gchar *default_value;
+
+  if (G_TYPE_IS_OBJECT (object_type))
+    {
+      class = g_type_class_peek (object_type);
+      if (!class)
+       return;
+
+      properties = g_object_class_list_properties (class, &n_properties);
+    }
+#if GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 3)
+  else if (G_TYPE_IS_INTERFACE (object_type))
+    {
+      class = g_type_default_interface_ref (object_type);
+
+      if (!class)
+       return;
+
+      properties = g_object_interface_list_properties (class, &n_properties);
+    }
+#endif
+  else
+    return;
+
+  object_class_name = g_type_name (object_type);
+
+  child_prop = FALSE;
+  style_prop = FALSE;
+
+  while (TRUE) {
+    qsort (properties, n_properties, sizeof (GParamSpec *), compare_param_specs);
+    for (arg = 0; arg < n_properties; arg++)
+      {
+        GParamSpec *spec = properties[arg];
+        const gchar *nick, *blurb, *dot;
+
+        if (spec->owner_type != object_type)
+          continue;
+
+        pos = flags;
+        /* We use one-character flags for simplicity. */
+        if (child_prop && !style_prop)
+         *pos++ = 'c';
+        if (style_prop)
+         *pos++ = 's';
+        if (spec->flags & G_PARAM_READABLE)
+         *pos++ = 'r';
+        if (spec->flags & G_PARAM_WRITABLE)
+         *pos++ = 'w';
+        if (spec->flags & G_PARAM_CONSTRUCT)
+         *pos++ = 'x';
+        if (spec->flags & G_PARAM_CONSTRUCT_ONLY)
+         *pos++ = 'X';
+        *pos = 0;
+
+        nick = g_param_spec_get_nick (spec);
+        blurb = g_param_spec_get_blurb (spec);
+
+        dot = "";
+        if (blurb) {
+          int str_len = strlen (blurb);
+          if (str_len > 0  && blurb[str_len - 1] != '.')
+            dot = ".";
+        }
+
+       type_desc = describe_type (spec);
+       default_value = describe_default (spec);
+       type_name = get_type_name (spec->value_type, &is_pointer);
+        fprintf (fp, "<ARG>\\n<NAME>%s::%s</NAME>\\n<TYPE>%s%s</TYPE>\\n<RANGE>%s</RANGE>\\n<FLAGS>%s</FLAGS>\\n<NICK>%s</NICK>\\n<BLURB>%s%s</BLURB>\\n<DEFAULT>%s</DEFAULT>\\n</ARG>\\n\\n",
+                object_class_name, g_param_spec_get_name (spec), type_name, is_pointer ? "*" : "", type_desc, flags, nick ? nick : "(null)", blurb ? blurb : "(null)", dot, default_value);
+       g_free (type_desc);
+       g_free (default_value);
+      }
+
+    g_free (properties);
+
+#ifdef GTK_IS_CONTAINER_CLASS
+    if (!child_prop && GTK_IS_CONTAINER_CLASS (class)) {
+      properties = gtk_container_class_list_child_properties (class, &n_properties);
+      child_prop = TRUE;
+      continue;
+    }
+#endif
+
+#ifdef GTK_IS_CELL_AREA_CLASS
+    if (!child_prop && GTK_IS_CELL_AREA_CLASS (class)) {
+      properties = gtk_cell_area_class_list_cell_properties (class, &n_properties);
+      child_prop = TRUE;
+      continue;
+    }
+#endif
+
+#ifdef GTK_IS_WIDGET_CLASS
+#if GTK_CHECK_VERSION(2,1,0)
+    if (!style_prop && GTK_IS_WIDGET_CLASS (class)) {
+      properties = gtk_widget_class_list_style_properties (GTK_WIDGET_CLASS (class), &n_properties);
+      style_prop = TRUE;
+      continue;
+    }
+#endif
+#endif
+
+    break;
+  }
+}
+EOT
+
+close OUTPUT;
+
+# Compile and run our file
+
+$CC = $ENV{CC} ? $ENV{CC} : "gcc";
+$LD = $ENV{LD} ? $ENV{LD} : $CC;
+$CFLAGS = $ENV{CFLAGS} ? "$ENV{CFLAGS}" : "";
+$LDFLAGS = $ENV{LDFLAGS} ? $ENV{LDFLAGS} : "";
+
+my $o_file;
+if ($CC =~ /libtool/) {
+  $o_file  = "$MODULE-scan.lo"
+} else {
+  $o_file = "$MODULE-scan.o"
+}
+
+my $stdout="";
+if (!defined($VERBOSE) or $VERBOSE eq "0") {
+    $stdout=">/dev/null";
+}
+
+# Compiling scanner
+$command = "$CC $stdout $CFLAGS -c -o $o_file $MODULE-scan.c";
+system("($command)") == 0 or die "Compilation of scanner failed: $!\n";
+
+# Linking scanner
+$command = "$LD $stdout -o $MODULE-scan $o_file $LDFLAGS";
+system($command) == 0 or die "Linking of scanner failed: $!\n";
+
+# Running scanner $MODULE-scan ";
+system("sh -c ./$MODULE-scan") == 0 or die "Scan failed: $!\n";
+
+if (!defined($ENV{"GTK_DOC_KEEP_INTERMEDIATE"})) {
+  unlink "./$MODULE-scan.c", "./$MODULE-scan.o", "./$MODULE-scan.lo", "./$MODULE-scan";
+}
+
+&UpdateFileIfChanged ($old_hierarchy_filename, $new_hierarchy_filename, 0);
+# we will merge these in scangobj-merge.py
+#&UpdateFileIfChanged ($old_interfaces_filename, $new_interfaces_filename, 0);
+#&UpdateFileIfChanged ($old_prerequisites_filename, $new_prerequisites_filename, 0);
+#&UpdateFileIfChanged ($old_signals_filename, $new_signals_filename, 0);
+#&UpdateFileIfChanged ($old_args_filename, $new_args_filename, 0);
+
diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak
new file mode 100644 (file)
index 0000000..8cc42e7
--- /dev/null
@@ -0,0 +1,387 @@
+# This is an include file specifically tuned for building documentation
+# for GStreamer plug-ins
+
+help:
+       @echo
+       @echo "If you are a doc maintainer, run 'make update' to update"
+       @echo "the documentation files maintained in git"
+       @echo
+       @echo Other useful make targets:
+       @echo
+       @echo  check-inspected-versions: make sure the inspected plugin info
+       @echo                            is up to date before a release
+       @echo
+
+# update the stuff maintained by doc maintainers
+update:
+       $(MAKE) scanobj-update
+       $(MAKE) check-outdated-docs
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+# thomas: make docs parallel installable
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@
+
+MAINTAINER_DOC_STAMPS =                        \
+       scanobj-build.stamp
+
+EXTRA_DIST =                           \
+       $(MAINTAINER_DOC_STAMPS)                \
+       $(srcdir)/inspect/*.xml         \
+       $(SCANOBJ_FILES)                \
+       $(content_files)                \
+       $(extra_files)                  \
+       $(HTML_IMAGES)                  \
+       $(DOC_MAIN_SGML_FILE)   \
+       $(DOC_OVERRIDES)                \
+       $(DOC_MODULE)-sections.txt
+
+# we don't add scanobj-build.stamp here since they are built manually by docs
+# maintainers and result is commited to git
+DOC_STAMPS =                           \
+       scan-build.stamp                \
+       tmpl-build.stamp                \
+       sgml-build.stamp                \
+       html-build.stamp                \
+       scan.stamp                      \
+       tmpl.stamp                      \
+       sgml.stamp                      \
+       html.stamp
+
+# files generated/updated by gtkdoc-scangobj
+SCANOBJ_FILES =                                \
+       $(DOC_MODULE).args              \
+       $(DOC_MODULE).hierarchy         \
+       $(DOC_MODULE).interfaces        \
+       $(DOC_MODULE).prerequisites     \
+       $(DOC_MODULE).signals           \
+       $(DOC_MODULE).types
+
+SCANOBJ_FILES_O =                      \
+       .libs/$(DOC_MODULE)-scan.o
+
+# files generated/updated by gtkdoc-scan
+SCAN_FILES =                           \
+       $(DOC_MODULE)-sections.txt      \
+       $(DOC_MODULE)-overrides.txt     \
+       $(DOC_MODULE)-decl.txt          \
+       $(DOC_MODULE)-decl-list.txt
+
+
+REPORT_FILES = \
+       $(DOC_MODULE)-undocumented.txt \
+       $(DOC_MODULE)-undeclared.txt \
+       $(DOC_MODULE)-unused.txt
+
+CLEANFILES = \
+       $(SCANOBJ_FILES_O) \
+       $(REPORT_FILES) \
+       $(DOC_STAMPS) \
+       inspect-registry.xml
+
+INSPECT_DIR = inspect
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+
+### inspect GStreamer plug-ins; done by documentation maintainer ###
+
+# only look at the plugins in this module when building inspect .xml stuff
+INSPECT_REGISTRY=$(top_builddir)/docs/plugins/inspect-registry.xml
+INSPECT_ENVIRONMENT=\
+       LC_ALL=C \
+       GST_PLUGIN_SYSTEM_PATH= \
+       GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \
+       GST_REGISTRY=$(INSPECT_REGISTRY) \
+       PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+       $(INSPECT_EXTRA_ENVIRONMENT)
+
+#### scan gobjects; done by documentation maintainer ####
+scanobj-update:
+       -rm scanobj-build.stamp
+       $(MAKE) scanobj-build.stamp
+
+# gstdoc-scanobj produces 5 output files (.new)
+# scangobj-merge.py merges them into the file which we commit later
+# TODO: also merge the hierarchy
+scanobj-build.stamp: $(SCANOBJ_DEPS) $(basefiles)
+       @echo "  DOC   Introspecting gobjects"
+       @if test x"$(srcdir)" != x. ; then                              \
+           for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+           do                                                          \
+               if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+           done;                                                       \
+       fi;                                                             \
+       mkdir -p $(INSPECT_DIR); \
+       scanobj_options=""; \
+       if test "x$(V)" = "x1"; then \
+           scanobj_options="--verbose"; \
+       fi; \
+       $(INSPECT_ENVIRONMENT)                                  \
+       CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"                             \
+       CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)"   \
+       LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"                             \
+       $(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)"     \
+           --module=$(DOC_MODULE) --source=$(PACKAGE) --inspect-dir=$(INSPECT_DIR) &&          \
+           echo "  DOC   Merging introspection data" && \
+           $(PYTHON)                                           \
+           $(top_srcdir)/common/scangobj-merge.py $(DOC_MODULE);       \
+       if test x"$(srcdir)" != x. ; then                               \
+           for f in $(SCANOBJ_FILES);                                  \
+           do                                                          \
+               cmp -s ./$$f $(srcdir)/$$f || cp ./$$f $(srcdir)/ ;             \
+           done;                                                       \
+       fi;                                                             \
+       touch scanobj-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(SCANOBJ_FILES_O): scan-build.stamp
+       @true
+
+### scan headers; done on every build ###
+scan-build.stamp: $(HFILE_GLOB) $(EXTRA_HFILES) $(basefiles) scanobj-build.stamp
+       @echo '  DOC   Scanning header files'
+       @if test x"$(srcdir)" != x. ; then                              \
+           for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+           do                                                          \
+               if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+           done;                                                       \
+       fi
+       @_source_dir='' ;                                               \
+       for i in $(DOC_SOURCE_DIR) ; do                                 \
+           _source_dir="$${_source_dir} --source-dir=$$i" ;            \
+       done ;                                                          \
+       gtkdoc-scan                                                     \
+           $(SCAN_OPTIONS) $(EXTRA_HFILES)                             \
+           --module=$(DOC_MODULE)                                      \
+           $${_source_dir}                                             \
+           --ignore-headers="$(IGNORE_HFILES)";                        \
+       touch scan-build.stamp
+
+#### update templates; done on every build ####
+
+# in a non-srcdir build, we need to copy files from the previous step
+# and the files from previous runs of this step
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
+       @echo '  DOC   Rebuilding template files'
+       @if test x"$(srcdir)" != x. ; then                              \
+           for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+           do                                                          \
+               if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+           done;                                                       \
+       fi
+       @gtkdoc-mktmpl --module=$(DOC_MODULE)
+       @$(PYTHON) \
+               $(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl
+       @touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+       @true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
+       @echo '  DOC   Building XML'
+       @-mkdir -p xml
+       @for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \
+           xsltproc --stringparam module $(MODULE) \
+               $(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
+       @for f in $(EXAMPLE_CFILES); do \
+               $(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
+       @gtkdoc-mkdb \
+               --module=$(DOC_MODULE) \
+               --source-dir=$(DOC_SOURCE_DIR) \
+                --expand-content-files="$(expand_content_files)" \
+               --main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
+               --output-format=xml \
+               --ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \
+               $(MKDB_OPTIONS)
+       @cp ../version.entities xml
+       @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+       @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+       @echo '  DOC   Building HTML'
+       @rm -rf html
+       @mkdir html
+       @cp $(srcdir)/$(DOC_MAIN_SGML_FILE) html
+       @for f in $(content_files); do cp $(srcdir)/$$f html; done
+       @cp -pr xml html
+       @cp ../version.entities html
+       @mkhtml_options=""; \
+       gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+       if test "$(?)" = "0"; then \
+         if test "x$(V)" = "x1"; then \
+           mkhtml_options="$$mkhtml_options --verbose"; \
+         fi; \
+       fi; \
+       cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE)
+       @mv html/index.sgml html/index.sgml.bak
+       @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_MAJORMINOR@\//g" html/index.sgml.bak >html/index.sgml
+       @rm -f html/index.sgml.bak
+       @rm -f html/$(DOC_MAIN_SGML_FILE)
+       @rm -rf html/xml
+       @rm -f html/version.entities
+       @test "x$(HTML_IMAGES)" = "x" || for i in "" $(HTML_IMAGES) ; do \
+           if test "$$i" != ""; then cp $(srcdir)/$$i html ; fi; done
+       @echo '  DOC   Fixing cross-references'
+       @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+       @touch html-build.stamp
+
+clean-local-gtkdoc:
+       @rm -rf xml tmpl html
+# clean files copied for nonsrcdir templates build
+       @if test x"$(srcdir)" != x. ; then \
+           rm -rf $(SCANOBJ_FILES) $(SCAN_FILES) $(REPORT_FILES) \
+               $(MAINTAINER_DOC_STAMPS); \
+       fi
+else
+all-local:
+clean-local-gtkdoc:
+endif
+
+clean-local: clean-local-gtkdoc
+       @rm -f *~ *.bak
+       @rm -rf .libs
+
+distclean-local:
+       @rm -f $(REPORT_FILES) \
+               $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+       @rm -rf tmpl/*.sgml.bak
+       @rm -f $(DOC_MODULE).hierarchy
+       @rm -f *.stamp || true
+       @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+           rm -f $(DOC_MODULE)-docs.sgml ; \
+           rm -f $(DOC_MODULE).types ; \
+           rm -f $(DOC_MODULE).interfaces ; \
+           rm -f $(DOC_MODULE)-overrides.txt ; \
+           rm -f $(DOC_MODULE).prerequisites ; \
+           rm -f $(DOC_MODULE)-sections.txt ; \
+           rm -rf tmpl/*.sgml ; \
+           rm -rf $(INSPECT_DIR); \
+       fi
+       @rm -rf *.o
+
+MAINTAINERCLEANFILES = $(MAINTAINER_DOC_STAMPS)
+
+# thomas: make docs parallel installable; devhelp requires majorminor too
+install-data-local:
+       (installfiles=`echo $(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css`; \
+       if test "$$installfiles" = '$(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css'; \
+       then echo '-- Nothing to install' ; \
+       else \
+         $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+         for i in $$installfiles; do \
+           echo '-- Installing '$$i ; \
+           $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+         done; \
+         pngfiles=`echo ./html/*.png`; \
+         if test "$$pngfiles" != './html/*.png'; then \
+           for i in $$pngfiles; do \
+             echo '-- Installing '$$i ; \
+             $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+           done; \
+         fi; \
+         echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \
+         if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \
+                   $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \
+                   $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@.devhelp2; \
+         fi; \
+         (which gtkdoc-rebase >/dev/null && \
+           gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR)) || true ; \
+       fi)
+uninstall-local:
+       if test -d $(DESTDIR)$(TARGET_DIR); then \
+         rm -rf $(DESTDIR)$(TARGET_DIR)/*; \
+         rmdir -p $(DESTDIR)$(TARGET_DIR) 2>/dev/null || true; \
+       else \
+         echo '-- Nothing to uninstall' ; \
+       fi;
+
+#
+# Checks
+#
+if ENABLE_GTK_DOC
+check-hierarchy: $(DOC_MODULE).hierarchy
+       @if grep '      ' $(DOC_MODULE).hierarchy; then \
+           echo "$(DOC_MODULE).hierarchy contains tabs, please fix"; \
+           /bin/false; \
+       fi
+
+check: check-hierarchy
+endif
+
+# wildcard is apparently not portable to other makes, hence the use of find
+inspect_files = $(shell find $(srcdir)/$(INSPECT_DIR) -name '*.xml')
+
+check-inspected-versions:
+       @echo Checking plugin versions of inspected plugin data ...; \
+       fail=0 ; \
+       for each in $(inspect_files) ; do \
+         if (grep -H '<version>' $$each | grep -v '<version>$(VERSION)'); then \
+           echo $$each should be fixed to say version $(VERSION) or be removed ; \
+           echo "sed -i -e 's/<version.*version>/<version>$(VERSION)<\/version>/'" $$each; \
+           echo ; \
+           fail=1; \
+         fi ; \
+       done ; \
+       exit $$fail
+
+check-outdated-docs:
+       $(AM_V_GEN)echo Checking for outdated plugin inspect data ...; \
+       fail=0 ; \
+       if [ -d $(top_srcdir)/.git/ ]; then \
+         files=`find $(srcdir)/inspect/ -name '*xml'`; \
+         for f in $$files; do \
+           ver=`grep '<version>$(PACKAGE_VERSION)</version>' $$f`; \
+           if test "x$$ver" = "x"; then \
+             plugin=`echo $$f | sed -e 's/^.*plugin-//' -e 's/.xml//'`; \
+             # echo "Checking $$plugin $$f"; \
+             pushd "$(top_srcdir)" >/dev/null; \
+             pinit=`git grep -A3 GST_PLUGIN_DEFINE -- ext/ gst/ sys/ | grep "\"$$plugin\""`; \
+             popd >/dev/null; \
+             # echo "[$$pinit]"; \
+             if test "x$$pinit" = "x"; then \
+               printf " **** outdated docs for plugin %-15s: %s\n" $$plugin $$f; \
+               fail=1; \
+             fi; \
+           fi; \
+         done; \
+       fi ; \
+       exit $$fail
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+       @echo "*** gtk-doc must be installed and enabled in order to make dist"
+       @false
+endif
+
+# FIXME: decide whether we want to dist generated html or not
+# also this only works, if the project has been build before
+# we could dist html only if its there, but that might lead to missing html in
+# tarballs
+dist-hook: dist-check-gtkdoc dist-hook-local
+       mkdir $(distdir)/html
+       cp html/* $(distdir)/html
+       -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+       -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+       cd $(distdir) && rm -f $(DISTCLEANFILES)
+       -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs check-outdated-docs inspect
+
+# avoid spurious build errors when distchecking with -jN
+.NOTPARALLEL:
diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
new file mode 100644 (file)
index 0000000..dd2b5a5
--- /dev/null
@@ -0,0 +1,231 @@
+###########################################################################
+# Everything below here is generic and you shouldn't need to change it.
+###########################################################################
+# thomas: except of course that we did
+
+# thomas: copied from glib-2
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+# thomas: make docs parallel installable
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@
+
+EXTRA_DIST =                           \
+       $(content_files)                \
+       $(extra_files)                  \
+       $(HTML_IMAGES)                  \
+       $(DOC_MAIN_SGML_FILE)           \
+       $(DOC_MODULE).types             \
+       $(DOC_OVERRIDES)                \
+       $(DOC_MODULE)-sections.txt
+
+DOC_STAMPS =                           \
+       setup-build.stamp               \
+       scan-build.stamp                \
+       sgml-build.stamp                \
+       html-build.stamp                \
+       sgml.stamp              \
+       html.stamp
+
+SCANOBJ_FILES =                                \
+       $(DOC_MODULE).args              \
+       $(DOC_MODULE).hierarchy         \
+       $(DOC_MODULE).interfaces                \
+       $(DOC_MODULE).prerequisites     \
+       $(DOC_MODULE).signals           \
+       .libs/$(DOC_MODULE)-scan.o
+
+REPORT_FILES = \
+       $(DOC_MODULE)-undocumented.txt \
+       $(DOC_MODULE)-undeclared.txt \
+       $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) doc-registry.xml
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+
+#### setup ####
+
+setup-build.stamp: $(content_files)
+       -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+           echo '  DOC   Preparing build'; \
+           files=`echo $(DOC_MAIN_SGML_FILE) $(DOC_OVERRIDES) $(DOC_MODULE)-sections.txt $(DOC_MODULE).types $(content_files)`; \
+           if test "x$$files" != "x" ; then \
+               for file in $$files ; do \
+                   test -f $(abs_srcdir)/$$file && \
+                       cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \
+               done; \
+           fi; \
+       fi
+       @touch setup-build.stamp
+
+#### scan ####
+
+# in the case of non-srcdir builds, the built gst directory gets added
+# to gtk-doc scanning; but only then, to avoid duplicates
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+       @echo '  DOC   Scanning header files'
+       @_source_dir='' ;                                               \
+       for i in $(DOC_SOURCE_DIR) ; do                                 \
+           _source_dir="$${_source_dir} --source-dir=$$i" ;            \
+       done ;                                                          \
+       gtkdoc-scan                                                     \
+               $(SCAN_OPTIONS) $(EXTRA_HFILES)                         \
+               --module=$(DOC_MODULE)                                  \
+               $${_source_dir}                                         \
+               --ignore-headers="$(IGNORE_HFILES)"
+       @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null; then      \
+           echo "  DOC   Introspecting gobjects"; \
+           GST_PLUGIN_SYSTEM_PATH=`cd $(top_builddir) && pwd`          \
+           GST_PLUGIN_PATH=                                            \
+           GST_REGISTRY=doc-registry.xml                               \
+           $(GTKDOC_EXTRA_ENVIRONMENT)                                 \
+           CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"                         \
+           CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)"                         \
+           LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"                         \
+           gtkdoc-scangobj --type-init-func="gst_init(NULL,NULL)"      \
+               --module=$(DOC_MODULE) ;                                \
+       else                                                            \
+           for i in $(SCANOBJ_FILES) ; do                              \
+              test -f $$i || touch $$i ;                               \
+           done                                                        \
+       fi
+       @touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+       @true
+
+#### xml ####
+
+sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
+       @echo '  DOC   Building XML'
+       @gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+       @cp ../version.entities xml
+       @touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+       @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+       @echo '  DOC   Building HTML'
+       @rm -rf html
+       @mkdir html
+       @cp -pr xml html
+       @cp ../version.entities ./
+       @mkhtml_options=""; \
+       gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+       if test "$(?)" = "0"; then \
+         if test "x$(V)" = "x1"; then \
+           mkhtml_options="$$mkhtml_options --verbose"; \
+         fi; \
+       fi; \
+       @gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-path"; \
+       if test "$(?)" = "0"; then \
+         mkhtml_options=--path="$(abs_srcdir)"; \
+       fi; \
+       cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+       @mv html/index.sgml html/index.sgml.bak
+       @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_MAJORMINOR@\//g" html/index.sgml.bak >html/index.sgml
+       @rm -f html/index.sgml.bak
+       @rm -rf html/xml
+       @rm -f version.entities
+       @test "x$(HTML_IMAGES)" = "x" ||  ( cd $(srcdir) && cp $(HTML_IMAGES) $(abs_builddir)/html )
+       @echo '  DOC   Fixing cross-references'
+       @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+       @touch html-build.stamp
+
+clean-local-gtkdoc:
+       @rm -rf xml tmpl html
+# clean files copied for nonsrcdir templates build
+       @if test x"$(srcdir)" != x. ; then \
+               rm -rf $(DOC_MODULE).types; \
+       fi
+else
+all-local:
+clean-local-gtkdoc:
+endif
+
+clean-local: clean-local-gtkdoc
+       @rm -f *~ *.bak
+       @rm -rf .libs
+
+distclean-local:
+       @rm -f $(REPORT_FILES) \
+               $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+       @rm -rf tmpl/*.sgml.bak
+       @rm -f $(DOC_MODULE).hierarchy
+       @rm -f *.stamp || true
+       @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+           rm -f $(DOC_MAIN_SGML_FILE) ; \
+           rm -f $(DOC_OVERRIDES) ; \
+           rm -f $(DOC_MODULE).types ; \
+           rm -f $(DOC_MODULE).interfaces ; \
+           rm -f $(DOC_MODULE).prerequisites ; \
+           rm -f $(DOC_MODULE)-sections.txt ; \
+           rm -f $(content_files) ; \
+           rm -rf tmpl/*.sgml ; \
+       fi
+       @rm -rf *.o
+
+maintainer-clean-local: clean
+       @cd $(srcdir) && rm -rf html \
+               xml $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+# thomas: make docs parallel installable; devhelp requires majorminor too
+install-data-local:
+       (installfiles=`echo $(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css`; \
+       if test "$$installfiles" = '$(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css'; \
+       then echo '-- Nothing to install' ; \
+       else \
+         $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+         for i in $$installfiles; do \
+           echo '-- Installing '$$i ; \
+           $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+         done; \
+         echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \
+         if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \
+                   $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \
+                   $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@.devhelp2; \
+         fi; \
+         (which gtkdoc-rebase >/dev/null && \
+           gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR)) || true ; \
+       fi)
+uninstall-local:
+       if test -d $(DESTDIR)$(TARGET_DIR); then \
+         rm -rf $(DESTDIR)$(TARGET_DIR)/*; \
+         rmdir -p $(DESTDIR)$(TARGET_DIR) 2>/dev/null || true; \
+       else \
+         echo '-- Nothing to uninstall' ; \
+       fi;
+
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+       @echo "*** gtk-doc must be installed and enabled in order to make dist"
+       @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+       mkdir $(distdir)/html
+       cp html/* $(distdir)/html
+       -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+       -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+       cd $(distdir) && rm -f $(DISTCLEANFILES)
+       -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
+
+# avoid spurious build errors when distchecking with -jN
+.NOTPARALLEL:
diff --git a/common/m4/Makefile.am b/common/m4/Makefile.am
new file mode 100644 (file)
index 0000000..2ddb8a7
--- /dev/null
@@ -0,0 +1,42 @@
+EXTRA_DIST = \
+       README \
+       as-ac-expand.m4 \
+       as-auto-alt.m4 \
+       as-compiler-flag.m4 \
+       as-compiler.m4 \
+       as-docbook.m4 \
+       as-gcc-inline-assembly.m4 \
+       as-libtool.m4 \
+       as-libtool-tags.m4 \
+       as-objc.m4 \
+       as-python.m4 \
+       as-scrub-include.m4 \
+       as-version.m4 \
+       ax_create_stdint_h.m4 \
+       glib-gettext.m4 \
+       gst-arch.m4 \
+       gst-args.m4 \
+       gst-check.m4 \
+       gst-debuginfo.m4 \
+       gst-default.m4 \
+       gst-doc.m4 \
+       gst-dowhile.m4 \
+       gst-error.m4 \
+       gst-feature.m4 \
+       gst-function.m4 \
+       gst-gettext.m4 \
+       gst-glib2.m4 \
+       gst-libxml2.m4 \
+       gst-parser.m4 \
+       gst-package-release-datetime.m4 \
+       gst-platform.m4 \
+       gst-plugindir.m4 \
+       gst-plugin-docs.m4 \
+       gst-valgrind.m4 \
+       gst-x11.m4 \
+       gst.m4 \
+       gtk-doc.m4 \
+       introspection.m4 \
+       pkg.m4 \
+       check.m4 \
+       orc.m4
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
new file mode 100644 (file)
index 0000000..128ed01
--- /dev/null
@@ -0,0 +1,563 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = common/m4
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+EXTRA_DIST = \
+       README \
+       as-ac-expand.m4 \
+       as-auto-alt.m4 \
+       as-compiler-flag.m4 \
+       as-compiler.m4 \
+       as-docbook.m4 \
+       as-gcc-inline-assembly.m4 \
+       as-libtool.m4 \
+       as-libtool-tags.m4 \
+       as-objc.m4 \
+       as-python.m4 \
+       as-scrub-include.m4 \
+       as-version.m4 \
+       ax_create_stdint_h.m4 \
+       glib-gettext.m4 \
+       gst-arch.m4 \
+       gst-args.m4 \
+       gst-check.m4 \
+       gst-debuginfo.m4 \
+       gst-default.m4 \
+       gst-doc.m4 \
+       gst-dowhile.m4 \
+       gst-error.m4 \
+       gst-feature.m4 \
+       gst-function.m4 \
+       gst-gettext.m4 \
+       gst-glib2.m4 \
+       gst-libxml2.m4 \
+       gst-parser.m4 \
+       gst-package-release-datetime.m4 \
+       gst-platform.m4 \
+       gst-plugindir.m4 \
+       gst-plugin-docs.m4 \
+       gst-valgrind.m4 \
+       gst-x11.m4 \
+       gst.m4 \
+       gtk-doc.m4 \
+       introspection.m4 \
+       pkg.m4 \
+       check.m4 \
+       orc.m4
+
+all: all-am
+
+.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 common/m4/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu common/m4/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
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool 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 maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am 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 --git a/common/m4/README b/common/m4/README
new file mode 100644 (file)
index 0000000..867a344
--- /dev/null
@@ -0,0 +1,3 @@
+All aclocal .m4 files we need are put here and cat'd to acinclude.m4 in
+the source root.  Official ones (taken from the relevant devel packages)
+are named as-is, unofficial ones (or changed ones) get a gst-prefix.
diff --git a/common/m4/as-ac-expand.m4 b/common/m4/as-ac-expand.m4
new file mode 100644 (file)
index 0000000..d6c9e33
--- /dev/null
@@ -0,0 +1,43 @@
+dnl as-ac-expand.m4 0.2.0
+dnl autostars m4 macro for expanding directories using configure's prefix
+dnl thomas@apestaart.org
+
+dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
+dnl example
+dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
+dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
+
+AC_DEFUN([AS_AC_EXPAND],
+[
+  EXP_VAR=[$1]
+  FROM_VAR=[$2]
+
+  dnl first expand prefix and exec_prefix if necessary
+  prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+  dnl if no prefix given, then use /usr/local, the default prefix
+  if test "x$prefix" = "xNONE"; then
+    prefix="$ac_default_prefix"
+  fi
+  dnl if no exec_prefix given, then use prefix
+  if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+  dnl loop until it doesn't change anymore
+  while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var" = "x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+  dnl clean up
+  full_var=$new_full_var
+  AC_SUBST([$1], "$full_var")
+
+  dnl restore prefix and exec_prefix
+  prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+])
diff --git a/common/m4/as-auto-alt.m4 b/common/m4/as-auto-alt.m4
new file mode 100644 (file)
index 0000000..3f7920d
--- /dev/null
@@ -0,0 +1,50 @@
+dnl as-auto-alt.m4 0.0.2
+dnl autostars m4 macro for supplying alternate autotools versions to configure
+dnl thomas@apestaart.org
+dnl
+dnl AS_AUTOTOOLS_ALTERNATE()
+dnl
+dnl supplies --with arguments for autoconf, autoheader, automake, aclocal
+
+AC_DEFUN([AS_AUTOTOOLS_ALTERNATE],
+[
+  dnl allow for different autoconf version
+  AC_ARG_WITH(autoconf,
+    AC_HELP_STRING([--with-autoconf],
+                   [use a different autoconf for regeneration of Makefiles]),
+    [
+      unset AUTOCONF
+      AM_MISSING_PROG(AUTOCONF, ${withval})
+      AC_MSG_NOTICE([Using $AUTOCONF as autoconf])
+    ])
+
+  dnl allow for different autoheader version
+  AC_ARG_WITH(autoheader,
+    AC_HELP_STRING([--with-autoheader],
+                   [use a different autoheader for regeneration of Makefiles]),
+    [
+      unset AUTOHEADER
+      AM_MISSING_PROG(AUTOHEADER, ${withval})
+      AC_MSG_NOTICE([Using $AUTOHEADER as autoheader])
+    ])
+
+  dnl allow for different automake version
+  AC_ARG_WITH(automake,
+    AC_HELP_STRING([--with-automake],
+                   [use a different automake for regeneration of Makefiles]),
+    [
+      unset AUTOMAKE
+      AM_MISSING_PROG(AUTOMAKE, ${withval})
+      AC_MSG_NOTICE([Using $AUTOMAKE as automake])
+    ])
+
+  dnl allow for different aclocal version
+  AC_ARG_WITH(aclocal,
+    AC_HELP_STRING([--with-aclocal],
+                   [use a different aclocal for regeneration of Makefiles]),
+    [
+      unset ACLOCAL
+      AM_MISSING_PROG(ACLOCAL, ${withval})
+      AC_MSG_NOTICE([Using $ACLOCAL as aclocal])
+    ])
+])
diff --git a/common/m4/as-compiler-flag.m4 b/common/m4/as-compiler-flag.m4
new file mode 100644 (file)
index 0000000..882a4c7
--- /dev/null
@@ -0,0 +1,64 @@
+dnl as-compiler-flag.m4 0.1.0
+
+dnl autostars m4 macro for detection of compiler flags
+
+dnl David Schleef <ds@schleef.org>
+dnl Tim-Philipp Müller <tim centricular net>
+
+dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
+dnl Tries to compile with the given CFLAGS.
+dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
+dnl and ACTION-IF-NOT-ACCEPTED otherwise.
+
+AC_DEFUN([AS_COMPILER_FLAG],
+[
+  AC_MSG_CHECKING([to see if compiler understands $1])
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $1"
+
+  AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    $2
+    true
+  else
+    $3
+    true
+  fi
+  AC_MSG_RESULT([$flag_ok])
+])
+
+dnl AS_CXX_COMPILER_FLAG(CPPFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
+dnl Tries to compile with the given CPPFLAGS.
+dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
+dnl and ACTION-IF-NOT-ACCEPTED otherwise.
+
+AC_DEFUN([AS_CXX_COMPILER_FLAG],
+[
+  AC_REQUIRE([AC_PROG_CXX])
+
+  AC_MSG_CHECKING([to see if c++ compiler understands $1])
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $1"
+
+  AC_LANG_PUSH(C++)
+
+  AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    $2
+    true
+  else
+    $3
+    true
+  fi
+
+  AC_LANG_POP(C++)
+
+  AC_MSG_RESULT([$flag_ok])
+])
+
diff --git a/common/m4/as-compiler.m4 b/common/m4/as-compiler.m4
new file mode 100644 (file)
index 0000000..309a060
--- /dev/null
@@ -0,0 +1,44 @@
+dnl as-compiler.m4 0.1.0
+
+dnl autostars m4 macro for detection of compiler flavor
+
+dnl Thomas Vander Stichele <thomas at apestaart dot org>
+
+dnl $Id: as-compiler.m4,v 1.4 2004/06/01 09:44:19 thomasvs Exp $
+
+dnl AS_COMPILER(COMPILER)
+dnl will set variable COMPILER to
+dnl - gcc
+dnl - forte
+dnl - (empty) if no guess could be made
+
+AC_DEFUN([AS_COMPILER],
+[
+  as_compiler=
+  AC_MSG_CHECKING(for compiler flavour)
+
+  dnl is it gcc ?
+  if test "x$GCC" = "xyes"; then
+    as_compiler="gcc"
+  fi
+
+  dnl is it forte ?
+  AC_TRY_RUN([
+int main
+(int argc, char *argv[])
+{
+#ifdef __sun
+  return 0;
+#else
+  return 1;
+#endif
+}
+  ], as_compiler="forte", ,)
+
+  if test "x$as_compiler" = "x"; then
+    AC_MSG_RESULT([unknown !])
+  else
+    AC_MSG_RESULT($as_compiler)
+  fi
+  [$1]=$as_compiler
+])
diff --git a/common/m4/as-docbook.m4 b/common/m4/as-docbook.m4
new file mode 100644 (file)
index 0000000..8a1b32a
--- /dev/null
@@ -0,0 +1,66 @@
+dnl AS_DOCBOOK([, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl checks if xsltproc can build docbook documentation
+dnl (which is possible if the catalog is set up properly
+dnl I also tried checking for a specific version and type of docbook
+dnl but xsltproc seemed to happily run anyway, so we can't check for that
+dnl and version
+dnl this macro takes inspiration from
+dnl http://www.movement.uklinux.net/docs/docbook-autotools/configure.html
+AC_DEFUN([AS_DOCBOOK],
+[
+  XSLTPROC_FLAGS=--nonet
+  DOCBOOK_ROOT=
+  TYPE_LC=xml
+  TYPE_UC=XML
+  DOCBOOK_VERSION=4.1.2
+
+  if test ! -f /etc/xml/catalog; then
+    for i in /usr/share/sgml/docbook/stylesheet/xsl/nwalsh /usr/share/sgml/docbook/xsl-stylesheets/ /usr/local/share/xsl/docbook ;
+    do
+      if test -d "$i"; then
+        DOCBOOK_ROOT=$i
+      fi
+    done
+  else
+    XML_CATALOG=/etc/xml/catalog
+    CAT_ENTRY_START='<!--'
+    CAT_ENTRY_END='-->'
+  fi
+
+  dnl We need xsltproc to process the test
+  AC_CHECK_PROG(XSLTPROC,xsltproc,xsltproc,)
+  XSLTPROC_WORKS=no
+  if test -n "$XSLTPROC"; then
+    AC_MSG_CHECKING([whether xsltproc docbook processing works])
+
+    if test -n "$XML_CATALOG"; then
+      DB_FILE="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"
+    else
+      DB_FILE="$DOCBOOK_ROOT/xhtml/docbook.xsl"
+    fi
+    $XSLTPROC $XSLTPROC_FLAGS $DB_FILE >/dev/null 2>&1 << END
+<?xml version="1.0" encoding='ISO-8859-1'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook $TYPE_UC V$DOCBOOK_VERSION//EN" "http://www.oasis-open.org/docbook/$TYPE_LC/$DOCBOOK_VERSION/docbookx.dtd">
+<book id="test">
+</book>
+END
+    if test "$?" = 0; then
+      XSLTPROC_WORKS=yes
+    fi
+    AC_MSG_RESULT($XSLTPROC_WORKS)
+  fi
+
+  if test "x$XSLTPROC_WORKS" = "xyes"; then
+    dnl execute ACTION-IF-FOUND
+    ifelse([$1], , :, [$1])
+  else
+    dnl execute ACTION-IF-NOT-FOUND
+    ifelse([$2], , :, [$2])
+  fi
+
+  AC_SUBST(XML_CATALOG)
+  AC_SUBST(XSLTPROC_FLAGS)
+  AC_SUBST(DOCBOOK_ROOT)
+  AC_SUBST(CAT_ENTRY_START)
+  AC_SUBST(CAT_ENTRY_END)
+])
diff --git a/common/m4/as-gcc-inline-assembly.m4 b/common/m4/as-gcc-inline-assembly.m4
new file mode 100644 (file)
index 0000000..af32104
--- /dev/null
@@ -0,0 +1,52 @@
+dnl as-gcc-inline-assembly.m4 0.1.0
+
+dnl autostars m4 macro for detection of gcc inline assembly
+
+dnl David Schleef <ds@schleef.org>
+
+dnl $Id$
+
+dnl AS_COMPILER_FLAG(ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
+dnl Tries to compile with the given CFLAGS.
+dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
+dnl and ACTION-IF-NOT-ACCEPTED otherwise.
+
+AC_DEFUN([AS_GCC_INLINE_ASSEMBLY],
+[
+  AC_MSG_CHECKING([if compiler supports gcc-style inline assembly])
+
+  AC_TRY_COMPILE([], [
+#ifdef __GNUC_MINOR__
+#if (__GNUC__ * 1000 + __GNUC_MINOR__) < 3004
+#error GCC before 3.4 has critical bugs compiling inline assembly
+#endif
+#endif
+__asm__ (""::) ], [flag_ok=yes], [flag_ok=no])
+
+  if test "X$flag_ok" = Xyes ; then
+    $1
+    true
+  else
+    $2
+    true
+  fi
+  AC_MSG_RESULT([$flag_ok])
+])
+
+
+AC_DEFUN([AS_GCC_ASM_POWERPC_FPU],
+[
+  AC_MSG_CHECKING([if compiler supports FPU instructions on PowerPC])
+
+  AC_TRY_COMPILE([], [__asm__ ("fadd 0,0,0"::) ], [flag_ok=yes], [flag_ok=no])
+
+  if test "X$flag_ok" = Xyes ; then
+    $1
+    true
+  else
+    $2
+    true
+  fi
+  AC_MSG_RESULT([$flag_ok])
+])
+
diff --git a/common/m4/as-libtool-tags.m4 b/common/m4/as-libtool-tags.m4
new file mode 100644 (file)
index 0000000..06f0ae4
--- /dev/null
@@ -0,0 +1,83 @@
+dnl as-libtool-tags.m4 0.1.4
+
+dnl autostars m4 macro for selecting libtool "tags" (languages)
+
+dnl Andy Wingo does not claim credit for this macro
+dnl backported from libtool 1.6 by Paolo Bonzini
+dnl see http://lists.gnu.org/archive/html/libtool/2003-12/msg00007.html
+
+dnl $Id$
+
+dnl AS_LIBTOOL_TAGS([tags...])
+
+dnl example
+dnl AS_LIBTOOL_TAGS([]) for only C (no fortran, etc)
+
+dnl When AC_LIBTOOL_TAGS is used, I redefine _LT_AC_TAGCONFIG
+dnl to be more similar to the libtool 1.6 implementation, which
+dnl uses an m4 loop and m4 case instead of a shell loop.  This
+dnl way the CXX/GCJ/F77/RC tests are not always expanded.
+
+dnl AS_LIBTOOL_TAGS
+dnl ---------------
+dnl tags to enable
+AC_DEFUN([AS_LIBTOOL_TAGS],
+[m4_define([_LT_TAGS],[$1])
+m4_define([_LT_AC_TAGCONFIG], [
+  # redefined LT AC TAGCONFIG
+  if test -f "$ltmain"; then
+    if test ! -f "${ofile}"; then
+      AC_MSG_WARN([output file `$ofile' does not exist])
+    fi
+
+    if test -z "$LTCC"; then
+      eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+      if test -z "$LTCC"; then
+        AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+      else
+        AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+      fi
+    fi
+
+    AC_FOREACH([_LT_TAG], _LT_TAGS,
+      echo THOMAS: tag _LT_TAG
+      [m4_case(_LT_TAG,
+      [CXX], [
+    if test -n "$CXX" && test "X$CXX" != "Xno"; then
+      echo "THOMAS: YAY CXX"
+      AC_LIBTOOL_LANG_CXX_CONFIG
+      available_tags="$available_tags _LT_TAG"
+    fi],
+      [F77], [
+    if test -n "$F77" && test "X$F77" != "Xno"; then
+      AC_LIBTOOL_LANG_F77_CONFIG
+      available_tags="$available_tags _LT_TAG"
+    fi],
+      [GCJ], [
+    if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+      AC_LIBTOOL_LANG_GCJ_CONFIG
+      available_tags="$available_tags _LT_TAG"
+    fi],
+      [RC], [
+    if test -n "$RC" && test "X$RC" != "Xno"; then
+      AC_LIBTOOL_LANG_RC_CONFIG
+      available_tags="$available_tags _LT_TAG"
+    fi],
+      [m4_errprintn(m4_location[: error: invalid tag name: ]"_LT_TAG")
+      m4_exit(1)])
+    ])
+    echo THOMAS: available tags: $available_tags
+  fi
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+    AC_MSG_NOTICE([updated available libtool tags with $available_tags.])
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+
+  fi
+
+])dnl _LT_AC_TAG_CONFIG
+])
diff --git a/common/m4/as-libtool.m4 b/common/m4/as-libtool.m4
new file mode 100644 (file)
index 0000000..25de9d1
--- /dev/null
@@ -0,0 +1,45 @@
+dnl as-libtool.m4 0.1.4
+
+dnl autostars m4 macro for libtool versioning
+
+dnl Thomas Vander Stichele <thomas at apestaart dot org>
+
+dnl $Id: as-libtool.m4,v 1.10 2005/10/15 13:44:23 thomasvs Exp $
+
+dnl AS_LIBTOOL(PREFIX, CURRENT, REVISION, AGE, [RELEASE])
+
+dnl example
+dnl AS_LIBTOOL(GST, 2, 0, 0)
+
+dnl this macro
+dnl - defines [$PREFIX]_CURRENT, REVISION and AGE
+dnl - defines [$PREFIX]_LIBVERSION
+dnl - defines [$PREFIX]_LT_LDFLAGS to set versioning
+dnl - AC_SUBST's them all
+
+dnl if RELEASE is given, then add a -release option to the LDFLAGS
+dnl with the given release version
+dnl then use [$PREFIX]_LT_LDFLAGS in the relevant Makefile.am's
+
+dnl call AM_PROG_LIBTOOL after this call
+
+AC_DEFUN([AS_LIBTOOL],
+[
+  [$1]_CURRENT=[$2]
+  [$1]_REVISION=[$3]
+  [$1]_AGE=[$4]
+  [$1]_LIBVERSION=[$2]:[$3]:[$4]
+  AC_SUBST([$1]_CURRENT)
+  AC_SUBST([$1]_REVISION)
+  AC_SUBST([$1]_AGE)
+  AC_SUBST([$1]_LIBVERSION)
+
+  [$1]_LT_LDFLAGS="$[$1]_LT_LDFLAGS -version-info $[$1]_LIBVERSION"
+  if test ! -z "[$5]"
+  then
+    [$1]_LT_LDFLAGS="$[$1]_LT_LDFLAGS -release [$5]"
+  fi
+  AC_SUBST([$1]_LT_LDFLAGS)
+
+  AC_LIBTOOL_DLOPEN
+])
diff --git a/common/m4/as-objc.m4 b/common/m4/as-objc.m4
new file mode 100644 (file)
index 0000000..1e7066a
--- /dev/null
@@ -0,0 +1,56 @@
+
+
+# AC_PROG_OBJC([LIST-OF-COMPILERS])
+#
+AC_DEFUN([AS_PROG_OBJC],
+[
+AC_CHECK_TOOLS(OBJC,
+       [m4_default([$1], [objcc objc gcc cc CC])],
+       none)
+AC_SUBST(OBJC)
+OBJC_LDFLAGS="-lobjc"
+AC_SUBST(OBJC_LDFLAGS)
+if test "x$OBJC" != xnone ; then
+  _AM_DEPENDENCIES(OBJC)
+  AC_MSG_CHECKING([if Objective C compiler works])
+  cat >>conftest.m <<EOF
+#include <objc/Object.h>
+@interface Moo:Object
+{
+}
+- moo;
+int main();
+@end
+
+@implementation Moo
+- moo
+{
+  exit(0);
+}
+
+int main()
+{
+  id moo;
+  moo = [[Moo new]];
+  [[moo moo]];
+  return 1;
+}
+@end
+EOF
+  ${OBJC} conftest.m ${OBJC_LDFLAGS} >&5 2>&5
+  if test -f a.out -o -f a.exe ; then
+    result=yes
+  else
+    result=no
+    echo failed program is: >&5
+    cat conftest.m >&5
+  fi
+  rm -f conftest.m a.out a.exe
+  AC_MSG_RESULT([$result])
+else
+  _AM_DEPENDENCIES(OBJC)
+fi
+
+])
+
+
diff --git a/common/m4/as-python.m4 b/common/m4/as-python.m4
new file mode 100644 (file)
index 0000000..eb9b175
--- /dev/null
@@ -0,0 +1,152 @@
+## ------------------------
+## Python file handling
+## From Andrew Dalke
+## Updated by James Henstridge
+## Updated by Andy Wingo to loop through possible pythons
+## ------------------------
+
+# AS_PATH_PYTHON([MINIMUM-VERSION])
+
+# Adds support for distributing Python modules and packages.  To
+# install modules, copy them to $(pythondir), using the python_PYTHON
+# automake variable.  To install a package with the same name as the
+# automake package, install to $(pkgpythondir), or use the
+# pkgpython_PYTHON automake variable.
+
+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
+# locations to install python extension modules (shared libraries).
+# Another macro is required to find the appropriate flags to compile
+# extension modules.
+
+# If your package is configured with a different prefix to python,
+# users will have to add the install directory to the PYTHONPATH
+# environment variable, or create a .pth file (see the python
+# documentation for details).
+
+# If the MINIMUM-VERSION argument is passed, AS_PATH_PYTHON will
+# cause an error if the version of python installed on the system
+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
+# numbers and dots only.
+
+# Updated to loop over all possible python binaries by Andy Wingo
+# <wingo@pobox.com>
+# Updated to only warn and unset PYTHON if no good one is found
+
+AC_DEFUN([AS_PATH_PYTHON],
+ [
+  dnl Find a version of Python.  I could check for python versions 1.4
+  dnl or earlier, but the default installation locations changed from
+  dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
+  dnl in 1.5, and I don't want to maintain that logic.
+
+  dnl should we do the version check?
+  PYTHON_CANDIDATES="python python2.2 python2.1 python2.0 python2 \
+                     python1.6 python1.5"
+  ifelse([$1],[],
+         [AC_PATH_PROG(PYTHON, $PYTHON_CANDIDATES)],
+         [
+     AC_MSG_NOTICE(Looking for Python version >= $1)
+    changequote(<<, >>)dnl
+    prog="
+import sys, string
+minver = '$1'
+# split string by '.' and convert to numeric
+minver_info = map(string.atoi, string.split(minver, '.'))
+# we can now do comparisons on the two lists:
+if sys.version_info >= tuple(minver_info):
+       sys.exit(0)
+else:
+       sys.exit(1)"
+    changequote([, ])dnl
+
+    python_good=false
+    for python_candidate in $PYTHON_CANDIDATES; do
+      unset PYTHON
+      AC_PATH_PROG(PYTHON, $python_candidate) 1> /dev/null 2> /dev/null
+
+      if test "x$PYTHON" = "x"; then continue; fi
+
+      if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC; then
+        AC_MSG_CHECKING(["$PYTHON":])
+       AC_MSG_RESULT([okay])
+        python_good=true
+        break;
+      else
+        dnl clear the cache val
+        unset ac_cv_path_PYTHON
+      fi
+    done
+  ])
+
+  if test "$python_good" != "true"; then
+    AC_MSG_WARN([No suitable version of python found])
+    PYTHON=
+  else
+
+  AC_MSG_CHECKING([local Python configuration])
+
+  dnl Query Python for its version number.  Getting [:3] seems to be
+  dnl the best way to do this; it's what "site.py" does in the standard
+  dnl library.  Need to change quote character because of [:3]
+
+  AC_SUBST(PYTHON_VERSION)
+  changequote(<<, >>)dnl
+  PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[:3]"`
+  changequote([, ])dnl
+
+
+  dnl Use the values of $prefix and $exec_prefix for the corresponding
+  dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX.  These are made
+  dnl distinct variables so they can be overridden if need be.  However,
+  dnl general consensus is that you shouldn't need this ability.
+
+  AC_SUBST(PYTHON_PREFIX)
+  PYTHON_PREFIX='${prefix}'
+
+  AC_SUBST(PYTHON_EXEC_PREFIX)
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
+
+  dnl At times (like when building shared libraries) you may want
+  dnl to know which OS platform Python thinks this is.
+
+  AC_SUBST(PYTHON_PLATFORM)
+  PYTHON_PLATFORM=`$PYTHON -c "import sys; print sys.platform"`
+
+
+  dnl Set up 4 directories:
+
+  dnl pythondir -- where to install python scripts.  This is the
+  dnl   site-packages directory, not the python standard library
+  dnl   directory like in previous automake betas.  This behaviour
+  dnl   is more consistent with lispdir.m4 for example.
+  dnl
+  dnl Also, if the package prefix isn't the same as python's prefix,
+  dnl then the old $(pythondir) was pretty useless.
+
+  AC_SUBST(pythondir)
+  pythondir=$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
+
+  dnl pkgpythondir -- $PACKAGE directory under pythondir.  Was
+  dnl   PYTHON_SITE_PACKAGE in previous betas, but this naming is
+  dnl   more consistent with the rest of automake.
+  dnl   Maybe this should be put in python.am?
+
+  AC_SUBST(pkgpythondir)
+  pkgpythondir=\${pythondir}/$PACKAGE
+
+  dnl pyexecdir -- directory for installing python extension modules
+  dnl   (shared libraries)  Was PYTHON_SITE_EXEC in previous betas.
+
+  AC_SUBST(pyexecdir)
+  pyexecdir=$PYTHON_EXEC_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
+
+  dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+  dnl   Maybe this should be put in python.am?
+
+  AC_SUBST(pkgpyexecdir)
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+  AC_MSG_RESULT([looks good])
+
+  fi
+])
diff --git a/common/m4/as-scrub-include.m4 b/common/m4/as-scrub-include.m4
new file mode 100644 (file)
index 0000000..3ed49b0
--- /dev/null
@@ -0,0 +1,36 @@
+dnl as-scrub-include.m4 0.0.4
+
+dnl autostars m4 macro for scrubbing CFLAGS of system include dirs
+dnl because gcc 3.x complains about including system including dirs
+
+dnl Thomas Vander Stichele <thomas at apestaart dot org>
+
+dnl $Id: as-scrub-include.m4,v 1.7 2004/06/12 08:30:20 thomasvs Exp $
+
+dnl This macro uses output of cpp -v and expects it to contain text that
+dnl looks a little bit like this:
+dnl #include <...> search starts here:
+dnl  /usr/local/include
+dnl  /usr/lib/gcc-lib/i386-redhat-linux/3.2/include
+dnl  /usr/include
+dnl End of search list.
+
+dnl AS_SCRUB_INCLUDE(VAR)
+dnl example
+dnl AS_SCRUB_INCLUDE(CFLAGS)
+dnl will remove all system include dirs from the given CFLAGS
+
+AC_DEFUN([AS_SCRUB_INCLUDE],
+[
+  GIVEN_CFLAGS=$[$1]
+  INCLUDE_DIRS=`echo | cpp -v 2>&1`
+
+  dnl remove everything from this output between the "starts here" and "End of"
+  dnl line
+  INCLUDE_DIRS=`echo $INCLUDE_DIRS | sed -e 's/.*<...> search starts here://' | sed -e 's/End of search list.*//'`
+  for dir in $INCLUDE_DIRS; do
+    dnl use "" as the sed script so $dir gets expanded
+    GIVEN_CFLAGS=`echo $GIVEN_CFLAGS | sed -e "s#-I$dir ##"`
+  done
+  [$1]=$GIVEN_CFLAGS
+])
diff --git a/common/m4/as-version.m4 b/common/m4/as-version.m4
new file mode 100644 (file)
index 0000000..22ff774
--- /dev/null
@@ -0,0 +1,75 @@
+dnl as-version.m4 0.2.0
+
+dnl autostars m4 macro for versioning
+
+dnl Thomas Vander Stichele <thomas at apestaart dot org>
+
+dnl $Id: as-version.m4,v 1.15 2006/04/01 09:40:24 thomasvs Exp $
+
+dnl AS_VERSION
+
+dnl example
+dnl AS_VERSION
+
+dnl this macro
+dnl - AC_SUBST's PACKAGE_VERSION_MAJOR, _MINOR, _MICRO
+dnl - AC_SUBST's PACKAGE_VERSION_RELEASE,
+dnl    which can be used for rpm release fields
+dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents
+dnl   maintainer mode from running correctly
+dnl
+dnl don't forget to put #undef PACKAGE_VERSION_RELEASE in acconfig.h
+dnl if you use acconfig.h
+
+AC_DEFUN([AS_VERSION],
+[
+  PACKAGE_VERSION_MAJOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo AC_PACKAGE_VERSION | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f3)
+
+  AC_SUBST(PACKAGE_VERSION_MAJOR)
+  AC_SUBST(PACKAGE_VERSION_MINOR)
+  AC_SUBST(PACKAGE_VERSION_MICRO)
+])
+
+dnl AS_NANO(ACTION-IF-NANO-NON-NULL, [ACTION-IF-NANO-NULL])
+
+dnl requires AC_INIT to be called before
+dnl For projects using a fourth or nano number in your versioning to indicate
+dnl development or prerelease snapshots, this macro allows the build to be
+dnl set up differently accordingly.
+
+dnl this macro:
+dnl - parses AC_PACKAGE_VERSION, set by AC_INIT, and extracts the nano number
+dnl - sets the variable PACKAGE_VERSION_NANO
+dnl - sets the variable PACKAGE_VERSION_RELEASE, which can be used
+dnl   for rpm release fields
+dnl - executes ACTION-IF-NANO-NON-NULL or ACTION-IF-NANO-NULL
+
+dnl example:
+dnl AS_NANO(RELEASE="yes", RELEASE="no")
+
+AC_DEFUN([AS_NANO],
+[
+  AC_MSG_CHECKING(nano version)
+
+  NANO=$(echo AC_PACKAGE_VERSION | cut -d'.' -f4)
+
+  if test x"$NANO" = x || test "x$NANO" = "x0" ; then
+    AC_MSG_RESULT([0 (release)])
+    NANO=0
+    PACKAGE_VERSION_RELEASE=1
+    ifelse([$1], , :, [$1])
+  else
+    AC_MSG_RESULT($NANO)
+    PACKAGE_VERSION_RELEASE=0.`date +%Y%m%d.%H%M%S`
+    if test "x$NANO" != "x1" ; then
+       ifelse([$1], , :, [$1])
+    else
+       ifelse([$2], , :, [$2])
+    fi
+  fi
+  PACKAGE_VERSION_NANO=$NANO
+  AC_SUBST(PACKAGE_VERSION_NANO)
+  AC_SUBST(PACKAGE_VERSION_RELEASE)
+])
diff --git a/common/m4/ax_create_stdint_h.m4 b/common/m4/ax_create_stdint_h.m4
new file mode 100644 (file)
index 0000000..13bf699
--- /dev/null
@@ -0,0 +1,734 @@
+##### http://autoconf-archive.cryp.to/ax_create_stdint_h.html
+#
+# SYNOPSIS
+#
+#   AX_CREATE_STDINT_H [( HEADER-TO-GENERATE [, HEDERS-TO-CHECK])]
+#
+# DESCRIPTION
+#
+#   the "ISO C9X: 7.18 Integer types <stdint.h>" section requires the
+#   existence of an include file <stdint.h> that defines a set of
+#   typedefs, especially uint8_t,int32_t,uintptr_t. Many older
+#   installations will not provide this file, but some will have the
+#   very same definitions in <inttypes.h>. In other enviroments we can
+#   use the inet-types in <sys/types.h> which would define the typedefs
+#   int8_t and u_int8_t respectivly.
+#
+#   This macros will create a local "_stdint.h" or the headerfile given
+#   as an argument. In many cases that file will just "#include
+#   <stdint.h>" or "#include <inttypes.h>", while in other environments
+#   it will provide the set of basic 'stdint's definitions/typedefs:
+#
+#     int8_t,uint8_t,int16_t,uint16_t,int32_t,uint32_t,intptr_t,uintptr_t
+#     int_least32_t.. int_fast32_t.. intmax_t
+#
+#   which may or may not rely on the definitions of other files, or
+#   using the AC_CHECK_SIZEOF macro to determine the actual sizeof each
+#   type.
+#
+#   if your header files require the stdint-types you will want to
+#   create an installable file mylib-int.h that all your other
+#   installable header may include. So if you have a library package
+#   named "mylib", just use
+#
+#        AX_CREATE_STDINT_H(mylib-int.h)
+#
+#   in configure.ac and go to install that very header file in
+#   Makefile.am along with the other headers (mylib.h) - and the
+#   mylib-specific headers can simply use "#include <mylib-int.h>" to
+#   obtain the stdint-types.
+#
+#   Remember, if the system already had a valid <stdint.h>, the
+#   generated file will include it directly. No need for fuzzy
+#   HAVE_STDINT_H things... (oops, GCC 4.2.x has deliberatly disabled
+#   its stdint.h for non-c99 compilation and the c99-mode is not the
+#   default. Therefore this macro will not use the compiler's stdint.h
+#   - please complain to the GCC developers).
+#
+# LAST MODIFICATION
+#
+#   2007-06-27
+#
+# COPYLEFT
+#
+#   Copyright (c) 2007 Guido U. Draheim <guidod@gmx.de>
+#
+#   This program is free software; you can redistribute it and/or
+#   modify it under the terms of the GNU General Public License as
+#   published by the Free Software Foundation; either version 2 of the
+#   License, or (at your option) any later version.
+#
+#   This program 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
+#   General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+#   02111-1307, USA.
+#
+#   As a special exception, the respective Autoconf Macro's copyright
+#   owner gives unlimited permission to copy, distribute and modify the
+#   configure scripts that are the output of Autoconf when processing
+#   the Macro. You need not follow the terms of the GNU General Public
+#   License when using or distributing such scripts, even though
+#   portions of the text of the Macro appear in them. The GNU General
+#   Public License (GPL) does govern all other use of the material that
+#   constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the
+#   Autoconf Macro released by the Autoconf Macro Archive. When you
+#   make and distribute a modified version of the Autoconf Macro, you
+#   may extend this special exception to the GPL to apply to your
+#   modified version as well.
+
+AC_DEFUN([AX_CHECK_DATA_MODEL],[
+   AC_CHECK_SIZEOF(char)
+   AC_CHECK_SIZEOF(short)
+   AC_CHECK_SIZEOF(int)
+   AC_CHECK_SIZEOF(long)
+   AC_CHECK_SIZEOF(void*)
+   ac_cv_char_data_model=""
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
+   ac_cv_long_data_model=""
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
+   AC_MSG_CHECKING([data model])
+   case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
+    122/242)     ac_cv_data_model="IP16"  ; n="standard 16bit machine" ;;
+    122/244)     ac_cv_data_model="LP32"  ; n="standard 32bit machine" ;;
+    122/*)       ac_cv_data_model="i16"   ; n="unusual int16 model" ;;
+    124/444)     ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
+    124/488)     ac_cv_data_model="LP64"  ; n="standard 64bit unixish" ;;
+    124/448)     ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
+    124/*)       ac_cv_data_model="i32"   ; n="unusual int32 model" ;;
+    128/888)     ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
+    128/*)       ac_cv_data_model="i64"   ; n="unusual int64 model" ;;
+    222/*2)      ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
+    333/*3)      ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
+    444/*4)      ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
+    666/*6)      ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
+    888/*8)      ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
+    222/*|333/*|444/*|666/*|888/*) :
+                 ac_cv_data_model="iDSP"  ; n="unusual dsptype" ;;
+     *)          ac_cv_data_model="none"  ; n="very unusual model" ;;
+   esac
+   AC_MSG_RESULT([$ac_cv_data_model ($ac_cv_long_data_model, $n)])
+])
+
+dnl AX_CHECK_HEADER_STDINT_X([HEADERLIST][,ACTION-IF])
+AC_DEFUN([AX_CHECK_HEADER_STDINT_X],[
+AC_CACHE_CHECK([for stdint uintptr_t], [ac_cv_header_stdint_x],[
+ ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
+  AC_MSG_RESULT([(..)])
+  for i in m4_ifval([$1],[$1],[stdint.h inttypes.h sys/inttypes.h sys/types.h])
+  do
+   unset ac_cv_type_uintptr_t
+   unset ac_cv_type_uint64_t
+   AC_CHECK_TYPE(uintptr_t,[ac_cv_header_stdint_x=$i],continue,[#include <$i>])
+   AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
+   m4_ifvaln([$2],[$2]) break
+  done
+  AC_MSG_CHECKING([for stdint uintptr_t])
+ ])
+])
+
+AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[
+AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[
+ ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
+  AC_MSG_RESULT([(..)])
+  for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h sys/types.h stdint.h])
+  do
+   unset ac_cv_type_uint32_t
+   unset ac_cv_type_uint64_t
+   AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>])
+   AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
+   m4_ifvaln([$2],[$2]) break
+   break;
+  done
+  AC_MSG_CHECKING([for stdint uint32_t])
+ ])
+])
+
+AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[
+AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[
+ ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
+  AC_MSG_RESULT([(..)])
+  for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; do
+   unset ac_cv_type_u_int32_t
+   unset ac_cv_type_u_int64_t
+   AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],continue,[#include <$i>])
+   AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>])
+   m4_ifvaln([$2],[$2]) break
+   break;
+  done
+  AC_MSG_CHECKING([for stdint u_int32_t])
+ ])
+])
+
+AC_DEFUN([AX_CREATE_STDINT_H],
+[# ------ AX CREATE STDINT H -------------------------------------
+AC_MSG_CHECKING([for stdint types])
+ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)`
+# try to shortcircuit - if the default include path of the compiler
+# can find a "stdint.h" header then we assume that all compilers can.
+AC_CACHE_VAL([ac_cv_header_stdint_t],[
+old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
+old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
+old_CFLAGS="$CFLAGS"     ; CFLAGS=""
+AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
+[ac_cv_stdint_result="(assuming C99 compatible system)"
+ ac_cv_header_stdint_t="stdint.h"; ],
+[ac_cv_header_stdint_t=""])
+if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
+CFLAGS="-std=c99"
+AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
+[AC_MSG_WARN(your GCC compiler has a defunct stdint.h for its default-mode)])
+fi
+CXXFLAGS="$old_CXXFLAGS"
+CPPFLAGS="$old_CPPFLAGS"
+CFLAGS="$old_CFLAGS" ])
+
+v="... $ac_cv_header_stdint_h"
+if test "$ac_stdint_h" = "stdint.h" ; then
+ AC_MSG_RESULT([(are you sure you want them in ./stdint.h?)])
+elif test "$ac_stdint_h" = "inttypes.h" ; then
+ AC_MSG_RESULT([(are you sure you want them in ./inttypes.h?)])
+elif test "_$ac_cv_header_stdint_t" = "_" ; then
+ AC_MSG_RESULT([(putting them into $ac_stdint_h)$v])
+else
+ ac_cv_header_stdint="$ac_cv_header_stdint_t"
+ AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)])
+fi
+
+if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
+
+dnl .....intro message done, now do a few system checks.....
+dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type,
+dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW
+dnl instead that is triggered with 3 or more arguments (see types.m4)
+
+inttype_headers=`echo $2 | sed -e 's/,/ /g'`
+
+ac_cv_stdint_result="(no helpful system typedefs seen)"
+AX_CHECK_HEADER_STDINT_X(dnl
+   stdint.h inttypes.h sys/inttypes.h $inttype_headers,
+   ac_cv_stdint_result="(seen uintptr_t$and64 in $i)")
+
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+AX_CHECK_HEADER_STDINT_O(dnl,
+   inttypes.h sys/inttypes.h stdint.h $inttype_headers,
+   ac_cv_stdint_result="(seen uint32_t$and64 in $i)")
+fi
+
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+if test "_$ac_cv_header_stdint_o" = "_" ; then
+AX_CHECK_HEADER_STDINT_U(dnl,
+   sys/types.h inttypes.h sys/inttypes.h $inttype_headers,
+   ac_cv_stdint_result="(seen u_int32_t$and64 in $i)")
+fi fi
+
+dnl if there was no good C99 header file, do some typedef checks...
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+   AC_MSG_CHECKING([for stdint datatype model])
+   AC_MSG_RESULT([(..)])
+   AX_CHECK_DATA_MODEL
+fi
+
+if test "_$ac_cv_header_stdint_x" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_x"
+elif  test "_$ac_cv_header_stdint_o" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_o"
+elif  test "_$ac_cv_header_stdint_u" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_u"
+else
+   ac_cv_header_stdint="stddef.h"
+fi
+
+AC_MSG_CHECKING([for extra inttypes in chosen header])
+AC_MSG_RESULT([($ac_cv_header_stdint)])
+dnl see if int_least and int_fast types are present in _this_ header.
+unset ac_cv_type_int_least32_t
+unset ac_cv_type_int_fast32_t
+AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>])
+AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>])
+AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>])
+
+fi # shortcircut to system "stdint.h"
+# ------------------ PREPARE VARIABLES ------------------------------
+if test "$GCC" = "yes" ; then
+ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
+else
+ac_cv_stdint_message="using $CC"
+fi
+
+AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl
+$ac_cv_stdint_result])
+
+dnl -----------------------------------------------------------------
+# ----------------- DONE inttypes.h checks START header -------------
+AC_CONFIG_COMMANDS([$ac_stdint_h],[
+AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h)
+ac_stdint=$tmp/_stdint.h
+
+echo "#ifndef" $_ac_stdint_h >$ac_stdint
+echo "#define" $_ac_stdint_h "1" >>$ac_stdint
+echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
+echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
+echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
+if test "_$ac_cv_header_stdint_t" != "_" ; then
+echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
+echo "#include <stdint.h>" >>$ac_stdint
+echo "#endif" >>$ac_stdint
+echo "#endif" >>$ac_stdint
+else
+
+cat >>$ac_stdint <<STDINT_EOF
+
+/* ................... shortcircuit part ........................... */
+
+#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <stddef.h>
+
+/* .................... configured part ............................ */
+
+STDINT_EOF
+
+echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
+if test "_$ac_cv_header_stdint_x" != "_" ; then
+  ac_header="$ac_cv_header_stdint_x"
+  echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
+fi
+
+echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
+if  test "_$ac_cv_header_stdint_o" != "_" ; then
+  ac_header="$ac_cv_header_stdint_o"
+  echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
+fi
+
+echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
+if  test "_$ac_cv_header_stdint_u" != "_" ; then
+  ac_header="$ac_cv_header_stdint_u"
+  echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
+fi
+
+echo "" >>$ac_stdint
+
+if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
+  echo "#include <$ac_header>" >>$ac_stdint
+  echo "" >>$ac_stdint
+fi fi
+
+echo "/* which 64bit typedef has been found */" >>$ac_stdint
+if test "$ac_cv_type_uint64_t" = "yes" ; then
+echo "#define   _STDINT_HAVE_UINT64_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
+fi
+if test "$ac_cv_type_u_int64_t" = "yes" ; then
+echo "#define   _STDINT_HAVE_U_INT64_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+echo "/* which type model has been detected */" >>$ac_stdint
+if test "_$ac_cv_char_data_model" != "_" ; then
+echo "#define   _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
+echo "#define   _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
+else
+echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
+echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+echo "/* whether int_least types were detected */" >>$ac_stdint
+if test "$ac_cv_type_int_least32_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INT_LEAST32_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
+fi
+echo "/* whether int_fast types were detected */" >>$ac_stdint
+if test "$ac_cv_type_int_fast32_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
+fi
+echo "/* whether intmax_t type was detected */" >>$ac_stdint
+if test "$ac_cv_type_intmax_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+  cat >>$ac_stdint <<STDINT_EOF
+/* .................... detections part ............................ */
+
+/* whether we need to define bitspecific types from compiler base types */
+#ifndef _STDINT_HEADER_INTPTR
+#ifndef _STDINT_HEADER_UINT32
+#ifndef _STDINT_HEADER_U_INT32
+#define _STDINT_NEED_INT_MODEL_T
+#else
+#define _STDINT_HAVE_U_INT_TYPES
+#endif
+#endif
+#endif
+
+#ifdef _STDINT_HAVE_U_INT_TYPES
+#undef _STDINT_NEED_INT_MODEL_T
+#endif
+
+#ifdef  _STDINT_CHAR_MODEL
+#if     _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
+#ifndef _STDINT_BYTE_MODEL
+#define _STDINT_BYTE_MODEL 12
+#endif
+#endif
+#endif
+
+#ifndef _STDINT_HAVE_INT_LEAST32_T
+#define _STDINT_NEED_INT_LEAST_T
+#endif
+
+#ifndef _STDINT_HAVE_INT_FAST32_T
+#define _STDINT_NEED_INT_FAST_T
+#endif
+
+#ifndef _STDINT_HEADER_INTPTR
+#define _STDINT_NEED_INTPTR_T
+#ifndef _STDINT_HAVE_INTMAX_T
+#define _STDINT_NEED_INTMAX_T
+#endif
+#endif
+
+
+/* .................... definition part ............................ */
+
+/* some system headers have good uint64_t */
+#ifndef _HAVE_UINT64_T
+#if     defined _STDINT_HAVE_UINT64_T  || defined HAVE_UINT64_T
+#define _HAVE_UINT64_T
+#elif   defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
+#define _HAVE_UINT64_T
+typedef u_int64_t uint64_t;
+#endif
+#endif
+
+#ifndef _HAVE_UINT64_T
+/* .. here are some common heuristics using compiler runtime specifics */
+#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef long long int64_t;
+typedef unsigned long long uint64_t;
+
+#elif !defined __STRICT_ANSI__
+#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
+#define _HAVE_UINT64_T
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+
+#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
+/* note: all ELF-systems seem to have loff-support which needs 64-bit */
+#if !defined _NO_LONGLONG
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef long long int64_t;
+typedef unsigned long long uint64_t;
+#endif
+
+#elif defined __alpha || (defined __mips && defined _ABIN32)
+#if !defined _NO_LONGLONG
+typedef long int64_t;
+typedef unsigned long uint64_t;
+#endif
+  /* compiler/cpu type to define int64_t */
+#endif
+#endif
+#endif
+
+#if defined _STDINT_HAVE_U_INT_TYPES
+/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
+typedef u_int8_t uint8_t;
+typedef u_int16_t uint16_t;
+typedef u_int32_t uint32_t;
+
+/* glibc compatibility */
+#ifndef __int8_t_defined
+#define __int8_t_defined
+#endif
+#endif
+
+#ifdef _STDINT_NEED_INT_MODEL_T
+/* we must guess all the basic types. Apart from byte-adressable system, */
+/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
+/* (btw, those nibble-addressable systems are way off, or so we assume) */
+
+dnl   /* have a look at "64bit and data size neutrality" at */
+dnl   /* http://unix.org/version2/whatsnew/login_64bit.html */
+dnl   /* (the shorthand "ILP" types always have a "P" part) */
+
+#if defined _STDINT_BYTE_MODEL
+#if _STDINT_LONG_MODEL+0 == 242
+/* 2:4:2 =  IP16 = a normal 16-bit system                */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned long   uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          long    int32_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
+/* 2:4:4 =  LP32 = a 32-bit system derived from a 16-bit */
+/* 4:4:4 = ILP32 = a normal 32-bit system                */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
+/* 4:8:4 =  IP32 = a 32-bit system prepared for 64-bit    */
+/* 4:8:8 =  LP64 = a normal 64-bit system                 */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+/* this system has a "long" of 64bit */
+#ifndef _HAVE_UINT64_T
+#define _HAVE_UINT64_T
+typedef unsigned long   uint64_t;
+typedef          long    int64_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 448
+/*      LLP64   a 64-bit system derived from a 32-bit system */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+/* assuming the system has a "long long" */
+#ifndef _HAVE_UINT64_T
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef unsigned long long uint64_t;
+typedef          long long  int64_t;
+#endif
+#else
+#define _STDINT_NO_INT32_T
+#endif
+#else
+#define _STDINT_NO_INT8_T
+#define _STDINT_NO_INT32_T
+#endif
+#endif
+
+/*
+ * quote from SunOS-5.8 sys/inttypes.h:
+ * Use at your own risk.  As of February 1996, the committee is squarely
+ * behind the fixed sized types; the "least" and "fast" types are still being
+ * discussed.  The probability that the "fast" types may be removed before
+ * the standard is finalized is high enough that they are not currently
+ * implemented.
+ */
+
+#if defined _STDINT_NEED_INT_LEAST_T
+typedef  int8_t    int_least8_t;
+typedef  int16_t   int_least16_t;
+typedef  int32_t   int_least32_t;
+#ifdef _HAVE_UINT64_T
+typedef  int64_t   int_least64_t;
+#endif
+
+typedef uint8_t   uint_least8_t;
+typedef uint16_t  uint_least16_t;
+typedef uint32_t  uint_least32_t;
+#ifdef _HAVE_UINT64_T
+typedef uint64_t  uint_least64_t;
+#endif
+  /* least types */
+#endif
+
+#if defined _STDINT_NEED_INT_FAST_T
+typedef  int8_t    int_fast8_t;
+typedef  int       int_fast16_t;
+typedef  int32_t   int_fast32_t;
+#ifdef _HAVE_UINT64_T
+typedef  int64_t   int_fast64_t;
+#endif
+
+typedef uint8_t   uint_fast8_t;
+typedef unsigned  uint_fast16_t;
+typedef uint32_t  uint_fast32_t;
+#ifdef _HAVE_UINT64_T
+typedef uint64_t  uint_fast64_t;
+#endif
+  /* fast types */
+#endif
+
+#ifdef _STDINT_NEED_INTMAX_T
+#ifdef _HAVE_UINT64_T
+typedef  int64_t       intmax_t;
+typedef uint64_t      uintmax_t;
+#else
+typedef          long  intmax_t;
+typedef unsigned long uintmax_t;
+#endif
+#endif
+
+#ifdef _STDINT_NEED_INTPTR_T
+#ifndef __intptr_t_defined
+#define __intptr_t_defined
+/* we encourage using "long" to store pointer values, never use "int" ! */
+#if   _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
+typedef  unsigned int   uintptr_t;
+typedef           int    intptr_t;
+#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
+typedef  unsigned long  uintptr_t;
+typedef           long   intptr_t;
+#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
+typedef        uint64_t uintptr_t;
+typedef         int64_t  intptr_t;
+#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
+typedef  unsigned long  uintptr_t;
+typedef           long   intptr_t;
+#endif
+#endif
+#endif
+
+/* The ISO C99 standard specifies that in C++ implementations these
+   should only be defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+#ifndef UINT32_C
+
+/* Signed.  */
+# define INT8_C(c)      c
+# define INT16_C(c)     c
+# define INT32_C(c)     c
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define INT64_C(c)    c ## L
+# else
+#  define INT64_C(c)    c ## LL
+# endif
+
+/* Unsigned.  */
+# define UINT8_C(c)     c ## U
+# define UINT16_C(c)    c ## U
+# define UINT32_C(c)    c ## U
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define UINT64_C(c)   c ## UL
+# else
+#  define UINT64_C(c)   c ## ULL
+# endif
+
+/* Maximal type.  */
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define INTMAX_C(c)   c ## L
+#  define UINTMAX_C(c)  c ## UL
+# else
+#  define INTMAX_C(c)   c ## LL
+#  define UINTMAX_C(c)  c ## ULL
+# endif
+
+  /* literalnumbers */
+#endif
+#endif
+
+/* These limits are merily those of a two complement byte-oriented system */
+
+/* Minimum of signed integral types.  */
+# define INT8_MIN               (-128)
+# define INT16_MIN              (-32767-1)
+# define INT32_MIN              (-2147483647-1)
+# define INT64_MIN              (-__INT64_C(9223372036854775807)-1)
+/* Maximum of signed integral types.  */
+# define INT8_MAX               (127)
+# define INT16_MAX              (32767)
+# define INT32_MAX              (2147483647)
+# define INT64_MAX              (__INT64_C(9223372036854775807))
+
+/* Maximum of unsigned integral types.  */
+# define UINT8_MAX              (255)
+# define UINT16_MAX             (65535)
+# define UINT32_MAX             (4294967295U)
+# define UINT64_MAX             (__UINT64_C(18446744073709551615))
+
+/* Minimum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MIN         INT8_MIN
+# define INT_LEAST16_MIN        INT16_MIN
+# define INT_LEAST32_MIN        INT32_MIN
+# define INT_LEAST64_MIN        INT64_MIN
+/* Maximum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MAX         INT8_MAX
+# define INT_LEAST16_MAX        INT16_MAX
+# define INT_LEAST32_MAX        INT32_MAX
+# define INT_LEAST64_MAX        INT64_MAX
+
+/* Maximum of unsigned integral types having a minimum size.  */
+# define UINT_LEAST8_MAX        UINT8_MAX
+# define UINT_LEAST16_MAX       UINT16_MAX
+# define UINT_LEAST32_MAX       UINT32_MAX
+# define UINT_LEAST64_MAX       UINT64_MAX
+
+  /* shortcircuit*/
+#endif
+  /* once */
+#endif
+#endif
+STDINT_EOF
+fi
+    if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
+      AC_MSG_NOTICE([$ac_stdint_h is unchanged])
+    else
+      ac_dir=`AS_DIRNAME(["$ac_stdint_h"])`
+      AS_MKDIR_P(["$ac_dir"])
+      rm -f $ac_stdint_h
+      mv $ac_stdint $ac_stdint_h
+    fi
+],[# variables for create stdint.h replacement
+PACKAGE="$PACKAGE"
+VERSION="$VERSION"
+ac_stdint_h="$ac_stdint_h"
+_ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h)
+ac_cv_stdint_message="$ac_cv_stdint_message"
+ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
+ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
+ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
+ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
+ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
+ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
+ac_cv_char_data_model="$ac_cv_char_data_model"
+ac_cv_long_data_model="$ac_cv_long_data_model"
+ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
+ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
+ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
+])
+])
diff --git a/common/m4/check.m4 b/common/m4/check.m4
new file mode 100644 (file)
index 0000000..afd26eb
--- /dev/null
@@ -0,0 +1,181 @@
+dnl _AM_TRY_CHECK(MINIMUM-VERSION, EXTRA-CFLAGS, EXTRA-LIBS, CHECK-LIB-NAME
+dnl               [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for check, and define CHECK_CFLAGS and CHECK_LIBS
+dnl Done this way because of the brokenness that is
+dnl https://launchpad.net/distros/ubuntu/+source/check/+bug/5840
+dnl
+
+AC_DEFUN([_AM_TRY_CHECK],
+[
+  min_check_version=$1
+  extra_cflags=$2
+  extra_libs=$3
+  check_lib_name=$4
+
+  CHECK_CFLAGS="$extra_cflags"
+  CHECK_LIBS="$extra_libs -l$check_lib_name"
+
+  ac_save_CFLAGS="$CFLAGS"
+  ac_save_LIBS="$LIBS"
+
+  CFLAGS="$CFLAGS $CHECK_CFLAGS"
+  LIBS="$CHECK_LIBS $LIBS"
+
+  AC_MSG_CHECKING(for check named $check_lib_name  - version >= $min_check_version)
+
+  rm -f conf.check-test
+  dnl unset no_check, since in our second run it would have been set to yes
+  dnl before
+  no_check=
+  AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <check.h>
+
+int main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.check-test");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = strdup("$min_check_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_check_version");
+     return 1;
+   }
+
+  if ((CHECK_MAJOR_VERSION != check_major_version) ||
+      (CHECK_MINOR_VERSION != check_minor_version) ||
+      (CHECK_MICRO_VERSION != check_micro_version))
+    {
+      printf("\n*** The check header file (version %d.%d.%d) does not match\n",
+            CHECK_MAJOR_VERSION, CHECK_MINOR_VERSION, CHECK_MICRO_VERSION);
+      printf("*** the check library (version %d.%d.%d).\n",
+            check_major_version, check_minor_version, check_micro_version);
+      return 1;
+    }
+
+  if ((check_major_version > major) ||
+      ((check_major_version == major) && (check_minor_version > minor)) ||
+      ((check_major_version == major) && (check_minor_version == minor) && (check_micro_version >= micro)))
+    {
+      return 0;
+    }
+  else
+    {
+      printf("\n*** An old version of check (%d.%d.%d) was found.\n",
+             check_major_version, check_minor_version, check_micro_version);
+      printf("*** You need a version of check being at least %d.%d.%d.\n", major, minor, micro);
+      printf("***\n");
+      printf("*** If you have already installed a sufficiently new version, this error\n");
+      printf("*** probably means that the wrong copy of the check library and header\n");
+      printf("*** file is being found. Rerun configure with the --with-check=PATH option\n");
+      printf("*** to specify the prefix where the correct version was installed.\n");
+    }
+
+  return 1;
+}
+],, no_check=yes, [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+
+  CFLAGS="$ac_save_CFLAGS"
+  LIBS="$ac_save_LIBS"
+
+  if test "x$no_check" = x ; then
+    AC_MSG_RESULT(yes)
+    ifelse([$5], , :, [$5])
+  else
+    AC_MSG_RESULT(no)
+    if test -f conf.check-test ; then
+      :
+    else
+      echo "*** Could not run check test program, checking why..."
+      CFLAGS="$CFLAGS $CHECK_CFLAGS"
+      LIBS="$CHECK_LIBS $LIBS"
+      AC_TRY_LINK([
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <check.h>
+], ,  [ echo "*** The test program compiled, but did not run. This usually means"
+        echo "*** that the run-time linker is not finding check. You'll need to set your"
+        echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+        echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+        echo "*** is required on your system"
+       echo "***"
+        echo "*** If you have an old version installed, it is best to remove it, although"
+        echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+      [ echo "*** The test program failed to compile or link. See the file config.log for"
+        echo "*** the exact error that occured." ])
+
+      CFLAGS="$ac_save_CFLAGS"
+      LIBS="$ac_save_LIBS"
+    fi
+
+    CHECK_CFLAGS=""
+    CHECK_LIBS=""
+
+    rm -f conf.check-test
+    ifelse([$6], , AC_MSG_ERROR([check not found]), [$6])
+  fi
+])
+
+
+dnl AM_PATH_CHECK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for check, and define CHECK_CFLAGS and CHECK_LIBS
+dnl
+
+AC_DEFUN([AM_PATH_CHECK],
+[
+  AC_ARG_WITH(check,
+  [  --with-check=PATH       prefix where check is installed [default=auto]])
+
+  AC_ARG_WITH(checklibname,
+    AC_HELP_STRING([--with-check-lib-name=NAME],
+      [name of the PIC check library (default=check)]))
+
+  min_check_version=ifelse([$1], ,0.8.2,$1)
+
+  if test x$with_check = xno; then
+    AC_MSG_RESULT(disabled)
+    ifelse([$3], , AC_MSG_ERROR([disabling check is not supported]), [$3])
+  else
+    if test "x$with_check" != x; then
+      CHECK_EXTRA_CFLAGS="-I$with_check/include"
+      CHECK_EXTRA_LIBS="-L$with_check/lib"
+    else
+      CHECK_EXTRA_CFLAGS=""
+      CHECK_EXTRA_LIBS=""
+    fi
+
+    if test x$with_checklibname = x; then
+      _AM_TRY_CHECK($min_check_version, $CHECK_EXTRA_CFLAGS, $CHECK_EXTRA_LIBS,
+        check_pic, [have_check=true], [have_check=false])
+      if test x$have_check = xtrue; then
+        ifelse([$2], , :, [$2])
+      else
+        _AM_TRY_CHECK($min_check_version, $CHECK_EXTRA_CFLAGS, $CHECK_EXTRA_LIBS,
+          check, [have_check=true], [have_check=false])
+        if test x$have_check = xtrue; then
+          ifelse([$2], , :, [$2])
+        else
+          ifelse([$3], , AC_MSG_ERROR([check not found]), [$3])
+        fi
+      fi
+    else
+      _AM_TRY_CHECK($min_check_version, $CHECK_EXTRA_CFLAGS, $CHECK_EXTRA_LIBS,
+        $with_checklibname, [have_check=true], [have_check=false])
+      if test x$have_check = xtrue; then
+        ifelse([$2], , :, [$2])
+      else
+        ifelse([$3], , AC_MSG_ERROR([check not found]), [$3])
+      fi
+    fi
+
+    AC_SUBST(CHECK_CFLAGS)
+    AC_SUBST(CHECK_LIBS)
+    rm -f conf.check-test
+  fi
+])
diff --git a/common/m4/glib-gettext.m4 b/common/m4/glib-gettext.m4
new file mode 100644 (file)
index 0000000..f8d442f
--- /dev/null
@@ -0,0 +1,432 @@
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl.
+# Owen Taylor <otaylor@redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor@redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen@redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+       ac_cv_path_$1="$ac_dir/$ac_word"
+       break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+  dnl NLS is obligatory
+  [USE_NLS=yes
+    AC_SUBST(USE_NLS)
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+         gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+             AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+               [AC_TRY_LINK([
+#include <libintl.h>
+],
+                 [return !dgettext ("","")],
+                 gt_cv_func_dgettext_libc=yes,
+                 gt_cv_func_dgettext_libc=no)
+               ])
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+        || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+        AC_CHECK_LIB(intl, bindtextdomain,
+           [AC_CHECK_LIB(intl, ngettext,
+                   [AC_CHECK_LIB(intl, dgettext,
+                                 gt_cv_func_dgettext_libintl=yes)])])
+
+       if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+         AC_MSG_CHECKING([if -liconv is needed to use gettext])
+         AC_MSG_RESULT([])
+         AC_CHECK_LIB(intl, ngettext,
+               [AC_CHECK_LIB(intl, dcgettext,
+                      [gt_cv_func_dgettext_libintl=yes
+                       libintl_extra_libs=-liconv],
+                       :,-liconv)],
+               :,-liconv)
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+               && test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+       || test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+
+      if test "$gt_cv_have_gettext" = "yes"; then
+       AC_DEFINE(HAVE_GETTEXT,1,
+         [Define if the GNU gettext() function is already present or preinstalled.])
+       GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+         [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+       if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+         AC_CHECK_FUNCS(dcgettext)
+         MSGFMT_OPTS=
+         AC_MSG_CHECKING([if msgfmt accepts -c])
+         GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: test 1.0\n"
+"PO-Revision-Date: 2007-02-15 12:01+0100\n"
+"Last-Translator: test <foo@bar.xx>\n"
+"Language-Team: C <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+         AC_SUBST(MSGFMT_OPTS)
+         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+         GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+         AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+                        return _nl_msg_cat_cntr],
+           [CATOBJEXT=.gmo
+             DATADIRNAME=share],
+           [case $host in
+           *-*-solaris*)
+           dnl On Solaris, if bind_textdomain_codeset is in libc,
+           dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+           dnl Hence, we'd like to go with DATADIRNAME=share and
+           dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+             [CATOBJEXT=.gmo
+               DATADIRNAME=share],
+             [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+           ;;
+           *)
+           CATOBJEXT=.mo
+            DATADIRNAME=lib
+           ;;
+           esac])
+          LIBS="$glib_save_LIBS"
+         INSTOBJEXT=.mo
+       else
+         gt_cv_have_gettext=no
+       fi
+      fi
+    ])
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [always defined to indicate that i18n is enabled])
+    fi
+
+    dnl Test whether we really found GNU xgettext.
+    if test "$XGETTEXT" != ":"; then
+      dnl If it is not GNU xgettext we define it as : so that the
+      dnl Makefiles still can work.
+      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        AC_MSG_RESULT(
+         [found xgettext program is not GNU xgettext; ignore it])
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+    AC_OUTPUT_COMMANDS(
+      [case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac])
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+          # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,        $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+       < $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+glib_save_datarootdir="$datarootdir"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+datarootdir=`eval echo "${datarootdir}"`
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+datarootdir="$glib_save_datarootdir"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL])
+#
+# Create a temporary file with TEST-FILE as its contents and pass the
+# file name to PROGRAM.  Perform ACTION-IF-PASS if PROGRAM exits with
+# 0 and perform ACTION-IF-FAIL for any other exit status.
+AC_DEFUN([GLIB_RUN_PROG],
+[cat >conftest.foo <<_ACEOF
+$2
+_ACEOF
+if AC_RUN_LOG([$1 conftest.foo]); then
+  m4_ifval([$3], [$3], [:])
+m4_ifvaln([$4], [else $4])dnl
+echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD
+sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD
+fi])
+
diff --git a/common/m4/gst-arch.m4 b/common/m4/gst-arch.m4
new file mode 100644 (file)
index 0000000..2e935d2
--- /dev/null
@@ -0,0 +1,141 @@
+dnl AG_GST_ARCH
+dnl sets up defines and automake conditionals for host architecture
+dnl checks endianness
+dnl defines HOST_CPU
+
+AC_DEFUN([AG_GST_ARCH],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use host_ variables
+
+  dnl Determine CPU
+  case "x${host_cpu}" in
+    xi?86 | xk? | xi?86_64)
+      case $host_os in
+         solaris*)
+            AC_CHECK_DECL([__i386],    [I386_ABI="yes"], [I386_ABI="no"])
+            AC_CHECK_DECL([__amd64], [AMD64_ABI="yes"], [AMD64_ABI="no"])
+
+            if test "x$I386_ABI" = "xyes" ; then
+               HAVE_CPU_I386=yes
+               AC_DEFINE(HAVE_CPU_I386, 1, [Define if the host CPU is an x86])
+            fi
+            if test "x$AMD64_ABI" = "xyes" ; then
+                HAVE_CPU_X86_64=yes
+                AC_DEFINE(HAVE_CPU_X86_64, 1, [Define if the host CPU is a x86_64])
+            fi
+            ;;
+         *)
+            HAVE_CPU_I386=yes
+            AC_DEFINE(HAVE_CPU_I386, 1, [Define if the host CPU is an x86])
+
+            dnl FIXME could use some better detection
+            dnl (ie CPUID)
+            case "x${host_cpu}" in
+              xi386 | xi486) ;;
+            *)
+              AC_DEFINE(HAVE_RDTSC, 1, [Define if RDTSC is available]) ;;
+            esac
+            ;;
+      esac
+      ;;
+    xpowerpc)
+      HAVE_CPU_PPC=yes
+      AC_DEFINE(HAVE_CPU_PPC, 1, [Define if the host CPU is a PowerPC]) ;;
+    xpowerpc64)
+      HAVE_CPU_PPC64=yes
+      AC_DEFINE(HAVE_CPU_PPC64, 1, [Define if the host CPU is a 64 bit PowerPC]) ;;
+    xalpha*)
+      HAVE_CPU_ALPHA=yes
+      AC_DEFINE(HAVE_CPU_ALPHA, 1, [Define if the host CPU is an Alpha]) ;;
+    xarm*)
+      HAVE_CPU_ARM=yes
+      AC_DEFINE(HAVE_CPU_ARM, 1, [Define if the host CPU is an ARM]) ;;
+    xsparc*)
+      HAVE_CPU_SPARC=yes
+      AC_DEFINE(HAVE_CPU_SPARC, 1, [Define if the host CPU is a SPARC]) ;;
+    xmips*)
+      HAVE_CPU_MIPS=yes
+      AC_DEFINE(HAVE_CPU_MIPS, 1, [Define if the host CPU is a MIPS]) ;;
+    xhppa*)
+      HAVE_CPU_HPPA=yes
+      AC_DEFINE(HAVE_CPU_HPPA, 1, [Define if the host CPU is a HPPA]) ;;
+    xs390*)
+      HAVE_CPU_S390=yes
+      AC_DEFINE(HAVE_CPU_S390, 1, [Define if the host CPU is a S390]) ;;
+    xia64*)
+      HAVE_CPU_IA64=yes
+      AC_DEFINE(HAVE_CPU_IA64, 1, [Define if the host CPU is a IA64]) ;;
+    xm68k*)
+      HAVE_CPU_M68K=yes
+      AC_DEFINE(HAVE_CPU_M68K, 1, [Define if the host CPU is a M68K]) ;;
+    xx86_64)
+      HAVE_CPU_X86_64=yes
+      AC_DEFINE(HAVE_CPU_X86_64, 1, [Define if the host CPU is a x86_64]) ;;
+    xcris)
+      HAVE_CPU_CRIS=yes
+      AC_DEFINE(HAVE_CPU_CRIS, 1, [Define if the host CPU is a CRIS]) ;;
+    xcrisv32)
+      HAVE_CPU_CRISV32=yes
+      AC_DEFINE(HAVE_CPU_CRISV32, 1, [Define if the host CPU is a CRISv32]) ;;
+  esac
+
+  dnl Determine endianness
+  AC_C_BIGENDIAN
+
+  AM_CONDITIONAL(HAVE_CPU_I386,       test "x$HAVE_CPU_I386" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_PPC,        test "x$HAVE_CPU_PPC" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_PPC64,      test "x$HAVE_CPU_PPC64" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_ALPHA,      test "x$HAVE_CPU_ALPHA" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_ARM,        test "x$HAVE_CPU_ARM" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_SPARC,      test "x$HAVE_CPU_SPARC" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_HPPA,       test "x$HAVE_CPU_HPPA" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_MIPS,       test "x$HAVE_CPU_MIPS" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_S390,       test "x$HAVE_CPU_S390" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_IA64,       test "x$HAVE_CPU_IA64" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_M68K,       test "x$HAVE_CPU_M68K" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_X86_64,     test "x$HAVE_CPU_X86_64" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_CRIS,       test "x$HAVE_CPU_CRIS" = "xyes")
+  AM_CONDITIONAL(HAVE_CPU_CRISV32,    test "x$HAVE_CPU_CRISV32" = "xyes")
+
+  AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu", [the host CPU])
+])
+
+dnl check if unaligned memory access works correctly
+AC_DEFUN([AG_GST_UNALIGNED_ACCESS], [
+  AC_MSG_CHECKING([if unaligned memory access works correctly])
+  if test x"$as_cv_unaligned_access" = x ; then
+    case $host in
+      alpha*|arm*|hp*|mips*|sh*|sparc*|ia64*)
+        _AS_ECHO_N([(blacklisted) ])
+        as_cv_unaligned_access=no
+       ;;
+      i?86*|x86_64*|amd64*|powerpc*|m68k*|cris*)
+        _AS_ECHO_N([(whitelisted) ])
+        as_cv_unaligned_access=yes
+       ;;
+    esac
+  else
+    _AS_ECHO_N([(cached) ])
+  fi
+  if test x"$as_cv_unaligned_access" = x ; then
+    AC_TRY_RUN([
+int main(int argc, char **argv)
+{
+  char array[] = "ABCDEFGH";
+  unsigned int iarray[2];
+  memcpy(iarray,array,8);
+#define GET(x) (*(unsigned int *)((char *)iarray + (x)))
+  if(GET(0) != 0x41424344 && GET(0) != 0x44434241) return 1;
+  if(GET(1) != 0x42434445 && GET(1) != 0x45444342) return 1;
+  if(GET(2) != 0x43444546 && GET(2) != 0x46454443) return 1;
+  if(GET(3) != 0x44454647 && GET(3) != 0x47464544) return 1;
+  return 0;
+}
+    ], as_cv_unaligned_access="yes", as_cv_unaligned_access="no")
+  fi
+  AC_MSG_RESULT($as_cv_unaligned_access)
+  if test "$as_cv_unaligned_access" = "yes"; then
+    AC_DEFINE_UNQUOTED(HAVE_UNALIGNED_ACCESS, 1,
+      [defined if unaligned memory access works correctly])
+  fi
+])
diff --git a/common/m4/gst-args.m4 b/common/m4/gst-args.m4
new file mode 100644 (file)
index 0000000..030e7ac
--- /dev/null
@@ -0,0 +1,327 @@
+dnl configure-time options shared among gstreamer modules
+
+dnl AG_GST_ARG_DEBUG
+dnl AG_GST_ARG_PROFILING
+dnl AG_GST_ARG_VALGRIND
+dnl AG_GST_ARG_GCOV
+
+dnl AG_GST_ARG_EXAMPLES
+
+dnl AG_GST_ARG_WITH_PKG_CONFIG_PATH
+dnl AG_GST_ARG_WITH_PACKAGE_NAME
+dnl AG_GST_ARG_WITH_PACKAGE_ORIGIN
+
+dnl AG_GST_ARG_WITH_PLUGINS
+dnl AG_GST_CHECK_PLUGIN
+dnl AG_GST_DISABLE_PLUGIN
+
+dnl AG_GST_ARG_ENABLE_EXTERNAL
+dnl AG_GST_ARG_ENABLE_EXPERIMENTAL
+dnl AG_GST_ARG_ENABLE_BROKEN
+
+AC_DEFUN([AG_GST_ARG_DEBUG],
+[
+  dnl debugging stuff
+  AC_ARG_ENABLE(debug,
+    AC_HELP_STRING([--disable-debug],[disable addition of -g debugging info]),
+    [
+      case "${enableval}" in
+        yes) USE_DEBUG=yes ;;
+        no)  USE_DEBUG=no ;;
+        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
+      esac
+    ],
+    [USE_DEBUG=yes]) dnl Default value
+])
+
+AC_DEFUN([AG_GST_ARG_PROFILING],
+[
+  AC_ARG_ENABLE(profiling,
+    AC_HELP_STRING([--enable-profiling],
+      [adds -pg to compiler commandline, for profiling]),
+    [
+      case "${enableval}" in
+        yes) USE_PROFILING=yes ;;
+        no)  USE_PROFILING=no ;;
+        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
+      esac
+    ],
+    [USE_PROFILING=no]) dnl Default value
+])
+
+AC_DEFUN([AG_GST_ARG_VALGRIND],
+[
+  dnl valgrind inclusion
+  AC_ARG_ENABLE(valgrind,
+    AC_HELP_STRING([--disable-valgrind],[disable run-time valgrind detection]),
+    [
+      case "${enableval}" in
+        yes) USE_VALGRIND="$USE_DEBUG" ;;
+        no)  USE_VALGRIND=no ;;
+        *)   AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind) ;;
+      esac
+    ],
+    [USE_VALGRIND="$USE_DEBUG"]) dnl Default value
+  VALGRIND_REQ="3.0"
+  if test "x$USE_VALGRIND" = xyes; then
+    PKG_CHECK_MODULES(VALGRIND, valgrind >= $VALGRIND_REQ,
+      USE_VALGRIND="yes",
+      USE_VALGRIND="no")
+  fi
+  if test "x$USE_VALGRIND" = xyes; then
+    AC_DEFINE(HAVE_VALGRIND, 1, [Define if valgrind should be used])
+    AC_MSG_NOTICE(Using extra code paths for valgrind)
+  fi
+])
+
+AC_DEFUN([AG_GST_ARG_GCOV],
+[
+  AC_ARG_ENABLE(gcov,
+    AC_HELP_STRING([--enable-gcov],
+      [compile with coverage profiling instrumentation (gcc only)]),
+    enable_gcov=$enableval,
+    enable_gcov=no)
+  if test x$enable_gcov = xyes ; then
+    if test "x$GCC" != "xyes"
+    then
+      AC_MSG_ERROR([gcov only works if gcc is used])
+    fi
+
+    AS_COMPILER_FLAG(["-fprofile-arcs"],
+      [GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs"],
+      true)
+    AS_COMPILER_FLAG(["-ftest-coverage"],
+      [GCOV_CFLAGS="$GCOV_CFLAGS -ftest-coverage"],
+      true)
+    dnl remove any -O flags - FIXME: is this needed ?
+    GCOV_CFLAGS=`echo "$GCOV_CFLAGS" | sed -e 's/-O[[0-9]]*//g'`
+    dnl libtool 1.5.22 and lower strip -fprofile-arcs from the flags
+    dnl passed to the linker, which is a bug; -fprofile-arcs implicitly
+    dnl links in -lgcov, so we do it explicitly here for the same effect
+    GCOV_LIBS=-lgcov
+    AC_SUBST(GCOV_CFLAGS)
+    AC_SUBST(GCOV_LIBS)
+    GCOV=`echo $CC | sed s/gcc/gcov/g`
+    AC_SUBST(GCOV)
+
+    GST_GCOV_ENABLED=yes
+    AC_DEFINE_UNQUOTED(GST_GCOV_ENABLED, 1,
+      [Defined if gcov is enabled to force a rebuild due to config.h changing])
+    dnl if gcov is used, we do not want default -O2 CFLAGS
+    if test "x$GST_GCOV_ENABLED" = "xyes"
+    then
+      CFLAGS="-O0"
+      AC_SUBST(CFLAGS)
+      CXXFLAGS="-O0"
+      AC_SUBST(CXXFLAGS)
+      FFLAGS="-O0"
+      AC_SUBST(FFLAGS)
+      CCASFLAGS="-O0"
+      AC_SUBST(CCASFLAGS)
+      AC_MSG_NOTICE([gcov enabled, setting CFLAGS and friends to $CFLAGS])
+    fi
+  fi
+  AM_CONDITIONAL(GST_GCOV_ENABLED, test x$enable_gcov = xyes)
+])
+
+AC_DEFUN([AG_GST_ARG_EXAMPLES],
+[
+  AC_ARG_ENABLE(examples,
+    AC_HELP_STRING([--disable-examples], [disable building examples]),
+      [
+        case "${enableval}" in
+          yes) BUILD_EXAMPLES=yes ;;
+          no)  BUILD_EXAMPLES=no ;;
+          *)   AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
+        esac
+      ],
+      [BUILD_EXAMPLES=yes]) dnl Default value
+  AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
+])
+
+AC_DEFUN([AG_GST_ARG_WITH_PKG_CONFIG_PATH],
+[
+  dnl possibly modify pkg-config path
+  AC_ARG_WITH(pkg-config-path,
+     AC_HELP_STRING([--with-pkg-config-path],
+                    [colon-separated list of pkg-config(1) dirs]),
+     [
+       export PKG_CONFIG_PATH=${withval}
+       AC_MSG_NOTICE(Set PKG_CONFIG_PATH to $PKG_CONFIG_PATH)
+     ])
+])
+
+
+dnl This macro requires that GST_GIT or GST_CVS is set to yes or no (release)
+AC_DEFUN([AG_GST_ARG_WITH_PACKAGE_NAME],
+[
+  dnl package name in plugins
+  AC_ARG_WITH(package-name,
+    AC_HELP_STRING([--with-package-name],
+      [specify package name to use in plugins]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
+        *)   GST_PACKAGE_NAME="${withval}" ;;
+      esac
+    ],
+    [
+      P=$1
+      if test "x$P" = "x"
+      then
+        P=$PACKAGE_NAME
+      fi
+
+      if test "x$PACKAGE_VERSION_NANO" = "x0"
+      then
+        GST_PACKAGE_NAME="$P source release"
+      else
+        if test "x$PACKAGE_VERSION_NANO" = "x1"
+        then
+          GST_PACKAGE_NAME="$P git"
+        else
+          GST_PACKAGE_NAME="$P prerelease"
+        fi
+      fi
+    ]
+  )
+  AC_MSG_NOTICE(Using $GST_PACKAGE_NAME as package name)
+  AC_DEFINE_UNQUOTED(GST_PACKAGE_NAME, "$GST_PACKAGE_NAME",
+      [package name in plugins])
+  AC_SUBST(GST_PACKAGE_NAME)
+])
+
+AC_DEFUN([AG_GST_ARG_WITH_PACKAGE_ORIGIN],
+[
+  dnl package origin URL
+  AC_ARG_WITH(package-origin,
+    AC_HELP_STRING([--with-package-origin],
+      [specify package origin URL to use in plugins]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
+        *)   GST_PACKAGE_ORIGIN="${withval}" ;;
+      esac
+    ],
+    [GST_PACKAGE_ORIGIN="[Unknown package origin]"] dnl Default value
+  )
+  AC_MSG_NOTICE(Using $GST_PACKAGE_ORIGIN as package origin)
+  AC_DEFINE_UNQUOTED(GST_PACKAGE_ORIGIN, "$GST_PACKAGE_ORIGIN",
+      [package origin])
+  AC_SUBST(GST_PACKAGE_ORIGIN)
+])
+
+dnl sets WITH_PLUGINS to the list of plug-ins given as an argument
+dnl also clears GST_PLUGINS_ALL and GST_PLUGINS_SELECTED
+AC_DEFUN([AG_GST_ARG_WITH_PLUGINS],
+[
+  AC_ARG_WITH(plugins,
+    AC_HELP_STRING([--with-plugins],
+      [comma-separated list of dependencyless plug-ins to compile]),
+    [WITH_PLUGINS=$withval],
+    [WITH_PLUGINS=])
+
+  GST_PLUGINS_ALL=""
+  GST_PLUGINS_SELECTED=""
+
+  AC_SUBST(GST_PLUGINS_ALL)
+  AC_SUBST(GST_PLUGINS_SELECTED)
+])
+
+dnl AG_GST_CHECK_PLUGIN(PLUGIN-NAME)
+dnl
+dnl This macro adds the plug-in <PLUGIN-NAME> to GST_PLUGINS_ALL. Then it
+dnl checks if WITH_PLUGINS is empty or the plugin is present in WITH_PLUGINS,
+dnl and if so adds it to GST_PLUGINS_SELECTED. Then it checks if the plugin
+dnl is present in WITHOUT_PLUGINS (ie. was disabled specifically) and if so
+dnl removes it from GST_PLUGINS_SELECTED.
+dnl
+dnl The macro will call AM_CONDITIONAL(USE_PLUGIN_<PLUGIN-NAME>, ...) to allow
+dnl control of what is built in Makefile.ams.
+AC_DEFUN([AG_GST_CHECK_PLUGIN],
+[
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL [$1]"
+
+  define([pname_def],translit([$1], -a-z, _a-z))
+
+  AC_ARG_ENABLE([$1],
+    AC_HELP_STRING([--disable-[$1]], [disable dependency-less $1 plugin]),
+    [
+      case "${enableval}" in
+        yes) [gst_use_]pname_def=yes ;;
+        no) [gst_use_]pname_def=no ;;
+        *) AC_MSG_ERROR([bad value ${enableval} for --enable-$1]) ;;
+       esac
+    ],
+    [[gst_use_]pname_def=yes]) dnl Default value
+
+  if test x$[gst_use_]pname_def = xno; then
+    AC_MSG_NOTICE(disabling dependency-less plugin $1)
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS [$1]"
+  fi
+  undefine([pname_def])
+
+  if [[ -z "$WITH_PLUGINS" ]] || echo " [$WITH_PLUGINS] " | tr , ' ' | grep -i " [$1] " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED [$1]"
+  fi
+  if echo " [$WITHOUT_PLUGINS] " | tr , ' ' | grep -i " [$1] " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ [$1] / /'`
+  fi
+  AM_CONDITIONAL([USE_PLUGIN_]translit([$1], a-z, A-Z), echo " $GST_PLUGINS_SELECTED " | grep -i " [$1] " > /dev/null)
+])
+
+dnl AG_GST_DISABLE_PLUGIN(PLUGIN-NAME)
+dnl
+dnl This macro disables the plug-in <PLUGIN-NAME> by removing it from
+dnl GST_PLUGINS_SELECTED.
+AC_DEFUN([AG_GST_DISABLE_PLUGIN],
+[
+  GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ [$1] / /'`
+  AM_CONDITIONAL([USE_PLUGIN_]translit([$1], a-z, A-Z), false)
+])
+
+AC_DEFUN([AG_GST_ARG_ENABLE_EXTERNAL],
+[
+  AG_GST_CHECK_FEATURE(EXTERNAL, [building of plug-ins with external deps],,
+    HAVE_EXTERNAL=yes, enabled,
+    [
+      AC_MSG_NOTICE(building external plug-ins)
+      BUILD_EXTERNAL="yes"
+    ],[
+      AC_MSG_WARN(all plug-ins with external dependencies will not be built)
+      BUILD_EXTERNAL="no"
+    ])
+  # make BUILD_EXTERNAL available to Makefile.am
+  AM_CONDITIONAL(BUILD_EXTERNAL, test "x$BUILD_EXTERNAL" = "xyes")
+])
+
+dnl experimental plug-ins; stuff that hasn't had the dust settle yet
+dnl read 'builds, but might not work'
+AC_DEFUN([AG_GST_ARG_ENABLE_EXPERIMENTAL],
+[
+  AG_GST_CHECK_FEATURE(EXPERIMENTAL, [building of experimental plug-ins],,
+    HAVE_EXPERIMENTAL=yes, disabled,
+    [
+      AC_MSG_WARN(building experimental plug-ins)
+      BUILD_EXPERIMENTAL="yes"
+    ],[
+      AC_MSG_NOTICE(not building experimental plug-ins)
+      BUILD_EXPERIMENTAL="no"
+    ])
+  # make BUILD_EXPERIMENTAL available to Makefile.am
+  AM_CONDITIONAL(BUILD_EXPERIMENTAL, test "x$BUILD_EXPERIMENTAL" = "xyes")
+])
+
+dnl broken plug-ins; stuff that doesn't seem to build at the moment
+AC_DEFUN([AG_GST_ARG_ENABLE_BROKEN],
+[
+  AG_GST_CHECK_FEATURE(BROKEN, [building of broken plug-ins],,
+    HAVE_BROKEN=yes, disabled,
+    [
+      AC_MSG_WARN([building broken plug-ins -- no bug reports on these, only patches ...])
+    ],[
+      AC_MSG_NOTICE([not building broken plug-ins])
+    ])
+])
diff --git a/common/m4/gst-check.m4 b/common/m4/gst-check.m4
new file mode 100644 (file)
index 0000000..3fd3acf
--- /dev/null
@@ -0,0 +1,262 @@
+dnl pkg-config-based checks for GStreamer modules and dependency modules
+
+dnl generic:
+dnl AG_GST_PKG_CHECK_MODULES([PREFIX], [WHICH], [REQUIRED])
+dnl sets HAVE_[$PREFIX], [$PREFIX]_*
+dnl AG_GST_CHECK_MODULES([PREFIX], [MODULE], [MINVER], [NAME], [REQUIRED])
+dnl sets HAVE_[$PREFIX], [$PREFIX]_*
+
+dnl specific:
+dnl AG_GST_CHECK_GST([MAJMIN], [MINVER], [REQUIRED])
+dnl   also sets/ACSUBSTs GST_TOOLS_DIR and GST_PLUGINS_DIR
+dnl AG_GST_CHECK_GST_BASE([MAJMIN], [MINVER], [REQUIRED])
+dnl AG_GST_CHECK_GST_GDP([MAJMIN], [MINVER], [REQUIRED])
+dnl AG_GST_CHECK_GST_CONTROLLER([MAJMIN], [MINVER], [REQUIRED])
+dnl AG_GST_CHECK_GST_CHECK([MAJMIN], [MINVER], [REQUIRED])
+dnl AG_GST_CHECK_GST_PLUGINS_BASE([MAJMIN], [MINVER], [REQUIRED])
+dnl   also sets/ACSUBSTs GSTPB_PLUGINS_DIR
+
+AC_DEFUN([AG_GST_PKG_CHECK_MODULES],
+[
+  which="[$2]"
+  dnl not required by default, since we use this mostly for plugin deps
+  required=ifelse([$3], , "no", [$3])
+
+  PKG_CHECK_MODULES([$1], $which,
+    [
+      HAVE_[$1]="yes"
+    ],
+    [
+      HAVE_[$1]="no"
+      if test "x$required" = "xyes"; then
+        AC_MSG_ERROR($[$1]_PKG_ERRORS)
+      else
+        AC_MSG_NOTICE($[$1]_PKG_ERRORS)
+      fi
+    ])
+
+  dnl AC_SUBST of CFLAGS and LIBS was not done before automake 1.7
+  dnl It gets done automatically in automake >= 1.7, which we now require
+]))
+
+AC_DEFUN([AG_GST_CHECK_MODULES],
+[
+  module=[$2]
+  minver=[$3]
+  name="[$4]"
+  required=ifelse([$5], , "yes", [$5]) dnl required by default
+
+  PKG_CHECK_MODULES([$1], $module >= $minver,
+    [
+      HAVE_[$1]="yes"
+    ],
+    [
+      HAVE_[$1]="no"
+      AC_MSG_NOTICE($[$1]_PKG_ERRORS)
+      if test "x$required" = "xyes"; then
+        AC_MSG_ERROR([no $module >= $minver ($name) found])
+      else
+        AC_MSG_NOTICE([no $module >= $minver ($name) found])
+      fi
+    ])
+
+  dnl AC_SUBST of CFLAGS and LIBS was not done before automake 1.7
+  dnl It gets done automatically in automake >= 1.7, which we now require
+]))
+
+AC_DEFUN([AG_GST_CHECK_GST],
+[
+  AG_GST_CHECK_MODULES(GST, gstreamer-[$1], [$2], [GStreamer], [$3])
+  dnl allow setting before calling this macro to override
+  if test -z $GST_TOOLS_DIR; then
+    GST_TOOLS_DIR=`$PKG_CONFIG --variable=toolsdir gstreamer-[$1]`
+    if test -z $GST_TOOLS_DIR; then
+      AC_MSG_ERROR(
+        [no tools dir set in GStreamer pkg-config file, core upgrade needed.])
+    fi
+  fi
+  AC_MSG_NOTICE([using GStreamer tools in $GST_TOOLS_DIR])
+  AC_SUBST(GST_TOOLS_DIR)
+
+  dnl check for where core plug-ins got installed
+  dnl this is used for unit tests
+  dnl allow setting before calling this macro to override
+  if test -z $GST_PLUGINS_DIR; then
+    GST_PLUGINS_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-[$1]`
+    if test -z $GST_PLUGINS_DIR; then
+      AC_MSG_ERROR(
+        [no pluginsdir set in GStreamer pkg-config file, core upgrade needed.])
+    fi
+  fi
+  AC_MSG_NOTICE([using GStreamer plug-ins in $GST_PLUGINS_DIR])
+  AC_SUBST(GST_PLUGINS_DIR)
+])
+
+AC_DEFUN([AG_GST_CHECK_GST_BASE],
+[
+  AG_GST_CHECK_MODULES(GST_BASE, gstreamer-base-[$1], [$2],
+    [GStreamer Base Libraries], [$3])
+])
+
+AC_DEFUN([AG_GST_CHECK_GST_GDP],
+[
+  AG_GST_CHECK_MODULES(GST_GDP, gstreamer-dataprotocol-[$1], [$2],
+    [GStreamer Data Protocol Library], [$3])
+])
+
+AC_DEFUN([AG_GST_CHECK_GST_CONTROLLER],
+[
+  AG_GST_CHECK_MODULES(GST_CONTROLLER, gstreamer-controller-[$1], [$2],
+    [GStreamer Controller Library], [$3])
+])
+
+AC_DEFUN([AG_GST_CHECK_GST_CHECK],
+[
+  AG_GST_CHECK_MODULES(GST_CHECK, gstreamer-check-[$1], [$2],
+    [GStreamer Check unittest Library], [$3])
+])
+
+dnl ===========================================================================
+dnl AG_GST_CHECK_GST_PLUGINS_BASE([GST-MAJORMINOR], [MIN-VERSION], [REQUIRED])
+dnl
+dnl Sets GST_PLUGINS_BASE_CFLAGS and GST_PLUGINS_BASE_LIBS.
+dnl
+dnl Also sets GSTPB_PLUGINS_DIR (and for consistency also GST_PLUGINS_BASE_DIR)
+dnl for use in Makefile.am. This is only really needed/useful in uninstalled
+dnl setups, since in an installed setup all plugins will be found in
+dnl GST_PLUGINS_DIR anyway.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_BASE],
+[
+  AG_GST_CHECK_MODULES(GST_PLUGINS_BASE, gstreamer-plugins-base-[$1], [$2],
+    [GStreamer Base Plugins], [$3])
+
+  if test "x$HAVE_GST_PLUGINS_BASE" = "xyes"; then
+    dnl check for where base plugins got installed
+    dnl this is used for unit tests
+    dnl allow setting before calling this macro to override
+    if test -z $GSTPB_PLUGINS_DIR; then
+      GSTPB_PLUGINS_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-base-[$1]`
+      if test -z $GSTPB_PLUGINS_DIR; then
+        AC_MSG_ERROR(
+          [no pluginsdir set in GStreamer Base Plugins pkg-config file])
+      fi
+    fi
+    AC_MSG_NOTICE([using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR])
+    GST_PLUGINS_BASE_DIR="$GSTPB_PLUGINS_DIR/gst:$GSTPB_PLUGINS_DIR/sys:$GSTPB_PLUGINS_DIR/ext"
+    AC_SUBST(GST_PLUGINS_BASE_DIR)
+    AC_SUBST(GSTPB_PLUGINS_DIR)
+  fi
+])
+
+dnl ===========================================================================
+dnl AG_GST_CHECK_GST_PLUGINS_GOOD([GST-MAJORMINOR], [MIN-VERSION])
+dnl
+dnl Will set GST_PLUGINS_GOOD_DIR for use in Makefile.am. Note that this will
+dnl only be set in an uninstalled setup, since -good ships no .pc file and in
+dnl an installed setup all plugins will be found in GST_PLUGINS_DIR anyway.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_GOOD],
+[
+  AG_GST_CHECK_MODULES(GST_PLUGINS_GOOD, gstreamer-plugins-good-[$1], [$2],
+    [GStreamer Good Plugins], [no])
+
+  if test "x$HAVE_GST_PLUGINS_GOOD" = "xyes"; then
+    dnl check for where good plugins got installed
+    dnl this is used for unit tests
+    dnl allow setting before calling this macro to override
+    if test -z $GST_PLUGINS_GOOD_DIR; then
+      GST_PLUGINS_GOOD_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-good-[$1]`
+      if test -z $GST_PLUGINS_GOOD_DIR; then
+        AC_MSG_ERROR([no pluginsdir set in GStreamer Good Plugins pkg-config file])
+      fi
+    fi
+    AC_MSG_NOTICE([using GStreamer Good Plugins in $GST_PLUGINS_GOOD_DIR])
+    GST_PLUGINS_GOOD_DIR="$GST_PLUGINS_GOOD_DIR/gst:$GST_PLUGINS_GOOD_DIR/sys:$GST_PLUGINS_GOOD_DIR/ext"
+    AC_SUBST(GST_PLUGINS_GOOD_DIR)
+  fi
+])
+
+dnl ===========================================================================
+dnl AG_GST_CHECK_GST_PLUGINS_UGLY([GST-MAJORMINOR], [MIN-VERSION])
+dnl
+dnl Will set GST_PLUGINS_UGLY_DIR for use in Makefile.am. Note that this will
+dnl only be set in an uninstalled setup, since -bad ships no .pc file and in
+dnl an installed setup all plugins will be found in GST_PLUGINS_DIR anyway.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_UGLY],
+[
+  AG_GST_CHECK_MODULES(GST_PLUGINS_UGLY, gstreamer-plugins-ugly-[$1], [$2],
+    [GStreamer Ugly Plugins], [no])
+
+  if test "x$HAVE_GST_PLUGINS_UGLY" = "xyes"; then
+    dnl check for where ugly plugins got installed
+    dnl this is used for unit tests
+    dnl allow setting before calling this macro to override
+    if test -z $GST_PLUGINS_UGLY_DIR; then
+      GST_PLUGINS_UGLY_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-ugly-[$1]`
+      if test -z $GST_PLUGINS_UGLY_DIR; then
+        AC_MSG_ERROR([no pluginsdir set in GStreamer Ugly Plugins pkg-config file])
+      fi
+    fi
+    AC_MSG_NOTICE([using GStreamer Ugly Plugins in $GST_PLUGINS_UGLY_DIR])
+    GST_PLUGINS_UGLY_DIR="$GST_PLUGINS_UGLY_DIR/gst:$GST_PLUGINS_UGLY_DIR/sys:$GST_PLUGINS_UGLY_DIR/ext"
+    AC_SUBST(GST_PLUGINS_UGLY_DIR)
+  fi
+])
+
+dnl ===========================================================================
+dnl AG_GST_CHECK_GST_PLUGINS_BAD([GST-MAJORMINOR], [MIN-VERSION])
+dnl
+dnl Will set GST_PLUGINS_BAD_DIR for use in Makefile.am. Note that this will
+dnl only be set in an uninstalled setup, since -ugly ships no .pc file and in
+dnl an installed setup all plugins will be found in GST_PLUGINS_DIR anyway.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_BAD],
+[
+  AG_GST_CHECK_MODULES(GST_PLUGINS_BAD, gstreamer-plugins-bad-[$1], [$2],
+    [GStreamer Bad Plugins], [no])
+
+  if test "x$HAVE_GST_PLUGINS_BAD" = "xyes"; then
+    dnl check for where bad plugins got installed
+    dnl this is used for unit tests
+    dnl allow setting before calling this macro to override
+    if test -z $GST_PLUGINS_BAD_DIR; then
+      GST_PLUGINS_BAD_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-bad-[$1]`
+      if test -z $GST_PLUGINS_BAD_DIR; then
+        AC_MSG_ERROR([no pluginsdir set in GStreamer Bad Plugins pkg-config file])
+      fi
+    fi
+    AC_MSG_NOTICE([using GStreamer Bad Plugins in $GST_PLUGINS_BAD_DIR])
+    GST_PLUGINS_BAD_DIR="$GST_PLUGINS_BAD_DIR/gst:$GST_PLUGINS_BAD_DIR/sys:$GST_PLUGINS_BAD_DIR/ext"
+    AC_SUBST(GST_PLUGINS_BAD_DIR)
+  fi
+])
+
+dnl ===========================================================================
+dnl AG_GST_CHECK_GST_PLUGINS_FFMPEG([GST-MAJORMINOR], [MIN-VERSION])
+dnl
+dnl Will set GST_PLUGINS_FFMPEG_DIR for use in Makefile.am. Note that this will
+dnl only be set in an uninstalled setup, since -ffmpeg ships no .pc file and in
+dnl an installed setup all plugins will be found in GST_PLUGINS_DIR anyway.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_CHECK_GST_PLUGINS_FFMPEG],
+[
+  AG_GST_CHECK_MODULES(GST_PLUGINS_FFMPEG, gstreamer-plugins-ffmpeg-[$1], [$2],
+    [GStreamer FFmpeg Plugins], [no])
+
+  if test "x$HAVE_GST_PLUGINS_FFMPEG" = "xyes"; then
+    dnl check for where ffmpeg plugins got installed
+    dnl this is used for unit tests
+    dnl allow setting before calling this macro to override
+    if test -z $GST_PLUGINS_FFMPEG_DIR; then
+      GST_PLUGINS_FFMPEG_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-ffmpeg-[$1]`
+      if test -z $GST_PLUGINS_FFMPEG_DIR; then
+        AC_MSG_ERROR([no pluginsdir set in GStreamer FFmpeg Plugins pkg-config file])
+      fi
+    fi
+    GST_PLUGINS_FFMPEG_DIR="$GST_PLUGINS_FFMPEG_DIR/ext/ffmpeg"
+    AC_MSG_NOTICE([using GStreamer FFmpeg Plugins in $GST_PLUGINS_FFMPEG_DIR])
+    AC_SUBST(GST_PLUGINS_FFMPEG_DIR)
+  fi
+])
diff --git a/common/m4/gst-debuginfo.m4 b/common/m4/gst-debuginfo.m4
new file mode 100644 (file)
index 0000000..b48854d
--- /dev/null
@@ -0,0 +1,46 @@
+AC_DEFUN([AG_GST_DEBUGINFO], [
+AC_ARG_ENABLE(debug,
+AC_HELP_STRING([--disable-debug],[disable addition of -g debugging info]),
+[case "${enableval}" in
+  yes) USE_DEBUG=yes ;;
+  no)  USE_DEBUG=no ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
+esac],
+[USE_DEBUG=yes]) dnl Default value
+
+AC_ARG_ENABLE(DEBUG,
+AC_HELP_STRING([--disable-DEBUG],[disables compilation of debugging messages]),
+[case "${enableval}" in
+  yes) ENABLE_DEBUG=yes ;;
+  no)  ENABLE_DEBUG=no ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-DEBUG) ;;
+esac],
+[ENABLE_DEBUG=yes]) dnl Default value
+if test x$ENABLE_DEBUG = xyes; then
+  AC_DEFINE(GST_DEBUG_ENABLED, 1, [Define if DEBUG statements should be compiled in])
+fi
+
+AC_ARG_ENABLE(INFO,
+AC_HELP_STRING([--disable-INFO],[disables compilation of informational messages]),
+[case "${enableval}" in
+  yes) ENABLE_INFO=yes ;;
+  no)  ENABLE_INFO=no ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-INFO) ;;
+esac],
+[ENABLE_INFO=yes]) dnl Default value
+if test x$ENABLE_INFO = xyes; then
+  AC_DEFINE(GST_INFO_ENABLED, 1, [Define if INFO statements should be compiled in])
+fi
+
+AC_ARG_ENABLE(debug-color,
+AC_HELP_STRING([--disable-debug-color],[disables color output of DEBUG and INFO output]),
+[case "${enableval}" in
+  yes) ENABLE_DEBUG_COLOR=yes ;;
+  no)  ENABLE_DEBUG_COLOR=no ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug-color) ;;
+esac],
+[ENABLE_DEBUG_COLOR=yes]) dnl Default value
+if test "x$ENABLE_DEBUG_COLOR" = xyes; then
+  AC_DEFINE(GST_DEBUG_COLOR, 1, [Define if debugging messages should be colorized])
+fi
+])
diff --git a/common/m4/gst-default.m4 b/common/m4/gst-default.m4
new file mode 100644 (file)
index 0000000..8de9756
--- /dev/null
@@ -0,0 +1,120 @@
+dnl default elements used for tests and such
+
+dnl AG_GST_DEFAULT_ELEMENTS
+
+AC_DEFUN([AG_GST_DEFAULT_ELEMENTS],
+[
+  dnl decide on default elements
+  dnl FIXME: describe where exactly this gets used
+  dnl FIXME: decide if it's a problem that this could point to sinks from
+  dnl        depending plugin modules
+  dnl FIXME: when can we just use autoaudiosrc and autovideosrc?
+  DEFAULT_AUDIOSINK="autoaudiosink"
+  DEFAULT_VIDEOSINK="autovideosink"
+  DEFAULT_AUDIOSRC="alsasrc"
+  DEFAULT_VIDEOSRC="v4l2src"
+  DEFAULT_VISUALIZER="goom"
+  case "$host" in
+    *-sun-* | *pc-solaris* )
+      DEFAULT_AUDIOSRC="sunaudiosrc"
+      ;;
+    *-darwin* )
+      DEFAULT_AUDIOSRC="osxaudiosrc"
+      ;;
+  esac
+
+  dnl Default audio sink
+  AC_ARG_WITH(default-audiosink,
+    AC_HELP_STRING([--with-default-audiosink], [specify default audio sink]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-default-audiosink) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-default-audiosink) ;;
+        *)   DEFAULT_AUDIOSINK="${withval}" ;;
+      esac
+    ],
+    [
+      DEFAULT_AUDIOSINK="$DEFAULT_AUDIOSINK"
+    ] dnl Default value as determined above
+  )
+  AC_MSG_NOTICE(Using $DEFAULT_AUDIOSINK as default audio sink)
+  AC_SUBST(DEFAULT_AUDIOSINK)
+  AC_DEFINE_UNQUOTED(DEFAULT_AUDIOSINK, "$DEFAULT_AUDIOSINK",
+    [Default audio sink])
+
+  dnl Default audio source
+  AC_ARG_WITH(default-audiosrc,
+    AC_HELP_STRING([--with-default-audiosrc], [specify default audio source]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-default-audiosrc) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-default-audiosrc) ;;
+        *)   DEFAULT_AUDIOSRC="${withval}" ;;
+      esac
+    ],
+    [
+      DEFAULT_AUDIOSRC="$DEFAULT_AUDIOSRC"
+    ] dnl Default value as determined above
+  )
+  AC_MSG_NOTICE(Using $DEFAULT_AUDIOSRC as default audio source)
+  AC_SUBST(DEFAULT_AUDIOSRC)
+  AC_DEFINE_UNQUOTED(DEFAULT_AUDIOSRC, "$DEFAULT_AUDIOSRC",
+    [Default audio source])
+
+  dnl Default video sink
+  AC_ARG_WITH(default-videosink,
+    AC_HELP_STRING([--with-default-videosink], [specify default video sink]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-default-videosink) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-default-videosink) ;;
+        *)   DEFAULT_VIDEOSINK="${withval}" ;;
+      esac
+    ],
+    [
+      DEFAULT_VIDEOSINK="$DEFAULT_VIDEOSINK"
+    ] dnl Default value as determined above
+  )
+  AC_MSG_NOTICE(Using $DEFAULT_VIDEOSINK as default video sink)
+  AC_SUBST(DEFAULT_VIDEOSINK)
+  AC_DEFINE_UNQUOTED(DEFAULT_VIDEOSINK, "$DEFAULT_VIDEOSINK",
+    [Default video sink])
+
+  dnl Default video source
+  AC_ARG_WITH(default-videosrc,
+    AC_HELP_STRING([--with-default-videosrc], [specify default video source]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-default-videosrc) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-default-videosrc) ;;
+        *)   DEFAULT_VIDEOSRC="${withval}" ;;
+      esac
+    ],
+    [
+      DEFAULT_VIDEOSRC="$DEFAULT_VIDEOSRC"
+    ] dnl Default value as determined above
+  )
+  AC_MSG_NOTICE(Using $DEFAULT_VIDEOSRC as default video source)
+  AC_SUBST(DEFAULT_VIDEOSRC)
+  AC_DEFINE_UNQUOTED(DEFAULT_VIDEOSRC, "$DEFAULT_VIDEOSRC",
+    [Default video source])
+
+    dnl Default visualizer
+  AC_ARG_WITH(default-visualizer,
+    AC_HELP_STRING([--with-default-visualizer], [specify default visualizer]),
+    [
+      case "${withval}" in
+        yes) AC_MSG_ERROR(bad value ${withval} for --with-default-visualizer) ;;
+        no)  AC_MSG_ERROR(bad value ${withval} for --with-default-visualizer) ;;
+        *)   DEFAULT_VISUALIZER="${withval}" ;;
+      esac
+    ],
+    [
+      DEFAULT_VISUALIZER="$DEFAULT_VISUALIZER"
+    ] dnl Default value as determined above
+  )
+  AC_MSG_NOTICE(Using $DEFAULT_VISUALIZER as default visualizer)
+  AC_SUBST(DEFAULT_VISUALIZER)
+  AC_DEFINE_UNQUOTED(DEFAULT_VISUALIZER, "$DEFAULT_VISUALIZER",
+    [Default visualizer])
+])
diff --git a/common/m4/gst-doc.m4 b/common/m4/gst-doc.m4
new file mode 100644 (file)
index 0000000..6521097
--- /dev/null
@@ -0,0 +1,148 @@
+AC_DEFUN([AG_GST_DOCBOOK_CHECK],
+[
+  dnl choose a location to install docbook docs in
+  if test "x$PACKAGE_TARNAME" = "x"
+  then
+    AC_MSG_ERROR([Internal error - PACKAGE_TARNAME not set])
+  fi
+  docdir="\$(datadir)/doc/$PACKAGE_TARNAME-$GST_MAJORMINOR"
+
+  dnl enable/disable docbook documentation building
+  AC_ARG_ENABLE(docbook,
+  AC_HELP_STRING([--enable-docbook],
+                 [use docbook to build documentation [default=no]]),,
+                 enable_docbook=no)
+
+  have_docbook=no
+
+  if test x$enable_docbook = xyes; then
+    dnl check if we actually have everything we need
+
+    dnl check for docbook tools
+    AC_CHECK_PROG(HAVE_DOCBOOK2PS, docbook2ps, yes, no)
+    AC_CHECK_PROG(HAVE_DOCBOOK2HTML, docbook2html, yes, no)
+    AC_CHECK_PROG(HAVE_JADETEX, jadetex, yes, no)
+    AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
+
+    # -V option appeared in 0.6.10
+    docbook2html_min_version=0.6.10
+    if test "x$HAVE_DOCBOOK2HTML" != "xno"; then
+      docbook2html_version=`docbook2html --version`
+      AC_MSG_CHECKING([docbook2html version ($docbook2html_version) >= $docbook2html_min_version])
+      if perl -w <<EOF
+        (\$min_version_major, \$min_version_minor, \$min_version_micro ) = "$docbook2html_min_version" =~ /(\d+)\.(\d+)\.(\d+)/;
+        (\$docbook2html_version_major, \$docbook2html_version_minor, \$docbook2html_version_micro ) = "$docbook2html_version" =~ /(\d+)\.(\d+)\.(\d+)/;
+        exit (((\$docbook2html_version_major > \$min_version_major) ||
+            ((\$docbook2html_version_major == \$min_version_major) &&
+             (\$docbook2html_version_minor >= \$min_version_minor)) ||
+            ((\$docbook2html_version_major == \$min_version_major) &&
+             (\$docbook2html_version_minor >= \$min_version_minor) &&
+             (\$docbook2html_version_micro >= \$min_version_micro)))
+            ? 0 : 1);
+EOF
+      then
+        AC_MSG_RESULT(yes)
+      else
+        AC_MSG_RESULT(no)
+        HAVE_DOCBOOK2HTML=no
+      fi
+    fi
+
+    dnl check if we can process docbook stuff
+    AS_DOCBOOK(have_docbook=yes, have_docbook=no)
+
+    dnl check for extra tools
+    AC_CHECK_PROG(HAVE_DVIPS, dvips, yes, no)
+    AC_CHECK_PROG(HAVE_XMLLINT, xmllint, yes, no)
+
+    dnl check for image conversion tools
+    AC_CHECK_PROG(HAVE_FIG2DEV, fig2dev, yes, no)
+    if test "x$HAVE_FIG2DEV" = "xno" ; then
+      AC_MSG_WARN([Did not find fig2dev (from xfig), images will not be generated.])
+    fi
+
+    dnl The following is a hack: if fig2dev doesn't display an error message
+    dnl for the desired type, we assume it supports it.
+    HAVE_FIG2DEV_EPS=no
+    if test "x$HAVE_FIG2DEV" = "xyes" ; then
+      fig2dev_quiet=`fig2dev -L eps </dev/null 2>&1 >/dev/null`
+      if test "x$fig2dev_quiet" = "x" ; then
+        HAVE_FIG2DEV_EPS=yes
+      fi
+    fi
+    HAVE_FIG2DEV_PNG=no
+    if test "x$HAVE_FIG2DEV" = "xyes" ; then
+      fig2dev_quiet=`fig2dev -L png </dev/null 2>&1 >/dev/null`
+      if test "x$fig2dev_quiet" = "x" ; then
+        HAVE_FIG2DEV_PNG=yes
+      fi
+    fi
+    HAVE_FIG2DEV_PDF=no
+    if test "x$HAVE_FIG2DEV" = "xyes" ; then
+      fig2dev_quiet=`fig2dev -L pdf </dev/null 2>&1 >/dev/null`
+      if test "x$fig2dev_quiet" = "x" ; then
+        HAVE_FIG2DEV_PDF=yes
+      fi
+    fi
+
+    AC_CHECK_PROG(HAVE_PNGTOPNM, pngtopnm, yes, no)
+    AC_CHECK_PROG(HAVE_PNMTOPS,  pnmtops,  yes, no)
+    AC_CHECK_PROG(HAVE_EPSTOPDF, epstopdf, yes, no)
+
+    dnl check if we can generate HTML
+    if test "x$HAVE_DOCBOOK2HTML" = "xyes" && \
+       test "x$enable_docbook" = "xyes" && \
+       test "x$HAVE_XMLLINT" = "xyes" && \
+       test "x$HAVE_FIG2DEV_PNG" = "xyes"; then
+      DOC_HTML=yes
+      AC_MSG_NOTICE(Will output HTML documentation)
+     else
+      DOC_HTML=no
+      AC_MSG_NOTICE(Will not output HTML documentation)
+    fi
+
+    dnl check if we can generate PS
+    if test "x$HAVE_DOCBOOK2PS" = "xyes" && \
+       test "x$enable_docbook" = "xyes" && \
+       test "x$HAVE_XMLLINT" = "xyes" && \
+       test "x$HAVE_JADETEX" = "xyes" && \
+       test "x$HAVE_FIG2DEV_EPS" = "xyes" && \
+       test "x$HAVE_DVIPS" = "xyes" && \
+       test "x$HAVE_PNGTOPNM" = "xyes" && \
+       test "x$HAVE_PNMTOPS" = "xyes"; then
+      DOC_PS=yes
+      AC_MSG_NOTICE(Will output PS documentation)
+    else
+      DOC_PS=no
+      AC_MSG_NOTICE(Will not output PS documentation)
+    fi
+
+    dnl check if we can generate PDF - using only ps2pdf
+    if test "x$DOC_PS" = "xyes" && \
+       test "x$enable_docbook" = "xyes" && \
+       test "x$HAVE_XMLLINT" = "xyes" && \
+       test "x$HAVE_PS2PDF" = "xyes"; then
+      DOC_PDF=yes
+      AC_MSG_NOTICE(Will output PDF documentation)
+    else
+      DOC_PDF=no
+      AC_MSG_NOTICE(Will not output PDF documentation)
+    fi
+
+    dnl if we don't have everything, we should disable
+    if test "x$have_docbook" != "xyes"; then
+      enable_docbook=no
+    fi
+  fi
+
+  dnl if we're going to install documentation, tell us where
+  if test "x$have_docbook" = "xyes"; then
+    AC_MSG_NOTICE(Installing documentation in $docdir)
+    AC_SUBST(docdir)
+  fi
+
+  AM_CONDITIONAL(ENABLE_DOCBOOK,      test x$enable_docbook = xyes)
+  AM_CONDITIONAL(DOC_HTML,            test x$DOC_HTML = xyes)
+  AM_CONDITIONAL(DOC_PDF,             test x$DOC_PDF = xyes)
+  AM_CONDITIONAL(DOC_PS,              test x$DOC_PS = xyes)
+])
diff --git a/common/m4/gst-dowhile.m4 b/common/m4/gst-dowhile.m4
new file mode 100644 (file)
index 0000000..069808d
--- /dev/null
@@ -0,0 +1,24 @@
+dnl
+dnl Check for working do while(0) macros. This is used by G_STMT_START
+dnl and G_STMT_END in glib/gmacros.h. Without having this defined we
+dnl get "ambigious if-else" compiler warnings when compling C++ code.
+dnl
+dnl Copied from GLib's configure.in
+dnl
+AC_DEFUN([AG_GST_CHECK_DOWHILE_MACROS],[
+
+dnl *** check for working do while(0) macros ***
+AC_CACHE_CHECK([for working do while(0) macros], _cv_g_support_dowhile_macros, [
+       AC_TRY_COMPILE([],[
+       #define STMT_START do
+       #define STMT_END while(0)
+       #define STMT_TEST STMT_START { i = 0; } STMT_END
+       int main(void) { int i = 1; STMT_TEST; return i; }],
+       [_cv_g_support_dowhile_macros=yes],
+       [_cv_g_support_dowhile_macros=no],
+       [_cv_g_support_dowhile_macros=yes])
+])
+if test x$_cv_g_support_dowhile_macros = xyes; then
+  AC_DEFINE(HAVE_DOWHILE_MACROS, 1, [define for working do while(0) macros])
+fi
+])
diff --git a/common/m4/gst-error.m4 b/common/m4/gst-error.m4
new file mode 100644 (file)
index 0000000..f8f2364
--- /dev/null
@@ -0,0 +1,213 @@
+dnl handle various error-related things
+
+dnl Thomas Vander Stichele <thomas@apestaart.org>
+dnl Tim-Philipp Müller <tim centricular net>
+
+dnl Last modification: 2008-02-18
+
+dnl AG_GST_SET_ERROR_CFLAGS([ADD-WERROR], [MORE_FLAGS])
+dnl AG_GST_SET_ERROR_CXXFLAGS([ADD-WERROR], [MORE_FLAGS])
+dnl AG_GST_SET_LEVEL_DEFAULT([IS-GIT-VERSION])
+
+
+dnl Sets WARNING_CFLAGS and ERROR_CFLAGS to something the compiler 
+dnl will accept and AC_SUBST them so they are available in Makefile
+dnl
+dnl WARNING_CFLAGS will contain flags to make the compiler emit more
+dnl   warnings.
+dnl ERROR_CFLAGS will contain flags to make those warnings fatal,
+dnl   unless ADD-WERROR is set to "no"
+dnl 
+dnl If MORE_FLAGS is set, tries to add each of the given flags
+dnl to WARNING_CFLAGS if the compiler supports them. Each flag is 
+dnl tested separately.
+dnl
+dnl These flags can be overridden at make time:
+dnl make ERROR_CFLAGS=
+AC_DEFUN([AG_GST_SET_ERROR_CFLAGS],
+[
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AS_COMPILER_FLAG])
+
+  WARNING_CFLAGS=""
+  ERROR_CFLAGS=""
+
+  dnl if we support -Wall, set it unconditionally
+  AS_COMPILER_FLAG(-Wall,
+                   WARNING_CFLAGS="$WARNING_CFLAGS -Wall")
+
+  dnl Warn if declarations after statements are used (C99 extension)
+  AS_COMPILER_FLAG(-Wdeclaration-after-statement,
+        WARNING_CFLAGS="$WARNING_CFLAGS -Wdeclaration-after-statement")
+
+  dnl Warn if variable length arrays are used (C99 extension)
+  AS_COMPILER_FLAG(-Wvla,
+        WARNING_CFLAGS="$WARNING_CFLAGS -Wvla")
+
+  dnl Warn for invalid pointer arithmetic
+  AS_COMPILER_FLAG(-Wpointer-arith,
+        WARNING_CFLAGS="$WARNING_CFLAGS -Wpointer-arith")
+
+  dnl if asked for, add -Werror if supported
+  if test "x$1" != "xno"
+  then
+    AS_COMPILER_FLAG(-Werror, ERROR_CFLAGS="$ERROR_CFLAGS -Werror")
+
+    dnl if -Werror isn't suported, try -errwarn=%all (Sun Forte case)
+    if test "x$ERROR_CFLAGS" = "x"
+    then
+      AS_COMPILER_FLAG([-errwarn=%all], [
+          ERROR_CFLAGS="-errwarn=%all"
+          dnl try -errwarn=%all,no%E_EMPTY_DECLARATION,
+          dnl no%E_STATEMENT_NOT_REACHED,no%E_ARGUEMENT_MISMATCH,
+          dnl no%E_MACRO_REDEFINED (Sun Forte case)
+          dnl For Forte we need disable "empty declaration" warning produced by un-needed semicolon
+          dnl "statement not reached" disabled because there is g_assert_not_reached () in some places
+          dnl "macro redefined" because of gst/gettext.h
+          dnl FIXME: is it really supposed to be 'ARGUEMENT' and not 'ARGUMENT'?
+          for f in 'no%E_EMPTY_DECLARATION' \
+                   'no%E_STATEMENT_NOT_REACHED' \
+                   'no%E_ARGUEMENT_MISMATCH' \
+                   'no%E_MACRO_REDEFINED' \
+                   'no%E_LOOP_NOT_ENTERED_AT_TOP'
+          do
+            AS_COMPILER_FLAG([-errwarn=%all,$f], [
+              ERROR_CFLAGS="$ERROR_CFLAGS,$f"
+            ])
+          done
+      ])
+    else
+      dnl Add -fno-strict-aliasing for GLib versions before 2.19.8
+      dnl as before G_LOCK and friends caused strict aliasing compiler
+      dnl warnings.
+      PKG_CHECK_EXISTS([glib-2.0 < 2.19.8], [
+        AS_COMPILER_FLAG(-fno-strict-aliasing,
+            ERROR_CFLAGS="$ERROR_CFLAGS -fno-strict-aliasing")
+       ])
+    fi
+  fi
+
+  if test "x$2" != "x"
+  then
+    UNSUPPORTED=""
+    list="$2"
+    for each in $list
+    do
+      AS_COMPILER_FLAG($each,
+          WARNING_CFLAGS="$WARNING_CFLAGS $each",
+          UNSUPPORTED="$UNSUPPORTED $each")
+    done
+    if test "X$UNSUPPORTED" != X ; then
+      AC_MSG_NOTICE([unsupported compiler flags: $UNSUPPORTED])
+    fi
+  fi
+
+  AC_SUBST(WARNING_CFLAGS)
+  AC_SUBST(ERROR_CFLAGS)
+  AC_MSG_NOTICE([set WARNING_CFLAGS to $WARNING_CFLAGS])
+  AC_MSG_NOTICE([set ERROR_CFLAGS to $ERROR_CFLAGS])
+])
+
+dnl Sets WARNING_CXXFLAGS and ERROR_CXXFLAGS to something the compiler 
+dnl will accept and AC_SUBST them so they are available in Makefile
+dnl
+dnl WARNING_CXXFLAGS will contain flags to make the compiler emit more
+dnl   warnings.
+dnl ERROR_CXXFLAGS will contain flags to make those warnings fatal,
+dnl   unless ADD-WERROR is set to "no"
+dnl 
+dnl If MORE_FLAGS is set, tries to add each of the given flags
+dnl to WARNING_CFLAGS if the compiler supports them. Each flag is 
+dnl tested separately.
+dnl
+dnl These flags can be overridden at make time:
+dnl make ERROR_CXXFLAGS=
+AC_DEFUN([AG_GST_SET_ERROR_CXXFLAGS],
+[
+  AC_REQUIRE([AC_PROG_CXX])
+  AC_REQUIRE([AS_CXX_COMPILER_FLAG])
+
+  ERROR_CXXFLAGS=""
+  WARNING_CXXFLAGS=""
+
+  dnl if we support -Wall, set it unconditionally
+  AS_CXX_COMPILER_FLAG(-Wall, WARNING_CXXFLAGS="$WARNING_CXXFLAGS -Wall")
+
+  dnl if asked for, add -Werror if supported
+  if test "x$1" != "xno"
+  then
+    AS_CXX_COMPILER_FLAG(-Werror, ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror")
+
+    if test "x$ERROR_CXXFLAGS" != "x"
+    then
+        dnl add exceptions
+        AS_CXX_COMPILER_FLAG([-Wno-non-virtual-dtor], ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Wno-non-virtual-dtor")
+
+       dnl Add -fno-strict-aliasing for GLib versions before 2.19.8
+       dnl as before G_LOCK and friends caused strict aliasing compiler
+       dnl warnings.
+       PKG_CHECK_EXISTS([glib-2.0 < 2.19.8], [
+         AS_CXX_COMPILER_FLAG([-fno-strict-aliasing],
+           ERROR_CXXFLAGS="$ERROR_CXXFLAGS -fno-strict-aliasing")
+         ])
+    else
+      dnl if -Werror isn't suported, try -errwarn=%all
+      AS_CXX_COMPILER_FLAG([-errwarn=%all], ERROR_CXXFLAGS="$ERROR_CXXFLAGS -errwarn=%all")
+      if test "x$ERROR_CXXFLAGS" != "x"; then
+        dnl try -errwarn=%all,no%E_EMPTY_DECLARATION,
+        dnl no%E_STATEMENT_NOT_REACHED,no%E_ARGUEMENT_MISMATCH,
+        dnl no%E_MACRO_REDEFINED (Sun Forte case)
+        dnl For Forte we need disable "empty declaration" warning produced by un-needed semicolon
+        dnl "statement not reached" disabled because there is g_assert_not_reached () in some places
+        dnl "macro redefined" because of gst/gettext.h
+        dnl FIXME: is it really supposed to be 'ARGUEMENT' and not 'ARGUMENT'?
+        dnl FIXME: do any of these work with the c++ compiler? if not, why
+        dnl do we check at all?
+        for f in 'no%E_EMPTY_DECLARATION' \
+                 'no%E_STATEMENT_NOT_REACHED' \
+                 'no%E_ARGUEMENT_MISMATCH' \
+                 'no%E_MACRO_REDEFINED' \
+                 'no%E_LOOP_NOT_ENTERED_AT_TOP'
+        do
+          AS_CXX_COMPILER_FLAG([-errwarn=%all,$f], ERROR_CXXFLAGS="$ERROR_CXXFLAGS,$f")
+        done
+      fi
+    fi
+  fi
+
+  if test "x$2" != "x"
+  then
+    UNSUPPORTED=""
+    list="$2"
+    for each in $list
+    do
+      AS_CXX_COMPILER_FLAG($each,
+          WARNING_CXXFLAGS="$WARNING_CXXFLAGS $each",
+          UNSUPPORTED="$UNSUPPORTED $each")
+    done
+    if test "X$UNSUPPORTED" != X ; then
+      AC_MSG_NOTICE([unsupported compiler flags: $UNSUPPORTED])
+    fi
+  fi
+
+  AC_SUBST(WARNING_CXXFLAGS)
+  AC_SUBST(ERROR_CXXFLAGS)
+  AC_MSG_NOTICE([set WARNING_CXXFLAGS to $WARNING_CXXFLAGS])
+  AC_MSG_NOTICE([set ERROR_CXXFLAGS to $ERROR_CXXFLAGS])
+])
+
+dnl Sets the default error level for debugging messages
+AC_DEFUN([AG_GST_SET_LEVEL_DEFAULT],
+[
+  dnl define correct errorlevel for debugging messages. We want to have
+  dnl GST_ERROR messages printed when running cvs builds
+  if test "x[$1]" = "xyes"; then
+    GST_LEVEL_DEFAULT=GST_LEVEL_ERROR
+  else
+    GST_LEVEL_DEFAULT=GST_LEVEL_NONE
+  fi
+  AC_DEFINE_UNQUOTED(GST_LEVEL_DEFAULT, $GST_LEVEL_DEFAULT,
+    [Default errorlevel to use])
+  dnl AC_SUBST so we can use it for win32/common/config.h
+  AC_SUBST(GST_LEVEL_DEFAULT)
+])
diff --git a/common/m4/gst-feature.m4 b/common/m4/gst-feature.m4
new file mode 100644 (file)
index 0000000..c072c79
--- /dev/null
@@ -0,0 +1,284 @@
+dnl Perform a check for a feature for GStreamer
+dnl Richard Boulton <richard-alsa@tartarus.org>
+dnl Thomas Vander Stichele <thomas@apestaart.org> added useful stuff
+dnl Last modification: 25/06/2001
+dnl
+dnl AG_GST_CHECK_FEATURE(FEATURE-NAME, FEATURE-DESCRIPTION,
+dnl                   DEPENDENT-PLUGINS, TEST-FOR-FEATURE,
+dnl                   DISABLE-BY-DEFAULT, ACTION-IF-USE, ACTION-IF-NOTUSE)
+dnl
+dnl This macro adds a command line argument to allow the user to enable
+dnl or disable a feature, and if the feature is enabled, performs a supplied
+dnl test to check if the feature is available.
+dnl
+dnl The test should define HAVE_<FEATURE-NAME> to "yes" or "no" depending
+dnl on whether the feature is available.
+dnl
+dnl The macro will set USE_<FEATURE-NAME> to "yes" or "no" depending on
+dnl whether the feature is to be used.
+dnl Thomas changed this, so that when USE_<FEATURE-NAME> was already set
+dnl to no, then it stays that way.
+dnl
+dnl The macro will call AM_CONDITIONAL(USE_<FEATURE-NAME>, ...) to allow
+dnl the feature to control what is built in Makefile.ams.  If you want
+dnl additional actions resulting from the test, you can add them with the
+dnl ACTION-IF-USE and ACTION-IF-NOTUSE parameters.
+dnl
+dnl FEATURE-NAME        is the name of the feature, and should be in
+dnl                     purely upper case characters.
+dnl FEATURE-DESCRIPTION is used to describe the feature in help text for
+dnl                     the command line argument.
+dnl DEPENDENT-PLUGINS   lists any plug-ins which depend on this feature.
+dnl TEST-FOR-FEATURE    is a test which sets HAVE_<FEATURE-NAME> to "yes"
+dnl                     or "no" depending on whether the feature is
+dnl                     available.
+dnl DISABLE-BY-DEFAULT  if "disabled", the feature is disabled by default,
+dnl                     if any other value, the feature is enabled by default.
+dnl ACTION-IF-USE       any extra actions to perform if the feature is to be
+dnl                     used.
+dnl ACTION-IF-NOTUSE    any extra actions to perform if the feature is not to
+dnl                     be used.
+dnl
+dnl
+dnl thomas :
+dnl we also added a history.
+dnl GST_PLUGINS_YES will contain all plugins to be built
+dnl                 that were checked through AG_GST_CHECK_FEATURE
+dnl GST_PLUGINS_NO will contain those that won't be built
+
+AC_DEFUN([AG_GST_CHECK_FEATURE],
+[echo
+AC_MSG_NOTICE(*** checking feature: [$2] ***)
+if test "x[$3]" != "x"
+then
+  AC_MSG_NOTICE(*** for plug-ins: [$3] ***)
+fi
+dnl
+builtin(define, [gst_endisable], ifelse($5, [disabled], [enable], [disable]))dnl
+dnl if it is set to NO, then don't even consider it for building
+NOUSE=
+if test "x$USE_[$1]" = "xno"; then
+  NOUSE="yes"
+fi
+AC_ARG_ENABLE(translit([$1], A-Z, a-z),
+  [  ]builtin(format, --%-26s gst_endisable %s, gst_endisable-translit([$1], A-Z, a-z), [$2]ifelse([$3],,,: [$3])),
+  [ case "${enableval}" in
+      yes) USE_[$1]=yes;;
+      no) USE_[$1]=no;;
+      *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;;
+    esac],
+  [ USE_$1=]ifelse($5, [disabled], [no], [yes]))           dnl DEFAULT
+
+dnl *** set it back to no if it was preset to no
+if test "x$NOUSE" = "xyes"; then
+  USE_[$1]="no"
+  AC_MSG_WARN(*** $3 pre-configured not to be built)
+fi
+NOUSE=
+
+dnl *** If it's enabled
+
+if test x$USE_[$1] = xyes; then
+  dnl save compile variables before the test
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_[$1]=no
+  dnl TEST_FOR_FEATURE
+  $4
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+  dnl If it isn't found, unset USE_[$1]
+  if test x$HAVE_[$1] = xno; then
+    USE_[$1]=no
+  else
+    ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will be built: [$3])])
+  fi
+fi
+dnl *** Warn if it's disabled or not found
+if test x$USE_[$1] = xyes; then
+  ifelse([$6], , :, [$6])
+  if test "x$3" != "x"; then
+    GST_PLUGINS_YES="\t[$3]\n$GST_PLUGINS_YES"
+  fi
+  AC_DEFINE(HAVE_[$1], , [Define to enable $2]ifelse($3,,, [ (used by $3)]).)
+else
+  ifelse([$3], , :, [AC_MSG_NOTICE(*** These plugins will not be built: [$3])])
+  if test "x$3" != "x"; then
+    GST_PLUGINS_NO="\t[$3]\n$GST_PLUGINS_NO"
+  fi
+  ifelse([$7], , :, [$7])
+fi
+dnl *** Define the conditional as appropriate
+AM_CONDITIONAL(USE_[$1], test x$USE_[$1] = xyes)
+])
+
+dnl Use AC_CHECK_LIB and AC_CHECK_HEADER to do both tests at once
+dnl sets HAVE_module if we have it
+dnl Richard Boulton <richard-alsa@tartarus.org>
+dnl Last modification: 26/06/2001
+dnl AG_GST_CHECK_LIBHEADER(FEATURE-NAME, LIB NAME, LIB FUNCTION, EXTRA LD FLAGS,
+dnl                     HEADER NAME, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
+dnl
+dnl This check was written for GStreamer: it should be renamed and checked
+dnl for portability if you decide to use it elsewhere.
+dnl
+AC_DEFUN([AG_GST_CHECK_LIBHEADER],
+[
+  AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no,[$4])
+  if test "x$HAVE_[$1]" = "xyes"; then
+    AC_CHECK_HEADER([$5], :, HAVE_[$1]=no)
+    if test "x$HAVE_[$1]" = "xyes"; then
+      dnl execute what needs to be
+      ifelse([$6], , :, [$6])
+    else
+      ifelse([$7], , :, [$7])
+    fi
+  else
+    ifelse([$7], , :, [$7])
+  fi
+  AC_SUBST(HAVE_[$1])
+]
+)
+
+dnl 2004-02-14 Thomas - changed to get set properly and use proper output
+dnl 2003-06-27 Benjamin Otte - changed to make this work with gstconfig.h
+dnl
+dnl Add a subsystem --disable flag and all the necessary symbols and substitions
+dnl
+dnl AG_GST_CHECK_SUBSYSTEM_DISABLE(SYSNAME, [subsystem name])
+dnl
+AC_DEFUN([AG_GST_CHECK_SUBSYSTEM_DISABLE],
+[
+  dnl this define will replace each literal subsys_def occurrence with
+  dnl the lowercase hyphen-separated subsystem
+  dnl e.g. if $1 is GST_DEBUG then subsys_def will be a macro with gst-debug
+  define([subsys_def],translit([$1], _A-Z, -a-z))
+
+  AC_ARG_ENABLE(subsys_def,
+    AC_HELP_STRING(--disable-subsys_def, [disable $2]),
+    [
+      case "${enableval}" in
+        yes) GST_DISABLE_[$1]=no ;;
+        no) GST_DISABLE_[$1]=yes ;;
+        *) AC_MSG_ERROR([bad value ${enableval} for --enable-subsys_def]) ;;
+       esac
+    ],
+    [GST_DISABLE_[$1]=no]) dnl Default value
+
+  if test x$GST_DISABLE_[$1] = xyes; then
+    AC_MSG_NOTICE([disabled subsystem [$2]])
+    GST_DISABLE_[$1]_DEFINE="#define GST_DISABLE_$1 1"
+  else
+    GST_DISABLE_[$1]_DEFINE="/* #undef GST_DISABLE_$1 */"
+  fi
+  AC_SUBST(GST_DISABLE_[$1]_DEFINE)
+  undefine([subsys_def])
+])
+
+
+dnl Parse gstconfig.h for feature and defines add the symbols and substitions
+dnl
+dnl AG_GST_PARSE_SUBSYSTEM_DISABLE(GST_CONFIGPATH, FEATURE)
+dnl
+AC_DEFUN([AG_GST_PARSE_SUBSYSTEM_DISABLE],
+[
+  grep >/dev/null "#undef GST_DISABLE_$2" $1
+  if test $? = 0; then
+    GST_DISABLE_[$2]=0
+  else
+    GST_DISABLE_[$2]=1
+  fi
+  AC_SUBST(GST_DISABLE_[$2])
+])
+
+dnl Parse gstconfig.h and defines add the symbols and substitions
+dnl
+dnl GST_CONFIGPATH=`$PKG_CONFIG --variable=includedir gstreamer-0.10`"/gst/gstconfig.h"
+dnl AG_GST_PARSE_SUBSYSTEM_DISABLES(GST_CONFIGPATH)
+dnl
+AC_DEFUN([AG_GST_PARSE_SUBSYSTEM_DISABLES],
+[
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,GST_DEBUG)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,LOADSAVE)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,PARSE)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,TRACE)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,ALLOC_TRACE)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,REGISTRY)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,PLUGIN)
+  AG_GST_PARSE_SUBSYSTEM_DISABLE($1,XML)
+])
+
+dnl AG_GST_CHECK_GST_DEBUG_DISABLED(ACTION-IF-DISABLED, ACTION-IF-NOT-DISABLED)
+dnl
+dnl Checks if the GStreamer debugging system is disabled in the core version
+dnl we are compiling against (by checking gstconfig.h)
+dnl
+AC_DEFUN([AG_GST_CHECK_GST_DEBUG_DISABLED],
+[
+  AC_REQUIRE([AG_GST_CHECK_GST])
+
+  AC_MSG_CHECKING([whether the GStreamer debugging system is enabled])
+  AC_LANG_PUSH([C])
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$GST_CFLAGS $CFLAGS"
+  AC_COMPILE_IFELSE([
+      #include <gst/gstconfig.h>
+      #ifdef GST_DISABLE_GST_DEBUG
+      #error "debugging disabled, make compiler fail"
+      #endif], [ debug_system_enabled=yes], [debug_system_enabled=no])
+  CFLAGS="$save_CFLAGS"
+  AC_LANG_POP([C])
+
+  AC_MSG_RESULT([$debug_system_enabled])
+
+  if test "x$debug_system_enabled" = "xyes" ; then
+    $2
+    true
+  else
+    $1
+    true
+  fi
+])
+
+dnl relies on GST_PLUGINS_ALL, GST_PLUGINS_SELECTED, GST_PLUGINS_YES,
+dnl GST_PLUGINS_NO, and BUILD_EXTERNAL
+AC_DEFUN([AG_GST_OUTPUT_PLUGINS], [
+
+printf "configure: *** Plug-ins without external dependencies that will be built:\n"
+( for i in $GST_PLUGINS_SELECTED; do printf '\t'$i'\n'; done ) | sort
+printf "\n"
+
+printf "configure: *** Plug-ins without external dependencies that will NOT be built:\n"
+( for i in $GST_PLUGINS_ALL; do
+    case " $GST_PLUGINS_SELECTED " in
+      *\ $i\ *)
+       ;;
+      *)
+       printf '\t'$i'\n'
+       ;;
+    esac
+  done ) | sort
+printf "\n"
+
+if test "x$BUILD_EXTERNAL" = "xno"; then
+  printf "configure: *** No plug-ins with external dependencies will be built\n"
+else
+  printf "configure: *** Plug-ins with dependencies that will be built:"
+  printf "$GST_PLUGINS_YES\n" | sort
+  printf "\n"
+  printf "configure: *** Plug-ins with dependencies that will NOT be built:"
+  printf "$GST_PLUGINS_NO\n" | sort
+  printf "\n"
+fi
+])
+
diff --git a/common/m4/gst-function.m4 b/common/m4/gst-function.m4
new file mode 100644 (file)
index 0000000..61adfd3
--- /dev/null
@@ -0,0 +1,63 @@
+dnl
+dnl Check for compiler mechanism to show functions in debugging
+dnl copied from an Ali patch floating on the internet
+dnl
+AC_DEFUN([AG_GST_CHECK_FUNCTION],[
+  dnl #1: __PRETTY_FUNCTION__
+  AC_MSG_CHECKING(whether $CC implements __PRETTY_FUNCTION__)
+  AC_CACHE_VAL(gst_cv_have_pretty_function,[
+    AC_TRY_LINK([#include <stdio.h>],
+                [printf("%s", __PRETTY_FUNCTION__);],
+                gst_cv_have_pretty_function=yes,
+                gst_cv_have_pretty_function=no)
+  ])
+  AC_MSG_RESULT($gst_cv_have_pretty_function)
+  if test "$gst_cv_have_pretty_function" = yes; then
+    AC_DEFINE(HAVE_PRETTY_FUNCTION, 1,
+              [defined if the compiler implements __PRETTY_FUNCTION__])
+  fi
+
+dnl #2: __FUNCTION__
+  AC_MSG_CHECKING(whether $CC implements __FUNCTION__)
+  AC_CACHE_VAL(gst_cv_have_function,[
+    AC_TRY_LINK([#include <stdio.h>],
+                [printf("%s", __FUNCTION__);],
+                gst_cv_have_function=yes,
+                gst_cv_have_function=no)
+  ])
+  AC_MSG_RESULT($gst_cv_have_function)
+  if test "$gst_cv_have_function" = yes; then
+    AC_DEFINE(HAVE_FUNCTION, 1,
+              [defined if the compiler implements __FUNCTION__])
+  fi
+
+dnl #3: __func__
+  AC_MSG_CHECKING(whether $CC implements __func__)
+  AC_CACHE_VAL(gst_cv_have_func,[
+    AC_TRY_LINK([#include <stdio.h>],
+                [printf("%s", __func__);],
+                gst_cv_have_func=yes,
+                gst_cv_have_func=no)
+  ])
+  AC_MSG_RESULT($gst_cv_have_func)
+  if test "$gst_cv_have_func" = yes; then
+    AC_DEFINE(HAVE_FUNC, 1,
+              [defined if the compiler implements __func__])
+  fi
+
+dnl now define FUNCTION to whatever works, and fallback to ""
+  if test "$gst_cv_have_pretty_function" = yes; then
+    function=__PRETTY_FUNCTION__
+  else
+    if test "$gst_cv_have_function" = yes; then
+      function=__FUNCTION__
+    else
+      if test "$gst_cv_have_func" = yes; then
+        function=__func__
+      else
+        function=\"\"
+      fi
+    fi
+  fi
+  AC_DEFINE_UNQUOTED(GST_FUNCTION, $function, [macro to use to show function name])
+])
diff --git a/common/m4/gst-gettext.m4 b/common/m4/gst-gettext.m4
new file mode 100644 (file)
index 0000000..a63651b
--- /dev/null
@@ -0,0 +1,21 @@
+dnl gettext setup
+
+dnl AG_GST_GETTEXT([gettext-package])
+dnl defines GETTEXT_PACKAGE and LOCALEDIR
+
+AC_DEFUN([AG_GST_GETTEXT],
+[
+  if test "$USE_NLS" = "yes"; then
+    GETTEXT_PACKAGE=[$1]
+  else
+    GETTEXT_PACKAGE=[NULL]
+  fi
+  AC_SUBST(GETTEXT_PACKAGE)
+  AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE",
+                     [gettext package name])
+
+  dnl define LOCALEDIR in config.h
+  AS_AC_EXPAND(LOCALEDIR, $datadir/locale)
+  AC_DEFINE_UNQUOTED([LOCALEDIR], "$LOCALEDIR",
+                     [gettext locale dir])
+])
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
new file mode 100644 (file)
index 0000000..b01f02f
--- /dev/null
@@ -0,0 +1,75 @@
+dnl check for a minimum version of GLib
+
+dnl AG_GST_GLIB_CHECK([minimum-version-required])
+
+AC_DEFUN([AG_GST_GLIB_CHECK],
+[
+  AC_REQUIRE([AS_NANO])
+
+  dnl Minimum required version of GLib
+  GLIB_REQ=[$1]
+  if test "x$GLIB_REQ" = "x"
+  then
+    AC_MSG_ERROR([Please specify a required version for GLib 2.0])
+  fi
+  AC_SUBST(GLIB_REQ)
+
+  dnl Check for glib with everything
+  AG_GST_PKG_CHECK_MODULES(GLIB,
+    glib-2.0 >= $GLIB_REQ gobject-2.0 gthread-2.0 gmodule-no-export-2.0)
+
+  if test "x$HAVE_GLIB" = "xno"; then
+    AC_MSG_ERROR([This package requires GLib >= $GLIB_REQ to compile.])
+  fi
+
+  dnl Add define to tell GLib that threading is always enabled within GStreamer
+  dnl code (optimisation, bypasses checks if the threading system is enabled
+  dnl when using threading primitives)
+  GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY"
+
+  dnl Define G_DISABLE_DEPRECATED for GIT versions
+  if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED"
+  fi
+
+  AC_ARG_ENABLE(gobject-cast-checks,
+    AS_HELP_STRING([--enable-gobject-cast-checks[=@<:@no/auto/yes@:>@]],
+      [Enable GObject cast checks]),, 
+    [enable_gobject_cast_checks=auto])
+
+  if test "x$enable_gobject_cast_checks" = "xauto"; then
+    dnl For releases, turn off the cast checks
+    if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+      enable_gobject_cast_checks=yes
+    else
+      enable_gobject_cast_checks=no
+    fi
+  fi
+
+  if test "x$enable_gobject_cast_checks" = "xno"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_CAST_CHECKS"
+  fi
+
+  AC_ARG_ENABLE(glib-asserts,
+    AS_HELP_STRING([--enable-glib-asserts[=@<:@no/auto/yes@:>@]],
+      [Enable GLib assertion]),, 
+    [enable_glib_assertions=auto])
+
+  if test "x$enable_glib_assertions" = "xauto"; then
+    dnl For releases, turn off the assertions
+    if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+      enable_glib_assertions=yes
+    else
+      enable_glib_assertions=no
+    fi
+  fi
+
+  if test "x$enable_glib_assertions" = "xno"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_ASSERT"
+  fi
+
+  dnl for the poor souls who for example have glib in /usr/local
+  AS_SCRUB_INCLUDE(GLIB_CFLAGS)
+
+  AC_SUBST(GLIB_EXTRA_CFLAGS)
+])
diff --git a/common/m4/gst-libxml2.m4 b/common/m4/gst-libxml2.m4
new file mode 100644 (file)
index 0000000..4a843f0
--- /dev/null
@@ -0,0 +1,52 @@
+dnl call this macro with the minimum required version as an argument
+dnl this macro sets and AC_SUBSTs XML_CFLAGS and XML_LIBS
+dnl it also sets LIBXML_PKG, used for the pkg-config file
+
+AC_DEFUN([AG_GST_LIBXML2_CHECK],
+[
+  dnl Minimum required version of libxml2
+  dnl default to 2.4.9 if not specified
+  LIBXML2_REQ=ifelse([$1],,2.4.9,[$1])
+  AC_SUBST(LIBXML2_REQ)
+
+  dnl check for libxml2
+  PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_REQ,
+                    HAVE_LIBXML2=yes, [
+                      AC_MSG_RESULT(no)
+                      HAVE_LIBXML2=no
+                    ])
+  if test "x$HAVE_LIBXML2" = "xyes"; then
+    AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 is available])
+  else
+    AC_MSG_ERROR([
+        Need libxml2 and development headers/files to build GStreamer.
+
+        You can do without libxml2 if you pass --disable-loadsave to
+        configure, but that breaks ABI, so don't do that unless you
+        are building for an embedded setup and know what you are doing.
+    ])
+  fi
+  dnl this is for the .pc file
+  LIBXML_PKG=', libxml-2.0'
+  AC_SUBST(LIBXML_PKG)
+  AC_SUBST(XML_LIBS)
+  AC_SUBST(XML_CFLAGS)
+
+  dnl XML_LIBS might pull in -lz without zlib actually being on the system, so
+  dnl try linking with these LIBS and CFLAGS
+  ac_save_CFLAGS=$CFLAGS
+  ac_save_LIBS=$LIBS
+  CFLAGS="$CFLAGS $XML_CFLAGS"
+  LIBS="$LIBS $XML_LIBS"
+  AC_TRY_LINK([
+#include <libxml/tree.h>
+#include <stdio.h>
+],[
+/* function body */
+],
+    AC_MSG_NOTICE([Test xml2 program linked]),
+    AC_MSG_ERROR([Could not link libxml2 test program.  Check if you have the necessary dependencies.])
+  )
+  CFLAGS="$ac_save_CFLAGS"
+  LIBS="$ac_save_LIBS"
+])
diff --git a/common/m4/gst-package-release-datetime.m4 b/common/m4/gst-package-release-datetime.m4
new file mode 100644 (file)
index 0000000..126919b
--- /dev/null
@@ -0,0 +1,89 @@
+dnl macros to set GST_PACKAGE_RELEASE_DATETIME
+
+dnl ===========================================================================
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME
+dnl
+dnl Usage:
+dnl
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME()
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([no]...)
+dnl sets the release datetime to the current date
+dnl (no = this is not a release, but git or prerelease)
+dnl
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([YYYY-MM-DD])
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([yes], [YYYY-MM-DD])
+dnl sets the release datetime to the specified date (and time, if given)
+dnl (yes = this is a release, not git or prerelease)
+dnl
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([yes], [DOAP-FILE], [RELEASE-VERSION])
+dnl sets the release date to the release date associated with version
+dnl RELEASE-VERSION in the .doap file DOAP-FILE
+dnl (yes = this is a release, not git or prerelease)
+dnl
+dnl We need to treat pre-releases like git because there won't be an entry
+dnl in the .doap file for pre-releases yet, and we don't want to use the
+dnl date of the last release either.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_SET_PACKAGE_RELEASE_DATETIME],
+[
+  dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME()
+  dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([yes]...)
+  if test "x$1" = "xno" -o "x$1" = "x"; then
+    GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"`
+  elif test "x$1" = "xyes"; then
+    dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([no], ["YYYY-MM-DD"])
+    dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([no], [DOAP-FILE], [RELEASE-VERSION])
+    if ( echo $1 | grep -e '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
+      GST_PACKAGE_RELEASE_DATETIME=$1
+    else
+      dnl we assume the .doap file contains the date as YYYY-MM-DD
+      YYYY_MM_DD=`sh "${srcdir}/common/extract-release-date-from-doap-file" $3 $2`;
+      if test "x$YYYY_MM_DD" != "x"; then
+        GST_PACKAGE_RELEASE_DATETIME=$YYYY_MM_DD
+      else
+        AC_MSG_ERROR([SET_PACKAGE_RELEASE_DATETIME: could not extract
+            release date for release version $3 from $2])
+        GST_PACKAGE_RELEASE_DATETIME=""
+      fi
+    fi
+  dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([YYYY-MM-DD])
+  elif ( echo $1 | grep -e '^20[1-9][0-9]-[0-1][0-9]-[0-3][0-9]' >/dev/null ) ; then
+    GST_PACKAGE_RELEASE_DATETIME=$1
+  else
+    AC_MSG_WARN([SET_PACKAGE_RELEASE_DATETIME: invalid first argument])
+    GST_PACKAGE_RELEASE_DATETIME=""
+  fi
+
+  if test "x$GST_PACKAGE_RELEASE_DATETIME" = "x"; then
+    AC_MSG_WARN([Invalid package release date time: $GST_PACKAGE_RELEASE_DATETIME])
+  else
+    AC_MSG_NOTICE([Setting GST_PACKAGE_RELEASE_DATETIME to $GST_PACKAGE_RELEASE_DATETIME])
+
+    AC_DEFINE_UNQUOTED([GST_PACKAGE_RELEASE_DATETIME],
+        ["$GST_PACKAGE_RELEASE_DATETIME"],
+        [GStreamer package release date/time for plugins as YYYY-MM-DD])
+  fi
+])
+
+dnl ===========================================================================
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO
+dnl
+dnl Usage:
+dnl
+dnl AG_GST_SET_PACKAGE_RELEASE_DATETIME([NANO-VERSION], [DOAP-FILE], [RELEASE-VERSION])
+dnl if NANO-VERSION is 0, sets the release date to the release date associated
+dnl with version RELEASE-VERSION in the .doap file DOAP-FILE, otherwise sets
+dnl the release date and time to the current date/time.
+dnl
+dnl We need to treat pre-releases like git because there won't be an entry
+dnl in the .doap file for pre-releases yet, and we don't want to use the
+dnl date of the last release either.
+dnl ===========================================================================
+AC_DEFUN([AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO],
+[
+  if test "x$1" = "x0"; then
+    AG_GST_SET_PACKAGE_RELEASE_DATETIME([yes], [ $2 ], [ $3 ])
+  else
+    AG_GST_SET_PACKAGE_RELEASE_DATETIME([no])
+  fi
+])
diff --git a/common/m4/gst-parser.m4 b/common/m4/gst-parser.m4
new file mode 100644 (file)
index 0000000..2cae45d
--- /dev/null
@@ -0,0 +1,55 @@
+AC_DEFUN([AG_GST_BISON_CHECK],
+[
+  dnl FIXME: check if AC_PROG_YACC is suitable here
+  dnl FIXME: make precious
+  AC_PATH_PROG(BISON_PATH, bison, no)
+  if test x$BISON_PATH = xno; then
+    AC_MSG_ERROR(Could not find bison)
+  fi
+
+  dnl check bison version
+  dnl we need version >= 1.875 for the reentrancy support
+  dnl in the parser.
+  dnl First lines observed: 'bison (GNU Bison) 2.3' or 'GNU Bison version 1.28'
+  bison_min_version=1.875
+  bison_version=`$BISON_PATH --version | head -n 1 |  sed 's/^[[^0-9]]*//' | sed 's/[[^0-9]]*$//' | cut -d' ' -f1`
+  AC_MSG_CHECKING([bison version $bison_version >= $bison_min_version])
+
+  if perl -we "exit ((v$bison_version ge v$bison_min_version) ? 0 : 1)"; then
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_ERROR([no])
+  fi
+])
+
+AC_DEFUN([AG_GST_FLEX_CHECK],
+[
+  dnl we require flex for building the parser
+  AC_PATH_PROG(FLEX_PATH, flex, no)
+  if test x$FLEX_PATH = xno; then
+    AC_MSG_ERROR(Could not find flex)
+  fi
+
+  dnl check flex version
+  dnl we need version >= 2.5.31 for the reentrancy support
+  dnl in the parser.
+  flex_min_version=2.5.31
+  flex_version=`$FLEX_PATH --version | head -n 1 | sed 's/^.* //' | sed 's/[[a-zA-Z]]*$//' | cut -d' ' -f1`
+  AC_MSG_CHECKING([flex version $flex_version >= $flex_min_version])
+  if perl -w <<EOF
+    (\$min_version_major, \$min_version_minor, \$min_version_micro ) = "$flex_min_version" =~ /(\d+)\.(\d+)\.(\d+)/;
+    (\$flex_version_major, \$flex_version_minor, \$flex_version_micro ) = "$flex_version" =~ /(\d+)\.(\d+)\.(\d+)/;
+    exit (((\$flex_version_major > \$min_version_major) ||
+     ((\$flex_version_major == \$min_version_major) &&
+      (\$flex_version_minor > \$min_version_minor)) ||
+     ((\$flex_version_major == \$min_version_major) &&
+      (\$flex_version_minor == \$min_version_minor) &&
+      (\$flex_version_micro >= \$min_version_micro)))
+     ? 0 : 1);
+EOF
+  then
+    AC_MSG_RESULT(yes)
+  else
+    AC_MSG_ERROR([no])
+  fi
+])
diff --git a/common/m4/gst-platform.m4 b/common/m4/gst-platform.m4
new file mode 100644 (file)
index 0000000..40d6faf
--- /dev/null
@@ -0,0 +1,67 @@
+dnl AG_GST_PLATFORM
+dnl Check for platform specific features and define some variables
+dnl
+dnl GST_EXTRA_MODULE_SUFFIX: contains a platform specific
+dnl   extra module suffix additional to G_MODULE_SUFFIX
+dnl
+dnl HAVE_OSX: Defined if compiling for OS X
+dnl
+dnl GST_HAVE_UNSAFE_FORK: Defined if fork is unsafe (Windows)
+dnl
+dnl HAVE_WIN32: Defined if compiling on Win32
+dnl
+
+AC_DEFUN([AG_GST_PLATFORM],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+
+  case $host_os in
+    rhapsody*)
+      AC_DEFINE_UNQUOTED(GST_EXTRA_MODULE_SUFFIX, [".dylib"], [Extra platform specific plugin suffix])
+      ;;
+    darwin*)
+      AC_DEFINE_UNQUOTED(GST_EXTRA_MODULE_SUFFIX, [".dylib"], [Extra platform specific plugin suffix])
+      AC_DEFINE_UNQUOTED(HAVE_OSX, 1, [Defined if compiling for OSX])
+      ;;
+    cygwin*)
+      AC_DEFINE_UNQUOTED(GST_HAVE_UNSAFE_FORK, 1, [Defined when registry scanning through fork is unsafe])
+      ;;
+    mingw* | msvc* | mks*)
+      dnl HAVE_WIN32 currently means "disable POSIXisms".
+      AC_DEFINE_UNQUOTED(HAVE_WIN32, 1, [Defined if compiling for Windows])
+
+      dnl define __MSVCRT_VERSION__ version if not set already by the
+      dnl compiler (ie. mostly for mingw). This is needed for things like
+      dnl __stat64 to be available. If set by the compiler, ensure it's
+      dnl new enough - we need at least WinXP SP2.
+      AC_TRY_COMPILE([ ], [ return __MSVCRT_VERSION__; ], [
+          AC_TRY_COMPILE([ ], [
+            #if __MSVCRT_VERSION__ < 0x0601
+            #error "MSVCRT too old"
+            #endif
+          ], [
+            AC_MSG_NOTICE([MSVCRT version looks ok])
+          ], [
+            AC_MSG_ERROR([MSVCRT version too old, need at least WinXP SP2])
+          ])
+      ], [
+        AC_MSG_NOTICE([Setting MSVCRT version to 0x0601])
+        AC_DEFINE_UNQUOTED(__MSVCRT_VERSION__, 0x0601, [We need at least WinXP SP2 for __stat64])
+      ])
+      ;;
+     *)
+      ;;
+  esac
+])
+
+AC_DEFUN([AG_GST_LIBTOOL_PREPARE],
+[
+  dnl Persuade libtool to also link (-l) a 'pure' (DirectX) static lib,
+  dnl i.e. as opposed to only import lib with dll counterpart.
+  dnl Needs to be tweaked before libtool's checks.
+  case $host_os in
+  cygwin* | mingw*)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+])
\ No newline at end of file
diff --git a/common/m4/gst-plugin-docs.m4 b/common/m4/gst-plugin-docs.m4
new file mode 100644 (file)
index 0000000..dcfd61d
--- /dev/null
@@ -0,0 +1,21 @@
+dnl AG_GST_PLUGIN_DOCS([MINIMUM-GTK-DOC-VERSION],[MINIMUM-PYTHON-VERSION])
+dnl
+dnl checks for prerequisites for the common/mangle-tmpl.py script
+dnl used when building the plugin documentation
+
+AC_DEFUN([AG_GST_PLUGIN_DOCS],
+[
+  AC_BEFORE([GTK_DOC_CHECK],[$0])dnl check for gtk-doc first
+  AC_BEFORE([AS_PATH_PYTHON],[$1])dnl find python first
+
+  build_plugin_docs=no
+  AC_MSG_CHECKING([whether to build plugin documentation])
+  if test x$enable_gtk_doc = xyes; then
+    build_plugin_docs=yes
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no (gtk-doc disabled or not available)])
+  fi
+
+  AM_CONDITIONAL(ENABLE_PLUGIN_DOCS, test x$build_plugin_docs = xyes)
+])
diff --git a/common/m4/gst-plugindir.m4 b/common/m4/gst-plugindir.m4
new file mode 100644 (file)
index 0000000..09989d0
--- /dev/null
@@ -0,0 +1,17 @@
+dnl AG_GST_SET_PLUGINDIR
+
+dnl AC_DEFINE PLUGINDIR to the full location where plug-ins will be installed
+dnl AC_SUBST plugindir, to be used in Makefile.am's
+
+AC_DEFUN([AG_GST_SET_PLUGINDIR],
+[
+  dnl define location of plugin directory
+  AS_AC_EXPAND(PLUGINDIR, ${libdir}/gstreamer-$GST_MAJORMINOR)
+  AC_DEFINE_UNQUOTED(PLUGINDIR, "$PLUGINDIR",
+    [directory where plugins are located])
+  AC_MSG_NOTICE([Using $PLUGINDIR as the plugin install location])
+
+  dnl plugin directory configure-time variable for use in Makefile.am
+  plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
+  AC_SUBST(plugindir)
+])
diff --git a/common/m4/gst-valgrind.m4 b/common/m4/gst-valgrind.m4
new file mode 100644 (file)
index 0000000..5c0d608
--- /dev/null
@@ -0,0 +1,35 @@
+AC_DEFUN([AG_GST_VALGRIND_CHECK],
+[
+  dnl valgrind inclusion
+  AC_ARG_ENABLE(valgrind,
+    AC_HELP_STRING([--disable-valgrind], [disable run-time valgrind detection]),
+    [
+      case "${enableval}" in
+        yes) USE_VALGRIND="$USE_DEBUG" ;;
+        no)  USE_VALGRIND=no ;;
+        *) AC_MSG_ERROR(bad value ${enableval} for --enable-valgrind) ;;
+      esac],
+    [
+      USE_VALGRIND="$USE_DEBUG"
+    ]) dnl Default value
+
+  VALGRIND_REQ="3.0"
+  if test "x$USE_VALGRIND" = xyes; then
+    PKG_CHECK_MODULES(VALGRIND, valgrind >= $VALGRIND_REQ,
+      USE_VALGRIND="yes",
+      [
+        USE_VALGRIND="no"
+        AC_MSG_RESULT([no])
+      ])
+  fi
+
+  if test "x$USE_VALGRIND" = xyes; then
+    AC_DEFINE(HAVE_VALGRIND, 1, [Define if valgrind should be used])
+    AC_MSG_NOTICE(Using extra code paths for valgrind)
+  fi
+  AC_SUBST(VALGRIND_CFLAGS)
+  AC_SUBST(VALGRIND_LIBS)
+
+  AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
+  AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
+])
diff --git a/common/m4/gst-x11.m4 b/common/m4/gst-x11.m4
new file mode 100644 (file)
index 0000000..d3baf2d
--- /dev/null
@@ -0,0 +1,70 @@
+dnl macros for X-related detections
+dnl AC_SUBST's HAVE_X, X_CFLAGS, X_LIBS
+AC_DEFUN([AG_GST_CHECK_X],
+[
+  AC_PATH_XTRA
+  ac_cflags_save="$CFLAGS"
+  ac_cppflags_save="$CPPFLAGS"
+  CFLAGS="$CFLAGS $X_CFLAGS"
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+
+  dnl now try to find the HEADER
+  AC_CHECK_HEADER(X11/Xlib.h, HAVE_X="yes", HAVE_X="no")
+
+  if test "x$HAVE_X" = "xno"
+  then
+    AC_MSG_NOTICE([cannot find X11 development files])
+  else
+    dnl this is much more than we want
+    X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
+    dnl AC_PATH_XTRA only defines the path needed to find the X libs,
+    dnl it does not add the libs; therefore we add them here
+    X_LIBS="$X_LIBS -lX11"
+    AC_SUBST(X_CFLAGS)
+    AC_SUBST(X_LIBS)
+  fi
+  AC_SUBST(HAVE_X)
+
+  CFLAGS="$ac_cflags_save"
+  CPPFLAGS="$ac_cppflags_save"
+])
+
+dnl *** XVideo ***
+dnl Look for the PIC library first, Debian requires it.
+dnl Check debian-devel archives for gory details.
+dnl 20020110:
+dnl At the moment XFree86 doesn't distribute shared libXv due
+dnl to unstable API.  On many platforms you CAN NOT link a shared
+dnl lib to a static non-PIC lib.  This is what the xvideo GStreamer
+dnl plug-in wants to do.  So Debian distributes a PIC compiled
+dnl version of the static lib for plug-ins to link to when it is
+dnl inappropriate to link the main application to libXv directly.
+dnl FIXME: add check if this platform can support linking to a
+dnl        non-PIC libXv, if not then don not use Xv.
+dnl FIXME: perhaps warn user if they have a shared libXv since
+dnl        this is an error until XFree86 starts shipping one
+AC_DEFUN([AG_GST_CHECK_XV],
+[
+  if test x$HAVE_X = xyes; then
+    AC_CHECK_LIB(Xv_pic, XvQueryExtension,
+                 HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
+                 $X_LIBS -lXext)
+
+    if test x$HAVE_XVIDEO = xyes; then
+      XVIDEO_LIBS="-lXv_pic -lXext"
+      AC_SUBST(XVIDEO_LIBS)
+    else
+      dnl try again using something else if we didn't find it first
+      if test x$HAVE_XVIDEO = xno; then
+        AC_CHECK_LIB(Xv, XvQueryExtension,
+                   HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
+                   $X_LIBS -lXext)
+
+        if test x$HAVE_XVIDEO = xyes; then
+          XVIDEO_LIBS="-lXv -lXext"
+          AC_SUBST(XVIDEO_LIBS)
+        fi
+      fi
+    fi
+  fi
+])
diff --git a/common/m4/gst.m4 b/common/m4/gst.m4
new file mode 100644 (file)
index 0000000..ddfde51
--- /dev/null
@@ -0,0 +1,31 @@
+dnl AG_GST_INIT
+dnl sets up use of GStreamer configure.ac macros
+dnl all GStreamer autoconf macros are prefixed
+dnl with AG_GST_ for public macros
+dnl with _AG_GST_ for private macros
+
+AC_DEFUN([AG_GST_INIT],
+[
+  m4_pattern_forbid(^_?AG_GST_)
+])
+
+dnl AG_GST_PKG_CONFIG_PATH
+dnl
+dnl sets up a GST_PKG_CONFIG_PATH variable for use in Makefile.am
+dnl which contains the path of the in-tree pkgconfig directory first
+dnl and then any paths specified in PKG_CONFIG_PATH.
+dnl
+dnl We do this mostly so we don't have to use unportable shell constructs
+dnl such as ${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH} in Makefile.am to handle
+dnl the case where the environment variable is not set, but also in order
+dnl to avoid a trailing ':' in the PKG_CONFIG_PATH which apparently causes
+dnl problems with pkg-config on windows with msys/mingw.
+AC_DEFUN([AG_GST_PKG_CONFIG_PATH],
+[
+  GST_PKG_CONFIG_PATH="\$(top_builddir)/pkgconfig"
+  if test "x$PKG_CONFIG_PATH" != "x"; then
+    GST_PKG_CONFIG_PATH="$GST_PKG_CONFIG_PATH:$PKG_CONFIG_PATH"
+  fi
+  AC_SUBST([GST_PKG_CONFIG_PATH])
+  AC_MSG_NOTICE([Using GST_PKG_CONFIG_PATH = $GST_PKG_CONFIG_PATH])
+])
diff --git a/common/m4/gtk-doc.m4 b/common/m4/gtk-doc.m4
new file mode 100644 (file)
index 0000000..39a4e7d
--- /dev/null
@@ -0,0 +1,42 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH([html-dir],
+    AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST([HTML_DIR])
+
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE([gtk-doc],
+    AS_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [[default=no]]]),,
+    [enable_gtk_doc=no])
+
+  if test x$enable_gtk_doc = xyes; then
+    ifelse([$1],[],
+      [PKG_CHECK_EXISTS([gtk-doc],,
+                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build gtk-doc]))])
+    if test -z "$SED"; then
+      AC_PROG_SED
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to build gtk-doc documentation])
+  AC_MSG_RESULT($enable_gtk_doc)
+
+  AC_PATH_PROGS(GTKDOC_CHECK,gtkdoc-check,)
+
+  AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+  AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+])
diff --git a/common/m4/introspection.m4 b/common/m4/introspection.m4
new file mode 100644 (file)
index 0000000..589721c
--- /dev/null
@@ -0,0 +1,94 @@
+dnl -*- mode: autoconf -*-
+dnl Copyright 2009 Johan Dahlin
+dnl
+dnl This file is free software; the author(s) gives unlimited
+dnl permission to copy and/or distribute it, with or without
+dnl modifications, as long as this notice is preserved.
+dnl
+
+# serial 1
+
+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+[
+    AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+    AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+    AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
+
+    dnl enable/disable introspection
+    m4_if([$2], [require],
+    [dnl
+        enable_introspection=yes
+    ],[dnl
+        AC_ARG_ENABLE(introspection,
+                  AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
+                                 [Enable introspection for this build]),, 
+                                 [enable_introspection=auto])
+    ])dnl
+
+    AC_MSG_CHECKING([for gobject-introspection])
+
+    dnl presence/version checking
+    AS_CASE([$enable_introspection],
+    [no], [dnl
+        found_introspection="no (disabled, use --enable-introspection to enable)"
+    ],dnl
+    [yes],[dnl
+        PKG_CHECK_EXISTS([gobject-introspection-1.0],,
+                         AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
+        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
+                         found_introspection=yes,
+                         AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
+    ],dnl
+    [auto],[dnl
+        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
+    ],dnl
+    [dnl       
+        AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+    ])dnl
+
+    AC_MSG_RESULT([$found_introspection])
+
+    INTROSPECTION_SCANNER=
+    INTROSPECTION_COMPILER=
+    INTROSPECTION_GENERATE=
+    INTROSPECTION_GIRDIR=
+    INTROSPECTION_TYPELIBDIR=
+    if test "x$found_introspection" = "xyes"; then
+       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
+       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
+       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
+    fi
+    AC_SUBST(INTROSPECTION_SCANNER)
+    AC_SUBST(INTROSPECTION_COMPILER)
+    AC_SUBST(INTROSPECTION_GENERATE)
+    AC_SUBST(INTROSPECTION_GIRDIR)
+    AC_SUBST(INTROSPECTION_TYPELIBDIR)
+    AC_SUBST(INTROSPECTION_CFLAGS)
+    AC_SUBST(INTROSPECTION_LIBS)
+    AC_SUBST(INTROSPECTION_MAKEFILE)
+
+    AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
+])
+
+
+dnl Usage:
+dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
+
+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
+[
+  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
+])
+
+dnl Usage:
+dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
+
+
+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
+[
+  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
+])
diff --git a/common/m4/orc.m4 b/common/m4/orc.m4
new file mode 100644 (file)
index 0000000..26b2459
--- /dev/null
@@ -0,0 +1,70 @@
+dnl pkg-config-based checks for Orc
+
+dnl specific:
+dnl ORC_CHECK([REQUIRED_VERSION])
+
+AC_DEFUN([ORC_CHECK],
+[
+  ORC_REQ=ifelse([$1], , "0.4.6", [$1])
+
+  AC_ARG_ENABLE(orc,
+  AC_HELP_STRING([--enable-orc],[use Orc if installed]),
+  [case "${enableval}" in
+    auto) enable_orc=auto ;;
+    yes) enable_orc=yes ;;
+    no)  enable_orc=no ;;
+    *) AC_MSG_ERROR(bad value ${enableval} for --enable-orc) ;;
+  esac
+  ],
+  [enable_orc=auto]) dnl Default value
+
+  if test "x$enable_orc" != "xno" ; then
+    PKG_CHECK_MODULES(ORC, orc-0.4 >= $ORC_REQ, [
+      AC_DEFINE(HAVE_ORC, 1, [Use Orc])
+      HAVE_ORC=yes
+      if test "x$ORCC" = "x" ; then
+        AC_MSG_CHECKING(for usable orcc)
+        ORCC=`$PKG_CONFIG --variable=orcc orc-0.4`
+        dnl check whether the orcc found by pkg-config can be run from the build environment
+        dnl if this is not the case (e.g. when cross-compiling) fall back to orcc from PATH
+        AS_IF([$ORCC --version 1> /dev/null 2> /dev/null], [], [ORCC=`which orcc`])
+        AC_MSG_RESULT($ORCC)
+      fi
+      AC_SUBST(ORCC)
+      ORCC_FLAGS="--compat $ORC_REQ"
+      AC_SUBST(ORCC_FLAGS)
+      AS_IF([test "x$ORCC" = "x"], [HAVE_ORCC=no], [HAVE_ORCC=yes])
+    ], [
+      if test "x$enable_orc" = "xyes" ; then
+        AC_MSG_ERROR([--enable-orc specified, but Orc >= $ORC_REQ not found])
+      fi
+      AC_DEFINE(DISABLE_ORC, 1, [Disable Orc])
+      HAVE_ORC=no
+      HAVE_ORCC=no
+    ])
+  else
+    AC_DEFINE(DISABLE_ORC, 1, [Disable Orc])
+    HAVE_ORC=no
+    HAVE_ORCC=no
+  fi
+  AM_CONDITIONAL(HAVE_ORC, [test "x$HAVE_ORC" = "xyes"])
+  AM_CONDITIONAL(HAVE_ORCC, [test "x$HAVE_ORCC" = "xyes"])
+
+]))
+
+AC_DEFUN([ORC_OUTPUT],
+[
+  if test "$HAVE_ORC" = yes ; then
+    printf "configure: *** Orc acceleration enabled.\n"
+  else
+    if test "x$enable_orc" = "xno" ; then
+      printf "configure: *** Orc acceleration disabled by --disable-orc.  Slower code paths\n"
+      printf "               will be used.\n"
+    else
+      printf "configure: *** Orc acceleration disabled.  Requires Orc >= $ORC_REQ, which was\n"
+      printf "               not found.  Slower code paths will be used.\n"
+    fi
+  fi
+  printf "\n"
+])
+
diff --git a/common/m4/pkg.m4 b/common/m4/pkg.m4
new file mode 100644 (file)
index 0000000..996e294
--- /dev/null
@@ -0,0 +1,157 @@
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+    if test -n "$$1"; then
+        pkg_cv_[]$1="$$1"
+    else
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                        [pkg_failed=yes])
+    fi
+else
+       pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+        else
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+               [AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+       ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+               [$4])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
diff --git a/common/mangle-tmpl.py b/common/mangle-tmpl.py
new file mode 100644 (file)
index 0000000..bd4f948
--- /dev/null
@@ -0,0 +1,163 @@
+# -*- Mode: Python -*-
+# vi:si:et:sw=4:sts=4:ts=4
+
+"""
+use the output from gst-xmlinspect.py to mangle tmpl/*.sgml and
+insert/overwrite Short Description and Long Description
+"""
+
+# FIXME: right now it uses pygst and scans on its own;
+# we really should use inspect/*.xml instead since the result of
+# gst-xmlinspect.py is committed by the docs maintainer, who can be
+# expected to have pygst, but this step should be done for every docs build,
+# so no pygst allowed
+
+# read in inspect/*.xml
+# for every tmpl/element-(name).xml: mangle with details from element
+
+import glob
+import re
+import sys
+import os
+
+class Tmpl:
+    def __init__(self, filename):
+        self.filename = filename
+        self._sectionids = []
+        self._sections = {}
+
+    def read(self):
+        """
+        Read and parse the sections from the given file.
+        """
+        lines = open(self.filename).readlines()
+        matcher = re.compile("<!-- ##### SECTION (\S+) ##### -->\n")
+        id = None
+
+        for line in lines:
+            match = matcher.search(line)
+            if match:
+                id = match.expand("\\1")
+                self._sectionids.append(id)
+                self._sections[id] = []
+            else:
+                if not id:
+                    sys.stderr.write(
+                        "WARNING: line before a SECTION header: %s" % line)
+                else:
+                    self._sections[id].append(line)
+
+    def get_section(self, id):
+        """
+        Get the content from the given section.
+        """
+        return self._sections[id]
+
+    def set_section(self, id, content):
+        """
+        Replace the given section id with the given content.
+        """
+        self._sections[id] = content
+
+    def output(self):
+        """
+        Return the output of the current template in the tmpl/*.sgml format.
+        """
+        lines = []
+        for id in self._sectionids:
+            lines.append("<!-- ##### SECTION %s ##### -->\n" % id)
+            for line in self._sections[id]:
+                lines.append(line)
+
+        return "".join(lines)
+
+    def write(self, backup=False):
+        """
+        Write out the template file again, backing up the previous one.
+        """
+        if backup:
+            target = self.filename + ".mangle.bak"
+            os.rename(self.filename, target)
+
+        handle = open(self.filename, "w")
+        handle.write(self.output())
+        handle.close()
+
+import xml.dom.minidom
+
+def get_elements(file):
+    elements = {}
+    doc = xml.dom.minidom.parse(file)
+
+    elem = None
+    for e in doc.childNodes:
+        if e.nodeType == e.ELEMENT_NODE and e.localName == 'plugin':
+            elem = e
+            break
+    if elem == None:
+        return None
+
+    elem2 = None
+    for e in elem.childNodes:
+        if e.nodeType == e.ELEMENT_NODE and e.localName == 'elements':
+            elem2 = e
+            break
+    if elem2 == None:
+        return None
+
+    elem = elem2
+
+    for e in elem.childNodes:
+        if e.nodeType == e.ELEMENT_NODE and e.localName == 'element':
+            name = None
+            description = None
+
+            for e2 in e.childNodes:
+                if e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'name':
+                    name = e2.childNodes[0].nodeValue.encode("UTF-8")
+                elif e2.nodeType == e2.ELEMENT_NODE and e2.localName == 'description':
+                    if e2.childNodes:
+                      description = e2.childNodes[0].nodeValue.encode("UTF-8")
+                    else:
+                      description = 'No description'
+
+            if name != None and description != None:
+                elements[name] = {'description': description}
+
+    return elements
+
+def main():
+    if not len(sys.argv) == 3:
+        sys.stderr.write('Please specify the inspect/ dir and the tmpl/ dir')
+        sys.exit(1)
+
+    inspectdir = sys.argv[1]
+    tmpldir = sys.argv[2]
+
+    # parse all .xml files; build map of element name -> short desc
+    #for file in glob.glob("inspect/plugin-*.xml"):
+    elements = {}
+    for file in glob.glob("%s/plugin-*.xml" % inspectdir):
+        elements.update(get_elements(file))
+
+    for file in glob.glob("%s/element-*.sgml" % tmpldir):
+        base = os.path.basename(file)
+        element = base[len("element-"):-len(".sgml")]
+        tmpl = Tmpl(file)
+        tmpl.read()
+        if element in elements.keys():
+            description = elements[element]['description']
+            tmpl.set_section("Short_Description", "%s\n\n" % description)
+
+        # put in an include if not yet there
+        line = '<include xmlns="http://www.w3.org/2003/XInclude" href="' + \
+            'element-' + element + '-details.xml">' + \
+            '<fallback xmlns="http://www.w3.org/2003/XInclude" />' + \
+            '</include>\n'
+        section = tmpl.get_section("Long_Description")
+        if not section[0]  == line:
+            section.insert(0, line)
+        tmpl.set_section("Long_Description", section)
+        tmpl.write()
+
+main()
diff --git a/common/orc.mak b/common/orc.mak
new file mode 100644 (file)
index 0000000..a232b5d
--- /dev/null
@@ -0,0 +1,76 @@
+#
+# This is a makefile.am fragment to build Orc code.
+#
+# Define ORC_SOURCE and then include this file, such as:
+#
+#  ORC_SOURCE=gstadderorc
+#  include $(top_srcdir)/common/orc.mak
+#
+# This fragment will create tmp-orc.c and gstadderorc.h from
+# gstadderorc.orc.
+#
+# When 'make dist' is run at the top level, or 'make orc-update'
+# in a directory including this fragment, the generated source 
+# files will be copied to $(ORC_SOURCE)-dist.[ch].  These files
+# should be checked in to git, since they are used if Orc is
+# disabled.
+# 
+# Note that this file defines BUILT_SOURCES, so any later usage
+# of BUILT_SOURCES in the Makefile.am that includes this file
+# must use '+='.
+#
+
+
+EXTRA_DIST = $(ORC_SOURCE).orc
+
+ORC_NODIST_SOURCES = tmp-orc.c $(ORC_SOURCE).h
+BUILT_SOURCES = tmp-orc.c $(ORC_SOURCE).h
+
+
+orc-update: tmp-orc.c $(ORC_SOURCE).h
+       $(top_srcdir)/common/gst-indent tmp-orc.c
+       cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c
+       cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h
+
+orcc_v_gen = $(orcc_v_gen_$(V))
+orcc_v_gen_ = $(orcc_v_gen_$(AM_DEFAULT_VERBOSITY))
+orcc_v_gen_0 = @echo "  ORCC   $@";
+
+cp_v_gen = $(cp_v_gen_$(V))
+cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
+cp_v_gen_0 = @echo "  CP     $@";
+
+if HAVE_ORCC
+tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc
+       $(orcc_v_gen)$(ORCC) $(ORCC_FLAGS) --implementation --include glib.h -o tmp-orc.c $(srcdir)/$(ORC_SOURCE).orc
+
+$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc
+       $(orcc_v_gen)$(ORCC) $(ORCC_FLAGS) --header --include glib.h -o $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE).orc
+else
+tmp-orc.c: $(srcdir)/$(ORC_SOURCE).orc $(srcdir)/$(ORC_SOURCE)-dist.c
+       $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.c tmp-orc.c
+
+$(ORC_SOURCE).h: $(srcdir)/$(ORC_SOURCE).orc $(srcdir)/$(ORC_SOURCE)-dist.c
+       $(cp_v_gen)cp $(srcdir)/$(ORC_SOURCE)-dist.h $(ORC_SOURCE).h
+endif
+
+clean-local: clean-orc
+.PHONY: clean-orc
+clean-orc:
+       rm -f tmp-orc.c $(ORC_SOURCE).h
+
+dist-hook: dist-hook-orc
+.PHONY: dist-hook-orc
+
+# we try and copy updated orc -dist files below, but don't fail if it
+# doesn't work as the srcdir might not be writable
+dist-hook-orc: tmp-orc.c $(ORC_SOURCE).h
+       $(top_srcdir)/common/gst-indent tmp-orc.c
+       rm -f tmp-orc.c~
+       cmp -s tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || \
+         cp tmp-orc.c $(srcdir)/$(ORC_SOURCE)-dist.c || true
+       cmp -s $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || \
+         cp $(ORC_SOURCE).h $(srcdir)/$(ORC_SOURCE)-dist.h || true
+       cp -p tmp-orc.c $(distdir)/$(ORC_SOURCE)-dist.c
+       cp -p $(ORC_SOURCE).h $(distdir)/$(ORC_SOURCE)-dist.h
+
diff --git a/common/parallel-subdirs.mak b/common/parallel-subdirs.mak
new file mode 100644 (file)
index 0000000..36885df
--- /dev/null
@@ -0,0 +1,13 @@
+# include this at the end of $MODULE/ext/Makefile.am to force make to
+# build subdirectories in parallel when make -jN is used. We will end up
+# descending into all subdirectories a second time, but only after the first
+# (parallel) run has finished, so it should go right through the second time.
+
+.PHONY: independent-subdirs $(SUBDIRS)
+
+independent-subdirs: $(SUBDIRS)
+
+$(SUBDIRS):
+       $(MAKE) -C $@
+
+all-recursive: independent-subdirs
diff --git a/common/plugins.xsl b/common/plugins.xsl
new file mode 100644 (file)
index 0000000..60515b6
--- /dev/null
@@ -0,0 +1,209 @@
+<?xml version='1.0'?> <!--*- mode: xml -*-->
+
+<xsl:stylesheet
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns:exsl="http://exslt.org/common"
+  xmlns:str="http://exslt.org/strings"
+  extension-element-prefixes="exsl str"
+  version="1.0">
+<xsl:output method="xml" indent="yes"
+            doctype-public ="-//OASIS//DTD DocBook XML V4.1.2//EN"
+            doctype-system = "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
+
+<xsl:param name="module" />
+
+  <xsl:template match="element">
+    <xsl:element name="varlistentry">
+      <xsl:element name="term">
+        <xsl:element name="link">
+          <xsl:attribute name="linkend"><xsl:value-of select="$module" />-plugins-<xsl:value-of select="name"/></xsl:attribute>
+          <xsl:value-of select="name" />
+        </xsl:element>
+      </xsl:element>
+      <xsl:element name="listitem">
+        <xsl:element name="simpara"><xsl:value-of select="description" /></xsl:element>
+      </xsl:element>
+    </xsl:element>
+    <xsl:variable name="name"><xsl:copy-of select="name"/></xsl:variable>
+    <!-- here we write an element-(name)-details.xml file for the element -->
+    <exsl:document href="{concat ('xml/element-', $name, '-details.xml')}" method="xml" indent="yes">
+
+      <xsl:element name="refsynopsisdiv">
+        <xsl:element name="refsect2">
+          <xsl:element name="title">Element Information</xsl:element>
+          <xsl:element name="variablelist">
+
+            <!-- plugin name and link -->
+            <xsl:element name="varlistentry">
+              <xsl:element name="term">plugin</xsl:element>
+              <xsl:element name="listitem">
+                <xsl:element name="simpara">
+                  <xsl:element name="link">
+                    <xsl:attribute name="linkend">plugin-<xsl:value-of select="../../name"/></xsl:attribute>
+                    <xsl:value-of select="../../name" />
+                  </xsl:element>
+                </xsl:element>
+              </xsl:element>
+            </xsl:element>
+
+            <xsl:element name="varlistentry">
+              <xsl:element name="term">author</xsl:element>
+              <xsl:element name="listitem">
+                <xsl:element name="simpara"><xsl:value-of select="author" /></xsl:element>
+              </xsl:element>
+            </xsl:element>
+
+            <xsl:element name="varlistentry">
+              <xsl:element name="term">class</xsl:element>
+              <xsl:element name="listitem">
+                <xsl:element name="simpara"><xsl:value-of select="class" /></xsl:element>
+              </xsl:element>
+            </xsl:element>
+
+          </xsl:element> <!-- variablelist -->
+        </xsl:element> <!-- refsect2 -->
+
+        <xsl:element name="refsect2">
+          <xsl:element name="title">Element Pads</xsl:element>
+          <!-- process all caps -->
+          <xsl:for-each select="pads/caps">
+            <xsl:element name="variablelist">
+              <xsl:element name="varlistentry">
+                <xsl:element name="term">name</xsl:element>
+                <xsl:element name="listitem">
+                  <xsl:element name="simpara"><xsl:value-of select="name" /></xsl:element>
+                </xsl:element>
+              </xsl:element>
+
+              <xsl:element name="varlistentry">
+                <xsl:element name="term">direction</xsl:element>
+                <xsl:element name="listitem">
+                  <xsl:element name="simpara"><xsl:value-of select="direction" /></xsl:element>
+                </xsl:element>
+              </xsl:element>
+
+              <xsl:element name="varlistentry">
+                <xsl:element name="term">presence</xsl:element>
+                <xsl:element name="listitem">
+                  <xsl:element name="simpara"><xsl:value-of select="presence" /></xsl:element>
+                </xsl:element>
+              </xsl:element>
+
+              <xsl:for-each select='str:tokenize(details, ";")'>
+                <xsl:element name="varlistentry">
+                  <xsl:element name="term">
+                    <xsl:if test="position()=1">details</xsl:if>
+                  </xsl:element>
+                  <xsl:element name="listitem">
+                    <xsl:element name="simpara"><xsl:value-of select='.'/></xsl:element>
+                  </xsl:element>
+                </xsl:element>
+              </xsl:for-each>
+
+            </xsl:element> <!-- variablelist -->
+
+            <!--xsl:element name="programlisting"><xsl:value-of select="details" /></xsl:element-->
+
+          </xsl:for-each>
+        </xsl:element> <!-- refsect2 -->
+      </xsl:element> <!-- refsynopsisdiv -->
+
+    </exsl:document>
+  </xsl:template>
+
+  <xsl:template match="plugin">
+    <xsl:element name="refentry">
+      <xsl:attribute name="id"><xsl:value-of select="$module" />-plugins-plugin-<xsl:value-of select="name"/></xsl:attribute>
+
+      <xsl:element name="refmeta">
+        <xsl:element name="refentrytitle">
+          <xsl:value-of select="name"/>
+        </xsl:element>
+        <xsl:element name="manvolnum">3</xsl:element>
+        <xsl:element name="refmiscinfo">FIXME Library</xsl:element>
+      </xsl:element> <!-- refmeta -->
+
+      <xsl:element name="refnamediv">
+        <xsl:element name="refname">
+          <xsl:value-of select="name"/>
+        </xsl:element>
+
+        <xsl:element name="refpurpose">
+          <xsl:element name="anchor">
+            <xsl:attribute name="id">plugin-<xsl:value-of select="name"/></xsl:attribute>
+          </xsl:element>
+          <xsl:value-of select="description"/>
+        </xsl:element>
+      </xsl:element>
+
+      <xsl:element name="refsect1">
+        <xsl:element name="title">Plugin Information</xsl:element>
+        <xsl:element name="variablelist">
+
+          <xsl:element name="varlistentry">
+            <xsl:element name="term">filename</xsl:element>
+            <xsl:element name="listitem">
+              <xsl:element name="simpara"><xsl:value-of select="basename" /></xsl:element>
+            </xsl:element>
+          </xsl:element>
+
+          <xsl:element name="varlistentry">
+            <xsl:element name="term">version</xsl:element>
+            <xsl:element name="listitem">
+              <xsl:element name="simpara"><xsl:value-of select="version" /></xsl:element>
+            </xsl:element>
+          </xsl:element>
+
+          <xsl:element name="varlistentry">
+            <xsl:element name="term">run-time license</xsl:element>
+            <xsl:element name="listitem">
+              <xsl:element name="simpara"><xsl:value-of select="license" /></xsl:element>
+            </xsl:element>
+          </xsl:element>
+
+          <xsl:element name="varlistentry">
+            <xsl:element name="term">package</xsl:element>
+            <xsl:element name="listitem">
+              <xsl:element name="simpara"><xsl:value-of select="package" /></xsl:element>
+            </xsl:element>
+          </xsl:element>
+
+          <xsl:element name="varlistentry">
+            <xsl:element name="term">origin</xsl:element>
+            <xsl:element name="listitem">
+              <xsl:element name="simpara">
+                <!-- only show origin as link if it starts with http -->
+                <xsl:choose>
+                  <xsl:when test="substring(@href, 1, 4) = 'http'">
+                    <xsl:element name="ulink">
+                      <xsl:attribute name="url"><xsl:value-of select="origin" /></xsl:attribute>
+                      <xsl:value-of select="origin" />
+                    </xsl:element>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:value-of select="origin" />
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:element>
+            </xsl:element>
+          </xsl:element>
+
+        </xsl:element>
+      </xsl:element>
+
+      <xsl:element name="refsect1">
+        <xsl:element name="title">Elements</xsl:element>
+        <!-- process all elements -->
+        <xsl:element name="variablelist">
+          <xsl:apply-templates select="elements"/>
+        </xsl:element>
+      </xsl:element>
+
+    </xsl:element>
+
+  </xsl:template>
+
+  <!-- ignore -->
+  <xsl:template match="gst-plugin-paths" />
+
+</xsl:stylesheet>
diff --git a/common/po.mak b/common/po.mak
new file mode 100644 (file)
index 0000000..e019fac
--- /dev/null
@@ -0,0 +1,4 @@
+# rule to download the latest .po files
+download-po: $(top_srcdir)/common/download-translations
+       $(top_srcdir)/common/download-translations $(PACKAGE)
+
diff --git a/common/release.mak b/common/release.mak
new file mode 100644 (file)
index 0000000..4a9b7d5
--- /dev/null
@@ -0,0 +1,25 @@
+# include this snippet to add a common release: target by using
+# include $(top_srcdir)/common/release.mak
+
+# make bz2 as well
+AUTOMAKE_OPTIONS = dist-bzip2
+
+release: dist
+       $(MAKE) $(PACKAGE)-$(VERSION).tar.gz.md5
+       $(MAKE) $(PACKAGE)-$(VERSION).tar.bz2.md5
+
+# generate md5 sum files
+%.md5: %
+       md5sum $< > $@
+
+# check that no marshal or enumtypes files are included
+# this in turn ensures that distcheck fails for missing .list files which is currently
+# shadowed when the corresponding .c and .h files are included.
+distcheck-hook:
+       @test "x" = "x`find $(distdir) -name \*-enumtypes.[ch] | grep -v win32`" && \
+       test "x" = "x`find $(distdir) -name \*-marshal.[ch]`" || \
+       ( $(ECHO) "*** Leftover enumtypes or marshal files in the tarball." && \
+         $(ECHO) "*** Make sure the following files are not disted:" && \
+         find $(distdir) -name \*-enumtypes.[ch] | grep -v win32 && \
+         find $(distdir) -name \*-marshal.[ch] && \
+         false )
diff --git a/common/scangobj-merge.py b/common/scangobj-merge.py
new file mode 100755 (executable)
index 0000000..9a1cac9
--- /dev/null
@@ -0,0 +1,309 @@
+#!/usr/bin/python
+# -*- Mode: Python -*-
+# vi:si:et:sw=4:sts=4:ts=4
+
+"""
+parse, merge and write gstdoc-scanobj files
+"""
+
+import sys
+import os
+
+def debug(*args):
+    pass
+
+# OrderedDict class based on
+# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
+# Licensed under the Python License
+class OrderedDict(dict):
+    def __init__(self):
+        self._keys = []
+        dict.__init__(self)
+
+    def __delitem__(self, key):
+        dict.__delitem__(self, key)
+        self._keys.remove(key)
+
+    def __setitem__(self, key, item):
+        dict.__setitem__(self, key, item)
+        if key not in self._keys: self._keys.append(key)
+
+    def clear(self):
+        dict.clear(self)
+        self._keys = []
+
+    def copy(self):
+        dict = dict.copy(self)
+        dict._keys = self._keys[:]
+        return dict
+
+    def items(self):
+        return zip(self._keys, self.values())
+
+    def keys(self):
+        return self._keys
+
+    def popitem(self):
+        try:
+            key = self._keys[-1]
+        except IndexError:
+            raise KeyError('dictionary is empty')
+
+        val = self[key]
+        del self[key]
+
+        return (key, val)
+
+    def setdefault(self, key, failobj = None):
+        dict.setdefault(self, key, failobj)
+        if key not in self._keys: self._keys.append(key)
+
+    def update(self, dict):
+        dict.update(self, dict)
+        for key in dict.keys():
+            if key not in self._keys: self._keys.append(key)
+
+    def values(self):
+        return map(self.get, self._keys)
+
+class Object:
+    def __init__(self, name):
+        self._signals = OrderedDict()
+        self._args = OrderedDict()
+        self.name = name
+
+    def __repr__(self):
+        return "<Object %s>" % self.name
+
+    def add_signal(self, signal, overwrite=True):
+        if not overwrite and self._signals.has_key(signal.name):
+            raise IndexError, "signal %s already in %r" % (signal.name, self)
+        self._signals[signal.name] = signal
+
+    def add_arg(self, arg, overwrite=True):
+        if not overwrite and self._args.has_key(arg.name):
+            raise IndexError, "arg %s already in %r" % (arg.name, self)
+        self._args[arg.name] = arg
+
+class Docable:
+    def __init__(self, **kwargs):
+        for key in self.attrs:
+            setattr(self, key, kwargs[key])
+        self.dict = kwargs
+
+    def __repr__(self):
+        return "<%r %s>" % (str(self.__class__), self.name)
+
+class Signal(Docable):
+    attrs = ['name', 'returns', 'args']
+
+class Arg(Docable):
+    attrs = ['name', 'type', 'range', 'flags', 'nick', 'blurb', 'default']
+
+class GDoc:
+    def load_file(self, filename):
+        try:
+            lines = open(filename).readlines()
+            self.load_data("".join(lines))
+        except IOError:
+            print "WARNING - could not read from %s" % filename
+
+    def save_file(self, filename, backup=False):
+        """
+        Save the information to the given file if the file content changed.
+        """
+        olddata = None
+        try:
+            lines = open(filename).readlines()
+            olddata = "".join(lines)
+        except IOError:
+            print "WARNING - could not read from %s" % filename
+        newdata = self.get_data()
+        if olddata and olddata == newdata:
+            return
+
+        if olddata:
+            if backup:
+                os.rename(filename, filename + '.bak')
+
+        handle = open(filename, "w")
+        handle.write(newdata)
+        handle.close()
+
+class Signals(GDoc):
+    def __init__(self):
+        self._objects = OrderedDict()
+
+    def load_data(self, data):
+        """
+        Load the .signals lines, creating our list of objects and signals.
+        """
+        import re
+        smatcher = re.compile(
+            '(?s)'                                      # make . match \n
+            '<SIGNAL>\n(.*?)</SIGNAL>\n'
+            )
+        nmatcher = re.compile(
+            '<NAME>'
+            '(?P<object>\S*)'                           # store object
+            '::'
+            '(?P<signal>\S*)'                           # store signal
+            '</NAME>'
+        )
+        rmatcher = re.compile(
+            '(?s)'                                      # make . match \n
+            '<RETURNS>(?P<returns>\S*)</RETURNS>\n'     # store returns
+            '(?P<args>.*)'                              # store args
+        )
+        for block in smatcher.findall(data):
+            nmatch = nmatcher.search(block)
+            if nmatch:
+                o = nmatch.group('object')
+                debug("Found object", o)
+                debug("Found signal", nmatch.group('signal'))
+                if not self._objects.has_key(o):
+                    object = Object(o)
+                    self._objects[o] = object
+
+                rmatch = rmatcher.search(block)
+                if rmatch:
+                    dict = rmatch.groupdict().copy()
+                    dict['name'] = nmatch.group('signal')
+                    signal = Signal(**dict)
+                    self._objects[o].add_signal(signal)
+
+    def get_data(self):
+        lines = []
+        for o in self._objects.values():
+            for s in o._signals.values():
+                block = """<SIGNAL>
+<NAME>%(object)s::%(name)s</NAME>
+<RETURNS>%(returns)s</RETURNS>
+%(args)s</SIGNAL>
+"""
+                d = s.dict.copy()
+                d['object'] = o.name
+                lines.append(block % d)
+
+        return "\n".join(lines) + '\n'
+
+class Args(GDoc):
+    def __init__(self):
+        self._objects = OrderedDict()
+
+    def load_data(self, data):
+        """
+        Load the .args lines, creating our list of objects and args.
+        """
+        import re
+        amatcher = re.compile(
+            '(?s)'                                      # make . match \n
+            '<ARG>\n(.*?)</ARG>\n'
+            )
+        nmatcher = re.compile(
+            '<NAME>'
+            '(?P<object>\S*)'                           # store object
+            '::'
+            '(?P<arg>\S*)'                              # store arg
+            '</NAME>'
+        )
+        rmatcher = re.compile(
+            '(?s)'                                      # make . match \n
+            '<TYPE>(?P<type>\S*)</TYPE>\n'              # store type
+            '<RANGE>(?P<range>.*?)</RANGE>\n'           # store range
+            '<FLAGS>(?P<flags>\S*)</FLAGS>\n'           # store flags
+            '<NICK>(?P<nick>.*?)</NICK>\n'              # store nick
+            '<BLURB>(?P<blurb>.*?)</BLURB>\n'           # store blurb
+            '<DEFAULT>(?P<default>.*?)</DEFAULT>\n'     # store default
+        )
+        for block in amatcher.findall(data):
+            nmatch = nmatcher.search(block)
+            if nmatch:
+                o = nmatch.group('object')
+                debug("Found object", o)
+                debug("Found arg", nmatch.group('arg'))
+                if not self._objects.has_key(o):
+                    object = Object(o)
+                    self._objects[o] = object
+
+                rmatch = rmatcher.search(block)
+                if rmatch:
+                    dict = rmatch.groupdict().copy()
+                    dict['name'] = nmatch.group('arg')
+                    arg = Arg(**dict)
+                    self._objects[o].add_arg(arg)
+                else:
+                    print "ERROR: could not match arg from block %s" % block
+
+    def get_data(self):
+        lines = []
+        for o in self._objects.values():
+            for a in o._args.values():
+                block = """<ARG>
+<NAME>%(object)s::%(name)s</NAME>
+<TYPE>%(type)s</TYPE>
+<RANGE>%(range)s</RANGE>
+<FLAGS>%(flags)s</FLAGS>
+<NICK>%(nick)s</NICK>
+<BLURB>%(blurb)s</BLURB>
+<DEFAULT>%(default)s</DEFAULT>
+</ARG>
+"""
+                d = a.dict.copy()
+                d['object'] = o.name
+                lines.append(block % d)
+
+        return "\n".join(lines) + '\n'
+
+class SingleLine(GDoc):
+    def __init__(self):
+        self._objects = []
+
+    def load_data(self, data):
+        """
+        Load the .interfaces/.prerequisites lines, merge duplicates
+        """
+        # split data on '\n'
+        lines = data.splitlines();
+        # merge them into self._objects
+        for line in lines:
+            if line not in self._objects:
+                self._objects.append(line)
+
+    def get_data(self):
+        lines = sorted(self._objects)
+        return "\n".join(lines) + '\n'
+
+def main(argv):
+    modulename = None
+    try:
+        modulename = argv[1]
+    except IndexError:
+        sys.stderr.write('Please provide a documentation module name\n')
+        sys.exit(1)
+
+    signals = Signals()
+    signals.load_file(modulename + '.signals')
+    signals.load_file(modulename + '.signals.new')
+    signals.save_file(modulename + '.signals', backup=True)
+    os.unlink(modulename + '.signals.new')
+
+    args = Args()
+    args.load_file(modulename + '.args')
+    args.load_file(modulename + '.args.new')
+    args.save_file(modulename + '.args', backup=True)
+    os.unlink(modulename + '.args.new')
+
+    ifaces = SingleLine()
+    ifaces.load_file(modulename + '.interfaces')
+    ifaces.load_file(modulename + '.interfaces.new')
+    ifaces.save_file(modulename + '.interfaces', backup=True)
+    os.unlink(modulename + '.interfaces.new')
+
+    prereq = SingleLine()
+    prereq.load_file(modulename + '.prerequisites')
+    prereq.load_file(modulename + '.prerequisites.new')
+    prereq.save_file(modulename + '.prerequisites', backup=True)
+    os.unlink(modulename + '.prerequisites.new')
+
+main(sys.argv)
diff --git a/common/upload-doc.mak b/common/upload-doc.mak
new file mode 100644 (file)
index 0000000..3bf9496
--- /dev/null
@@ -0,0 +1,66 @@
+# this snippet is to be included by both our docbook manuals
+# and gtk-doc API references
+
+# it adds an upload target to each of these dir's Makefiles
+
+# each Makefile.am should define the following variables:
+# - DOC: the base name of the documentation
+#        (faq, manual, pwg, gstreamer, gstreamer-libs)
+# - FORMATS: the formats in which DOC is output
+#            (html ps pdf)
+
+# if you want to use it, make sure your $HOME/.ssh/config file contains the
+# correct User entry for the Host entry for the DOC_SERVER
+
+# these variables define the location of the online docs
+DOC_SERVER = gstreamer.freedesktop.org
+DOC_BASE = /srv/gstreamer.freedesktop.org/www/data/doc
+DOC_URL = $(DOC_SERVER):$(DOC_BASE)
+
+upload: $(FORMATS)
+       @if echo $(FORMATS) | grep html > /dev/null; then \
+         echo "Preparing docs for upload (rebasing cross-references) ..." ; \
+         if test x$(builddir) != x$(srcdir); then \
+           echo "make upload can only be used if srcdir == builddir"; \
+           exit 1; \
+         fi; \
+         # gtkdoc-rebase sometimes gets confused, so reset everything to \
+         # local links before rebasing to online links                   \
+         gtkdoc-rebase --html-dir=$(builddir)/html 2>/dev/null 2>/dev/null ; \
+         rebase=`gtkdoc-rebase --verbose --online --html-dir=$(builddir)/html` ; \
+         echo "$$rebase" | grep -e "On-*line"; \
+         for req in glib gobject gstreamer gstreamer-libs gst-plugins-base-libs; do \
+           if ! ( echo "$$rebase" | grep -i -e "On-*line.*/$$req/" ); then \
+             echo "===============================================================================" ; \
+             echo " Could not determine online location for $$req docs. Cross-referencing will be " ; \
+             echo " broken, so not uploading. Make sure the library's gtk-doc documentation is    " ; \
+             echo " installed somewhere in /usr/share/gtk-doc.                                    " ; \
+             echo "===============================================================================" ; \
+             exit 1; \
+           fi; \
+         done; \
+         export SRC="$$SRC html"; \
+       fi; \
+       if echo $(FORMATS) | grep ps > /dev/null; then export SRC="$$SRC $(DOC).ps"; fi; \
+       if echo $(FORMATS) | grep pdf > /dev/null; then export SRC="$$SRC $(DOC).pdf"; fi; \
+       \
+       # upload releases to both 0.10.X/ and head/ subdirectories \
+       if test "x$(PACKAGE_VERSION_NANO)" = x0; then \
+         export DIR=$(DOC_BASE)/gstreamer/$(VERSION)/$(DOC); \
+         echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
+         ssh $(DOC_SERVER) mkdir -p $$DIR; \
+         rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
+         ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
+       fi; \
+       \
+       export DIR=$(DOC_BASE)/gstreamer/head/$(DOC); \
+       echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
+       ssh $(DOC_SERVER) mkdir -p $$DIR; \
+       rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
+       ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
+       \
+       if echo $(FORMATS) | grep html > /dev/null; then \
+         echo "Un-preparing docs for upload (rebasing cross-references) ..." ; \
+         gtkdoc-rebase --html-dir=$(builddir)/html ; \
+       fi; \
+       echo Done
diff --git a/common/win32.mak b/common/win32.mak
new file mode 100644 (file)
index 0000000..94afaec
--- /dev/null
@@ -0,0 +1,72 @@
+# various tests to make sure we dist the win32 stuff (for MSVC builds) right
+
+# the MANIFEST contains all win32 related files that should be disted
+win32 = $(shell cat $(top_srcdir)/win32/MANIFEST)
+
+# wildcard is apparently not portable to other makes, hence the use of find
+# these are library .def files with the symbols to export
+win32defs = $(shell find $(top_srcdir)/win32/common -name '*.def')
+
+# wildcard is apparently not portable to other makes, hence the use of find
+# these are files that need to be disted with CRLF line endings:
+win32crlf = $(shell find $(top_srcdir)/win32 -name '*.dsw' -o -name '*.dsp')
+
+win32-debug:
+       @echo; \
+       echo win32     = $(win32); \
+       echo; \
+       echo win32defs = $(win32defs); \
+       echo; \
+       echo win32crlf = $(win32crlf); \
+       echo
+
+win32-check-crlf:
+       @echo Checking win32 files for CR LF line endings ...; \
+       fail=0 ; \
+       for each in $(win32crlf) ; do \
+         result=`perl -e 'print grep(/\r\n/,<>)' "$$each" | wc -l`; \
+         if test "$$result" = 0 ; then \
+           echo $$each must be fixed to have CRLF line endings ; \
+           fail=1; \
+         fi ; \
+       done ; \
+       exit $$fail
+
+# make sure all symbols we export on linux are defined in the win32 .def too
+# (don't care about other unixes for now, it's enough if it works on one of
+# the linux build bots; we assume .so )
+check-exports:
+       @fail=0 ; \
+       for l in $(win32defs); do \
+         libbase=`basename "$$l" ".def"`; \
+         libso=`find "$(top_builddir)" -name "$$libbase-@GST_MAJORMINOR@.so" | grep -v /_build/ | head -n1`; \
+         libdef="$(top_srcdir)/win32/common/$$libbase.def"; \
+         if test "x$$libso" != "x"; then \
+           echo Checking symbols in $$libso; \
+           if ! ($(top_srcdir)/common/check-exports $$libdef $$libso) ; then \
+             fail=1; \
+           fi; \
+         fi; \
+       done ; \
+       if test $$fail != 0; then \
+         echo '-----------------------------------------------------------'; \
+         echo 'Run this to update the .def files:'; \
+         echo 'make check-exports 2>&1 | patch -p1'; \
+         echo '-----------------------------------------------------------'; \
+       fi; \
+       exit $$fail
+
+# complain about nonportable printf format strings (%lld, %llu, %zu etc.)
+check-nonportable-print-format:
+       @fail=0 ; \
+       loc=`find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'`; \
+       if test "x$$loc" != "x"; then \
+         echo "Please fix the following print format strings:" ; \
+         find "$(top_srcdir)" -name '*.c' | xargs grep -n -e '%[0-9]*ll[udx]' -e '%[0-9]*z[udx]'; \
+         fail=1; \
+       fi; \
+       exit $$fail
+
+dist-hook: check-exports win32-check-crlf
+
+
diff --git a/compile b/compile
new file mode 100755 (executable)
index 0000000..b1f4749
--- /dev/null
+++ b/compile
@@ -0,0 +1,310 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-01-04.17; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
+# Written by Tom Tromey <tromey@cygnus.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l*)
+         lib=${1#-l}
+         found=no
+         save_IFS=$IFS
+         IFS=';'
+         for dir in $lib_path $LIB
+         do
+           IFS=$save_IFS
+           if $shared && test -f "$dir/$lib.dll.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.dll.lib"
+             break
+           fi
+           if test -f "$dir/$lib.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.lib"
+             break
+           fi
+         done
+         IFS=$save_IFS
+
+         test "$found" != yes && set x "$@" "$lib.lib"
+         shift
+         ;;
+       -L*)
+         func_file_conv "${1#-L}"
+         if test -z "$lib_path"; then
+           lib_path=$file
+         else
+           lib_path="$lib_path;$file"
+         fi
+         linker_opts="$linker_opts -LIBPATH:$file"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/config.guess b/config.guess
new file mode 100755 (executable)
index 0000000..40eaed4
--- /dev/null
@@ -0,0 +1,1517 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011 Free Software Foundation, Inc.
+
+timestamp='2011-05-11'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           sh5el) machine=sh5le-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep -q __ELF__
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit ;;
+    *:OpenBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+       echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+       exit ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit ;;
+    *:SolidBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+       exit ;;
+    macppc:MirBSD:*:*)
+       echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       exitcode=$?
+       trap '' 0
+       exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit ;;
+    *:OS400:*:*)
+       echo powerpc-ibm-os400
+       exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+       echo arm-unknown-riscos
+       exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7; exit ;;
+       esac ;;
+    s390x:SunOS:*:*)
+       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+       echo i386-pc-auroraux${UNAME_RELEASE}
+       exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+       eval $set_cc_for_build
+       SUN_ARCH="i386"
+       # If there is a compiler, see if it is configured for 64-bit objects.
+       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+       # This test works for both compilers.
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_64BIT_ARCH >/dev/null
+           then
+               SUN_ARCH="x86_64"
+           fi
+       fi
+       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+       exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+       echo m68k-milan-mint${UNAME_RELEASE}
+       exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+       echo m68k-hades-mint${UNAME_RELEASE}
+       exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+       echo m68k-unknown-mint${UNAME_RELEASE}
+       exit ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c &&
+         dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+         SYSTEM_NAME=`$dummy $dummyarg` &&
+           { echo "$SYSTEM_NAME"; exit; }
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit ;;
+    AViiON:dgux:*:*)
+       # DG/UX returns AViiON for all architectures
+       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+               then
+                       echo "$SYSTEM_NAME"
+               else
+                       echo rs6000-ibm-aix3.2.5
+               fi
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit ;;
+    *:AIX:*:[4567])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                   sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                   case "${sc_cpu_version}" in
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                     532)                      # CPU_PA_RISC2_0
+                       case "${sc_kernel_bits}" in
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                       esac ;;
+                   esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^            //' << EOF >$dummy.c
+
+               #define _HPUX_SOURCE
+               #include <stdlib.h>
+               #include <unistd.h>
+
+               int main ()
+               {
+               #if defined(_SC_KERNEL_BITS)
+                   long bits = sysconf(_SC_KERNEL_BITS);
+               #endif
+                   long cpu  = sysconf (_SC_CPU_VERSION);
+
+                   switch (cpu)
+                       {
+                       case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+                       case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+                       case CPU_PA_RISC2_0:
+               #if defined(_SC_KERNEL_BITS)
+                           switch (bits)
+                               {
+                               case 64: puts ("hppa2.0w"); break;
+                               case 32: puts ("hppa2.0n"); break;
+                               default: puts ("hppa2.0"); break;
+                               } break;
+               #else  /* !defined(_SC_KERNEL_BITS) */
+                           puts ("hppa2.0"); break;
+               #endif
+                       default: puts ("hppa1.0"); break;
+                       }
+                   exit (0);
+               }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           eval $set_cc_for_build
+
+           # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+           # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+           # generating 64-bit code.  GNU and HP use different nomenclature:
+           #
+           # $ CC_FOR_BUILD=cc ./config.guess
+           # => hppa2.0w-hp-hpux11.23
+           # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+           # => hppa64-hp-hpux11.23
+
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+               grep -q __LP64__
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+               { echo "$SYSTEM_NAME"; exit; }
+       echo unknown-hitachi-hiuxwe2
+       exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+       exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+       exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+       exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+       exit ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    5000:UNIX_System_V:4.*:*)
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit ;;
+    *:FreeBSD:*:*)
+       case ${UNAME_MACHINE} in
+           pc98)
+               echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           amd64)
+               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+           *)
+               echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+       esac
+       exit ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit ;;
+    *:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit ;;
+    i*:windows32*:*)
+       # uname -m includes "-pc" on this system.
+       echo ${UNAME_MACHINE}-mingw32
+       exit ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit ;;
+    *:Interix*:*)
+       case ${UNAME_MACHINE} in
+           x86)
+               echo i586-pc-interix${UNAME_RELEASE}
+               exit ;;
+           authenticamd | genuineintel | EM64T)
+               echo x86_64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+           IA64)
+               echo ia64-unknown-interix${UNAME_RELEASE}
+               exit ;;
+       esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit ;;
+    8664:Windows_NT:*)
+       echo x86_64-pc-mks
+       exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+       esac
+       objdump --private-headers /bin/sh | grep -q ld.so.1
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit ;;
+    arm*:Linux:*:*)
+       eval $set_cc_for_build
+       if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_EABI__
+       then
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
+       else
+           if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+               | grep -q __ARM_PCS_VFP
+           then
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+           else
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+           fi
+       fi
+       exit ;;
+    avr32*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit ;;
+    i*86:Linux:*:*)
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       exit ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=${UNAME_MACHINE}el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=${UNAME_MACHINE}
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       ;;
+    or32:Linux:*:*)
+       echo or32-unknown-linux-gnu
+       exit ;;
+    padre:Linux:*:*)
+       echo sparc-unknown-linux-gnu
+       exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    tile*:Linux:*:*)
+       echo ${UNAME_MACHINE}-tilera-linux-gnu
+       exit ;;
+    vax:Linux:*:*)
+       echo ${UNAME_MACHINE}-dec-linux-gnu
+       exit ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit ;;
+    xtensa*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+       # Unixware is an offshoot of SVR4, but it has its own version
+       # number series starting with 2...
+       # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+       # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit ;;
+    i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit ;;
+    i*86:*:5:[678]*)
+       # UnixWare 7.x, OpenUNIX and OpenServer 6.
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+       # uname -m prints for DJGPP always 'pc', but it prints nothing about
+       # the processor, so we play safe by assuming i586.
+       # Note: whatever this is, it MUST be the same as what config.sub
+       # prints for the "djgpp" host, or else GDB configury will decide that
+       # this is a cross-build.
+       echo i586-pc-msdosdjgpp
+       exit ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+       OS_REL='.3'
+       test -r /etc/.relid \
+           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit ;;
+    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                       # says <Richard.M.Bartel@ccMail.Census.GOV>
+       echo i586-unisys-sysv4
+       exit ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit ;;
+    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
+       echo i586-pc-haiku
+       exit ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-7:SUPER-UX:*:*)
+       echo sx7-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8:SUPER-UX:*:*)
+       echo sx8-nec-superux${UNAME_RELEASE}
+       exit ;;
+    SX-8R:SUPER-UX:*:*)
+       echo sx8r-nec-superux${UNAME_RELEASE}
+       exit ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+       echo neo-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit ;;
+    SEI:*:*:SEIUX)
+       echo mips-sei-seiux${UNAME_RELEASE}
+       exit ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms ; exit ;;
+           I*) echo ia64-dec-vms ; exit ;;
+           V*) echo vax-dec-vms ; exit ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit ;;
+    i*86:skyos:*:*)
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+       exit ;;
+    i*86:rdos:*:*)
+       echo ${UNAME_MACHINE}-pc-rdos
+       exit ;;
+    i*86:AROS:*:*)
+       echo ${UNAME_MACHINE}-pc-aros
+       exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.in b/config.h.in
new file mode 100644 (file)
index 0000000..b654a86
--- /dev/null
@@ -0,0 +1,276 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Default audio sink */
+#undef DEFAULT_AUDIOSINK
+
+/* Default audio source */
+#undef DEFAULT_AUDIOSRC
+
+/* Default video sink */
+#undef DEFAULT_VIDEOSINK
+
+/* Default video source */
+#undef DEFAULT_VIDEOSRC
+
+/* Default visualizer */
+#undef DEFAULT_VISUALIZER
+
+/* Disable Orc */
+#undef DISABLE_ORC
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* gettext package name */
+#undef GETTEXT_PACKAGE
+
+/* macro to use to show function name */
+#undef GST_FUNCTION
+
+/* Defined if gcov is enabled to force a rebuild due to config.h changing */
+#undef GST_GCOV_ENABLED
+
+/* Default errorlevel to use */
+#undef GST_LEVEL_DEFAULT
+
+/* GStreamer license */
+#undef GST_LICENSE
+
+/* package name in plugins */
+#undef GST_PACKAGE_NAME
+
+/* package origin */
+#undef GST_PACKAGE_ORIGIN
+
+/* GStreamer package release date/time for plugins as YYYY-MM-DD */
+#undef GST_PACKAGE_RELEASE_DATETIME
+
+/* Define to enable a52dec (used by a52dec). */
+#undef HAVE_A52DEC
+
+/* Define to enable amrnb library (used by amrnb). */
+#undef HAVE_AMRNB
+
+/* Define to enable amrwb library (used by amrwbdec). */
+#undef HAVE_AMRWB
+
+/* Define to enable cdio library (used by cdio). */
+#undef HAVE_CDIO
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the host CPU is an Alpha */
+#undef HAVE_CPU_ALPHA
+
+/* Define if the host CPU is an ARM */
+#undef HAVE_CPU_ARM
+
+/* Define if the host CPU is a CRIS */
+#undef HAVE_CPU_CRIS
+
+/* Define if the host CPU is a CRISv32 */
+#undef HAVE_CPU_CRISV32
+
+/* Define if the host CPU is a HPPA */
+#undef HAVE_CPU_HPPA
+
+/* Define if the host CPU is an x86 */
+#undef HAVE_CPU_I386
+
+/* Define if the host CPU is a IA64 */
+#undef HAVE_CPU_IA64
+
+/* Define if the host CPU is a M68K */
+#undef HAVE_CPU_M68K
+
+/* Define if the host CPU is a MIPS */
+#undef HAVE_CPU_MIPS
+
+/* Define if the host CPU is a PowerPC */
+#undef HAVE_CPU_PPC
+
+/* Define if the host CPU is a 64 bit PowerPC */
+#undef HAVE_CPU_PPC64
+
+/* Define if the host CPU is a S390 */
+#undef HAVE_CPU_S390
+
+/* Define if the host CPU is a SPARC */
+#undef HAVE_CPU_SPARC
+
+/* Define if the host CPU is a x86_64 */
+#undef HAVE_CPU_X86_64
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* define for working do while(0) macros */
+#undef HAVE_DOWHILE_MACROS
+
+/* Define to enable dvdread library (used by dvdreadsrc). */
+#undef HAVE_DVDREAD
+
+/* Define to enable building of experimental plug-ins. */
+#undef HAVE_EXPERIMENTAL
+
+/* Define to enable building of plug-ins with external deps. */
+#undef HAVE_EXTERNAL
+
+/* defined if the compiler implements __func__ */
+#undef HAVE_FUNC
+
+/* defined if the compiler implements __FUNCTION__ */
+#undef HAVE_FUNCTION
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to enable lame mp3 encoder library (used by lame). */
+#undef HAVE_LAME
+
+/* Define to enable mad mp3 decoder (used by mad). */
+#undef HAVE_MAD
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to enable mpeg2dec (used by mpeg2dec). */
+#undef HAVE_MPEG2DEC
+
+/* Use Orc */
+#undef HAVE_ORC
+
+/* defined if the compiler implements __PRETTY_FUNCTION__ */
+#undef HAVE_PRETTY_FUNCTION
+
+/* Define if RDTSC is available */
+#undef HAVE_RDTSC
+
+/* Define to enable libsidplay (used by sid). */
+#undef HAVE_SIDPLAY
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to enable twolame (used by twolame). */
+#undef HAVE_TWOLAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if valgrind should be used */
+#undef HAVE_VALGRIND
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define to enable x264 plug-in (used by x264). */
+#undef HAVE_X264
+
+/* the host CPU */
+#undef HOST_CPU
+
+/* gettext locale dir */
+#undef LOCALEDIR
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* directory where plugins are located */
+#undef PLUGINDIR
+
+/* The size of `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `void*', as computed by sizeof. */
+#undef SIZEOF_VOIDP
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
diff --git a/config.rpath b/config.rpath
new file mode 100755 (executable)
index 0000000..c547c68
--- /dev/null
@@ -0,0 +1,666 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+#   Copyright 1996-2007 Free Software Foundation, Inc.
+#   Taken from GNU libtool, 2001
+#   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+#   This file 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.
+#
+# The first argument passed to this file is the canonical host specification,
+#    CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+#   than 256 bytes, otherwise the compiler driver will dump core. The only
+#   known workaround is to choose shorter directory names for the build
+#   directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+  wl='-Wl,'
+else
+  case "$host_os" in
+    aix*)
+      wl='-Wl,'
+      ;;
+    darwin*)
+      case $cc_basename in
+        xlc*)
+          wl='-Wl,'
+          ;;
+      esac
+      ;;
+    mingw* | cygwin* | pw32* | os2*)
+      ;;
+    hpux9* | hpux10* | hpux11*)
+      wl='-Wl,'
+      ;;
+    irix5* | irix6* | nonstopux*)
+      wl='-Wl,'
+      ;;
+    newsos6)
+      ;;
+    linux* | k*bsd*-gnu)
+      case $cc_basename in
+        icc* | ecc*)
+          wl='-Wl,'
+          ;;
+        pgcc | pgf77 | pgf90)
+          wl='-Wl,'
+          ;;
+        ccc*)
+          wl='-Wl,'
+          ;;
+        como)
+          wl='-lopt='
+          ;;
+        *)
+          case `$CC -V 2>&1 | sed 5q` in
+            *Sun\ C*)
+              wl='-Wl,'
+              ;;
+          esac
+          ;;
+      esac
+      ;;
+    osf3* | osf4* | osf5*)
+      wl='-Wl,'
+      ;;
+    rdos*)
+      ;;
+    solaris*)
+      wl='-Wl,'
+      ;;
+    sunos4*)
+      wl='-Qoption ld '
+      ;;
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      wl='-Wl,'
+      ;;
+    sysv4*MP*)
+      ;;
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      wl='-Wl,'
+      ;;
+    unicos*)
+      wl='-Wl,'
+      ;;
+    uts4*)
+      ;;
+  esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # Set some defaults for GNU ld with shared library support. These
+  # are reset later if shared libraries are not supported. Putting them
+  # here allows them to be overridden if necessary.
+  # Unlike libtool, we use -rpath here, not --rpath, since the documented
+  # option of GNU ld is called -rpath, not --rpath.
+  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+  case "$host_os" in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+        ld_shlibs=no
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we cannot use
+      # them.
+      ld_shlibs=no
+      ;;
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    cygwin* | mingw* | pw32*)
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      ;;
+    gnu* | linux* | k*bsd*-gnu)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    netbsd*)
+      ;;
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+        ld_shlibs=no
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+          ld_shlibs=no
+          ;;
+        *)
+          if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+            hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+          else
+            ld_shlibs=no
+          fi
+          ;;
+      esac
+      ;;
+    sunos4*)
+      hardcode_direct=yes
+      ;;
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        :
+      else
+        ld_shlibs=no
+      fi
+      ;;
+  esac
+  if test "$ld_shlibs" = no; then
+    hardcode_libdir_flag_spec=
+  fi
+else
+  case "$host_os" in
+    aix3*)
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes; then
+        # Neither direct hardcoding nor static linking is supported with a
+        # broken collect2.
+        hardcode_direct=unsupported
+      fi
+      ;;
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+        # On IA64, the linker does run time linking by default, so we don't
+        # have to do anything special.
+        aix_use_runtimelinking=no
+      else
+        aix_use_runtimelinking=no
+        # Test if we are trying to use run time linking or normal
+        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+        # need to do runtime linking.
+        case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+          for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+              aix_use_runtimelinking=yes
+              break
+            fi
+          done
+          ;;
+        esac
+      fi
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      if test "$GCC" = yes; then
+        case $host_os in aix4.[012]|aix4.[012].*)
+          collect2name=`${CC} -print-prog-name=collect2`
+          if test -f "$collect2name" && \
+            strings "$collect2name" | grep resolve_lib_name >/dev/null
+          then
+            # We have reworked collect2
+            :
+          else
+            # We have old collect2
+            hardcode_direct=unsupported
+            hardcode_minus_L=yes
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_libdir_separator=
+          fi
+          ;;
+        esac
+      fi
+      # Begin _LT_AC_SYS_LIBPATH_AIX.
+      echo 'int main () { return 0; }' > conftest.c
+      ${CC} ${LDFLAGS} conftest.c -o conftest
+      aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      if test -z "$aix_libpath"; then
+        aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+      fi
+      if test -z "$aix_libpath"; then
+        aix_libpath="/usr/lib:/lib"
+      fi
+      rm -f conftest.c conftest
+      # End _LT_AC_SYS_LIBPATH_AIX.
+      if test "$aix_use_runtimelinking" = yes; then
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+      else
+        if test "$host_cpu" = ia64; then
+          hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        else
+          hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        fi
+      fi
+      ;;
+    amigaos*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+    bsdi[45]*)
+      ;;
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      libext=lib
+      ;;
+    darwin* | rhapsody*)
+      hardcode_direct=no
+      if test "$GCC" = yes ; then
+        :
+      else
+        case $cc_basename in
+          xlc*)
+            ;;
+          *)
+            ld_shlibs=no
+            ;;
+        esac
+      fi
+      ;;
+    dgux*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+    freebsd2.2*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    freebsd2*)
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    freebsd* | dragonfly*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    hpux9*)
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      ;;
+    hpux10*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        hardcode_direct=yes
+        # hardcode_minus_L: Not really in the search PATH,
+        # but as the default location of the library.
+        hardcode_minus_L=yes
+      fi
+      ;;
+    hpux11*)
+      if test "$with_gnu_ld" = no; then
+        hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator=:
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct=no
+            ;;
+          *)
+            hardcode_direct=yes
+            # hardcode_minus_L: Not really in the search PATH,
+            # but as the default location of the library.
+            hardcode_minus_L=yes
+            ;;
+        esac
+      fi
+      ;;
+    irix5* | irix6* | nonstopux*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    netbsd*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      ;;
+    newsos6)
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+        hardcode_direct=yes
+        if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+        else
+          case "$host_os" in
+            openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+              hardcode_libdir_flag_spec='-R$libdir'
+              ;;
+            *)
+              hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+              ;;
+          esac
+        fi
+      else
+        ld_shlibs=no
+      fi
+      ;;
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      ;;
+    osf3*)
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+    osf4* | osf5*)
+      if test "$GCC" = yes; then
+        hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+        # Both cc and cxx compiler support -rpath directly
+        hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+    solaris*)
+      hardcode_libdir_flag_spec='-R$libdir'
+      ;;
+    sunos4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      ;;
+    sysv4)
+      case $host_vendor in
+        sni)
+          hardcode_direct=yes # is this really true???
+          ;;
+        siemens)
+          hardcode_direct=no
+          ;;
+        motorola)
+          hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+          ;;
+      esac
+      ;;
+    sysv4.3*)
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ld_shlibs=yes
+      fi
+      ;;
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      ;;
+    sysv5* | sco3.2v5* | sco5v6*)
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      ;;
+    uts4*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      ;;
+    *)
+      ld_shlibs=no
+      ;;
+  esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec=      # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+  aix3*)
+    library_names_spec='$libname.a'
+    ;;
+  aix4* | aix5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  amigaos*)
+    library_names_spec='$libname.a'
+    ;;
+  beos*)
+    library_names_spec='$libname$shrext'
+    ;;
+  bsdi[45]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  cygwin* | mingw* | pw32*)
+    shrext=.dll
+    library_names_spec='$libname.dll.a $libname.lib'
+    ;;
+  darwin* | rhapsody*)
+    shrext=.dylib
+    library_names_spec='$libname$shrext'
+    ;;
+  dgux*)
+    library_names_spec='$libname$shrext'
+    ;;
+  freebsd1*)
+    ;;
+  freebsd* | dragonfly*)
+    case "$host_os" in
+      freebsd[123]*)
+        library_names_spec='$libname$shrext$versuffix' ;;
+      *)
+        library_names_spec='$libname$shrext' ;;
+    esac
+    ;;
+  gnu*)
+    library_names_spec='$libname$shrext'
+    ;;
+  hpux9* | hpux10* | hpux11*)
+    case $host_cpu in
+      ia64*)
+        shrext=.so
+        ;;
+      hppa*64*)
+        shrext=.sl
+        ;;
+      *)
+        shrext=.sl
+        ;;
+    esac
+    library_names_spec='$libname$shrext'
+    ;;
+  interix[3-9]*)
+    library_names_spec='$libname$shrext'
+    ;;
+  irix5* | irix6* | nonstopux*)
+    library_names_spec='$libname$shrext'
+    case "$host_os" in
+      irix5* | nonstopux*)
+        libsuff= shlibsuff=
+        ;;
+      *)
+        case $LD in
+          *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+          *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+          *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+          *) libsuff= shlibsuff= ;;
+        esac
+        ;;
+    esac
+    ;;
+  linux*oldld* | linux*aout* | linux*coff*)
+    ;;
+  linux* | k*bsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  knetbsd*-gnu)
+    library_names_spec='$libname$shrext'
+    ;;
+  netbsd*)
+    library_names_spec='$libname$shrext'
+    ;;
+  newsos6)
+    library_names_spec='$libname$shrext'
+    ;;
+  nto-qnx*)
+    library_names_spec='$libname$shrext'
+    ;;
+  openbsd*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  os2*)
+    libname_spec='$name'
+    shrext=.dll
+    library_names_spec='$libname.a'
+    ;;
+  osf3* | osf4* | osf5*)
+    library_names_spec='$libname$shrext'
+    ;;
+  rdos*)
+    ;;
+  solaris*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sunos4*)
+    library_names_spec='$libname$shrext$versuffix'
+    ;;
+  sysv4 | sysv4.3*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv4*MP*)
+    library_names_spec='$libname$shrext'
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    library_names_spec='$libname$shrext'
+    ;;
+  uts4*)
+    library_names_spec='$libname$shrext'
+    ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/config.sub b/config.sub
new file mode 100755 (executable)
index 0000000..30fdca8
--- /dev/null
@@ -0,0 +1,1760 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011 Free Software Foundation, Inc.
+
+timestamp='2011-03-23'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray | -microblaze)
+               os=
+               basic_machine=$1
+               ;;
+       -bluegene*)
+               os=-cnk
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fido | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 \
+       | ns16k | ns32k \
+       | open8 \
+       | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pyramid \
+       | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xc16x | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+       ms1)
+               basic_machine=mt-unknown
+               ;;
+
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
+               ;;
+
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pyramid-* \
+       | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile-* | tilegx-* \
+       | tron-* \
+       | ubicom32-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       bluegene*)
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16 | cr16-*)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       microblaze)
+               basic_machine=microblaze-xilinx
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc | ppcbe)    basic_machine=powerpc-unknown
+               ;;
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rdos)
+               basic_machine=i386-pc
+               os=-rdos
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh5el)
+               basic_machine=sh5le-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       # This must be matched before tile*.
+       tilegx*)
+               basic_machine=tilegx-unknown
+               os=-linux-gnu
+               ;;
+       tile*)
+               basic_machine=tile-unknown
+               os=-linux-gnu
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       xscale-* | xscalee[bl]-*)
+               basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       z80-*-coff)
+               basic_machine=z80-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+       # First match some system type aliases
+       # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -auroraux)
+               os=-auroraux
+               ;;
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -openbsd* | -solidbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -dicos*)
+               os=-dicos
+               ;;
+       -nacl*)
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       score-*)
+               os=-elf
+               ;;
+       spu-*)
+               os=-elf
+               ;;
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+       c4x-* | tic4x-*)
+               os=-coff
+               ;;
+       tic54x-*)
+               os=-coff
+               ;;
+       tic55x-*)
+               os=-coff
+               ;;
+       tic6x-*)
+               os=-coff
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mep-*)
+               os=-elf
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-haiku)
+               os=-haiku
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -cnk*|-aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..1a40b55
--- /dev/null
+++ b/configure
@@ -0,0 +1,30239 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68 for GStreamer Ugly Plug-ins 0.10.19.
+#
+# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in # ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='GStreamer Ugly Plug-ins'
+PACKAGE_TARNAME='gst-plugins-ugly'
+PACKAGE_VERSION='0.10.19'
+PACKAGE_STRING='GStreamer Ugly Plug-ins 0.10.19'
+PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
+PACKAGE_URL=''
+
+ac_unique_file="ext/mad/gstmad.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+gt_needs=
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+GST_PLUGIN_LDFLAGS
+GST_ALL_LDFLAGS
+GST_CXXFLAGS
+GST_OPTION_CXXFLAGS
+GST_OPTION_CFLAGS
+DEPRECATED_CFLAGS
+PROFILE_CFLAGS
+USE_X264_FALSE
+USE_X264_TRUE
+X264_LIBS
+X264_CFLAGS
+USE_TWOLAME_FALSE
+USE_TWOLAME_TRUE
+TWOLAME_LIBS
+TWOLAME_CFLAGS
+USE_SIDPLAY_FALSE
+USE_SIDPLAY_TRUE
+SIDPLAY_LIBS
+SIDPLAY_CFLAGS
+USE_MPEG2DEC_FALSE
+USE_MPEG2DEC_TRUE
+MPEG2DEC_LIBS
+MPEG2DEC_CFLAGS
+USE_MAD_FALSE
+USE_MAD_TRUE
+MAD_LIBS
+MAD_CFLAGS
+USE_LAME_FALSE
+USE_LAME_TRUE
+HAVE_LAME
+LAME_LIBS
+LAME_CFLAGS
+USE_DVDREAD_FALSE
+USE_DVDREAD_TRUE
+DVDREAD_LIBS
+HAVE_DVDREAD
+USE_CDIO_FALSE
+USE_CDIO_TRUE
+CDIO_LIBS
+CDIO_CFLAGS
+USE_AMRWB_FALSE
+USE_AMRWB_TRUE
+HAVE_AMRWB
+AMRWB_LIBS
+AMRWB_CFLAGS
+USE_AMRNB_FALSE
+USE_AMRNB_TRUE
+HAVE_AMRNB
+AMRNB_LIBS
+AMRNB_CFLAGS
+USE_A52DEC_FALSE
+USE_A52DEC_TRUE
+A52DEC_LIBS
+A52DEC_CFLAGS
+WIN32_LIBS
+USE_PLUGIN_SYNAESTHESIA_FALSE
+USE_PLUGIN_SYNAESTHESIA_TRUE
+USE_PLUGIN_REALMEDIA_FALSE
+USE_PLUGIN_REALMEDIA_TRUE
+USE_PLUGIN_MPEGSTREAM_FALSE
+USE_PLUGIN_MPEGSTREAM_TRUE
+USE_PLUGIN_MPEGAUDIOPARSE_FALSE
+USE_PLUGIN_MPEGAUDIOPARSE_TRUE
+USE_PLUGIN_IEC958_FALSE
+USE_PLUGIN_IEC958_TRUE
+USE_PLUGIN_DVDSUB_FALSE
+USE_PLUGIN_DVDSUB_TRUE
+USE_PLUGIN_DVDLPCMDEC_FALSE
+USE_PLUGIN_DVDLPCMDEC_TRUE
+USE_PLUGIN_ASFDEMUX_FALSE
+USE_PLUGIN_ASFDEMUX_TRUE
+DEFAULT_VISUALIZER
+DEFAULT_VIDEOSRC
+DEFAULT_VIDEOSINK
+DEFAULT_AUDIOSRC
+DEFAULT_AUDIOSINK
+GST_LEVEL_DEFAULT
+ERROR_CXXFLAGS
+WARNING_CXXFLAGS
+ERROR_CFLAGS
+WARNING_CFLAGS
+plugindir
+PLUGINDIR
+GST_LICENSE
+GSTPB_PREFIX
+GST_PREFIX
+GLIB_PREFIX
+HAVE_GST_CHECK_FALSE
+HAVE_GST_CHECK_TRUE
+GSTPB_PLUGINS_DIR
+GST_PLUGINS_BASE_DIR
+GST_PLUGINS_BASE_LIBS
+GST_PLUGINS_BASE_CFLAGS
+GST_CHECK_LIBS
+GST_CHECK_CFLAGS
+GST_BASE_LIBS
+GST_BASE_CFLAGS
+GST_PLUGINS_DIR
+GST_TOOLS_DIR
+GST_LIBS
+GST_CFLAGS
+HAVE_ORCC_FALSE
+HAVE_ORCC_TRUE
+HAVE_ORC_FALSE
+HAVE_ORC_TRUE
+ORCC_FLAGS
+ORCC
+ORC_LIBS
+ORC_CFLAGS
+GLIB_EXTRA_CFLAGS
+GLIB_LIBS
+GLIB_CFLAGS
+GLIB_REQ
+LIBM
+ENABLE_PLUGIN_DOCS_FALSE
+ENABLE_PLUGIN_DOCS_TRUE
+pkgpyexecdir
+pyexecdir
+pkgpythondir
+pythondir
+PYTHON_PLATFORM
+PYTHON_EXEC_PREFIX
+PYTHON_PREFIX
+PYTHON_VERSION
+PYTHON
+GTK_DOC_USE_LIBTOOL_FALSE
+GTK_DOC_USE_LIBTOOL_TRUE
+ENABLE_GTK_DOC_FALSE
+ENABLE_GTK_DOC_TRUE
+GTKDOC_CHECK
+HTML_DIR
+HAVE_VALGRIND_FALSE
+HAVE_VALGRIND_TRUE
+VALGRIND_PATH
+HAVE_CXX
+CXXCPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXX
+HAVE_CPU_CRISV32_FALSE
+HAVE_CPU_CRISV32_TRUE
+HAVE_CPU_CRIS_FALSE
+HAVE_CPU_CRIS_TRUE
+HAVE_CPU_X86_64_FALSE
+HAVE_CPU_X86_64_TRUE
+HAVE_CPU_M68K_FALSE
+HAVE_CPU_M68K_TRUE
+HAVE_CPU_IA64_FALSE
+HAVE_CPU_IA64_TRUE
+HAVE_CPU_S390_FALSE
+HAVE_CPU_S390_TRUE
+HAVE_CPU_MIPS_FALSE
+HAVE_CPU_MIPS_TRUE
+HAVE_CPU_HPPA_FALSE
+HAVE_CPU_HPPA_TRUE
+HAVE_CPU_SPARC_FALSE
+HAVE_CPU_SPARC_TRUE
+HAVE_CPU_ARM_FALSE
+HAVE_CPU_ARM_TRUE
+HAVE_CPU_ALPHA_FALSE
+HAVE_CPU_ALPHA_TRUE
+HAVE_CPU_PPC64_FALSE
+HAVE_CPU_PPC64_TRUE
+HAVE_CPU_PPC_FALSE
+HAVE_CPU_PPC_TRUE
+HAVE_CPU_I386_FALSE
+HAVE_CPU_I386_TRUE
+BUILD_EXPERIMENTAL_FALSE
+BUILD_EXPERIMENTAL_TRUE
+USE_EXPERIMENTAL_FALSE
+USE_EXPERIMENTAL_TRUE
+BUILD_EXTERNAL_FALSE
+BUILD_EXTERNAL_TRUE
+USE_EXTERNAL_FALSE
+USE_EXTERNAL_TRUE
+GST_PLUGINS_SELECTED
+GST_PLUGINS_ALL
+GST_PACKAGE_ORIGIN
+GST_PACKAGE_NAME
+BUILD_EXAMPLES_FALSE
+BUILD_EXAMPLES_TRUE
+GST_GCOV_ENABLED_FALSE
+GST_GCOV_ENABLED_TRUE
+CCASFLAGS
+FFLAGS
+CXXFLAGS
+GCOV
+GCOV_LIBS
+GCOV_CFLAGS
+VALGRIND_LIBS
+VALGRIND_CFLAGS
+PKG_CONFIG
+LOCALEDIR
+GETTEXT_PACKAGE
+POSUB
+LTLIBINTL
+LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+INTL_MACOSX_LIBS
+XGETTEXT_EXTRA_OPTIONS
+MSGMERGE
+XGETTEXT_015
+XGETTEXT
+GMSGFMT_015
+MSGFMT_015
+GMSGFMT
+MSGFMT
+GETTEXT_MACRO_VERSION
+USE_NLS
+ACLOCAL_AMFLAGS
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+GST_MAJORMINOR
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+PACKAGE_VERSION_RELEASE
+PACKAGE_VERSION_NANO
+PACKAGE_VERSION_MICRO
+PACKAGE_VERSION_MINOR
+PACKAGE_VERSION_MAJOR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_silent_rules
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+enable_dependency_tracking
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+with_autoconf
+with_autoheader
+with_automake
+with_aclocal
+enable_nls
+enable_rpath
+with_libiconv_prefix
+with_libintl_prefix
+enable_debug
+enable_profiling
+enable_valgrind
+enable_gcov
+enable_examples
+with_pkg_config_path
+with_package_name
+with_package_origin
+with_plugins
+enable_external
+enable_experimental
+with_html_dir
+enable_gtk_doc
+enable_gobject_cast_checks
+enable_glib_asserts
+enable_orc
+with_default_audiosink
+with_default_audiosrc
+with_default_videosink
+with_default_videosrc
+with_default_visualizer
+enable_asfdemux
+enable_dvdlpcmdec
+enable_dvdsub
+enable_iec958
+enable_mpegaudioparse
+enable_mpegstream
+enable_realmedia
+enable_synaesthesia
+enable_a52dec
+with_a52dec_prefix
+enable_amrnb
+enable_amrwb
+enable_cdio
+enable_dvdread
+enable_lame
+enable_mad
+enable_mpeg2dec
+enable_sidplay
+enable_twolame
+enable_x264
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PKG_CONFIG
+VALGRIND_CFLAGS
+VALGRIND_LIBS
+CXX
+CXXFLAGS
+CCC
+CXXCPP
+GLIB_CFLAGS
+GLIB_LIBS
+ORC_CFLAGS
+ORC_LIBS
+GST_CFLAGS
+GST_LIBS
+GST_BASE_CFLAGS
+GST_BASE_LIBS
+GST_CHECK_CFLAGS
+GST_CHECK_LIBS
+GST_PLUGINS_BASE_CFLAGS
+GST_PLUGINS_BASE_LIBS
+AMRNB_CFLAGS
+AMRNB_LIBS
+AMRWB_CFLAGS
+AMRWB_LIBS
+CDIO_CFLAGS
+CDIO_LIBS
+MAD_CFLAGS
+MAD_LIBS
+MPEG2DEC_CFLAGS
+MPEG2DEC_LIBS
+TWOLAME_CFLAGS
+TWOLAME_LIBS
+X264_CFLAGS
+X264_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures GStreamer Ugly Plug-ins 0.10.19 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          [DATAROOTDIR/doc/gst-plugins-ugly]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 0.10.19:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode  enable make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer
+  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-nls           do not use Native Language Support
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-debug         disable addition of -g debugging info
+  --enable-profiling      adds -pg to compiler commandline, for profiling
+  --disable-valgrind      disable run-time valgrind detection
+  --enable-gcov           compile with coverage profiling instrumentation (gcc
+                          only)
+  --disable-examples      disable building examples
+  --disable-external           disable building of plug-ins with external deps
+  --enable-experimental        enable building of experimental plug-ins
+  --enable-gtk-doc        use gtk-doc to build documentation [[default=no]]
+  --enable-gobject-cast-checks=[no/auto/yes]
+                          Enable GObject cast checks
+  --enable-glib-asserts=[no/auto/yes]
+                          Enable GLib assertion
+  --enable-orc            use Orc if installed
+  --disable-asfdemux      disable dependency-less asfdemux plugin
+  --disable-dvdlpcmdec    disable dependency-less dvdlpcmdec plugin
+  --disable-dvdsub        disable dependency-less dvdsub plugin
+  --disable-iec958        disable dependency-less iec958 plugin
+  --disable-mpegaudioparse
+                          disable dependency-less mpegaudioparse plugin
+  --disable-mpegstream    disable dependency-less mpegstream plugin
+  --disable-realmedia     disable dependency-less realmedia plugin
+  --disable-synaesthesia  disable dependency-less synaesthesia plugin
+  --disable-a52dec             disable a52dec: a52dec
+  --disable-amrnb              disable amrnb library: amrnb
+  --disable-amrwb              disable amrwb library: amrwbdec
+  --disable-cdio               disable cdio library: cdio
+  --disable-dvdread            disable dvdread library: dvdreadsrc
+  --disable-lame               disable lame mp3 encoder library: lame
+  --disable-mad                disable mad mp3 decoder: mad
+  --disable-mpeg2dec           disable mpeg2dec: mpeg2dec
+  --disable-sidplay            disable libsidplay: sid
+  --disable-twolame            disable twolame: twolame
+  --disable-x264               disable x264 plug-in: x264
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
+  --with-autoconf         use a different autoconf for regeneration of
+                          Makefiles
+  --with-autoheader       use a different autoheader for regeneration of
+                          Makefiles
+  --with-automake         use a different automake for regeneration of
+                          Makefiles
+  --with-aclocal          use a different aclocal for regeneration of
+                          Makefiles
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
+  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+  --with-pkg-config-path  colon-separated list of pkg-config(1) dirs
+  --with-package-name     specify package name to use in plugins
+  --with-package-origin   specify package origin URL to use in plugins
+  --with-plugins          comma-separated list of dependencyless plug-ins to
+                          compile
+  --with-html-dir=PATH    path to installed docs
+  --with-default-audiosink
+                          specify default audio sink
+  --with-default-audiosrc specify default audio source
+  --with-default-videosink
+                          specify default video sink
+  --with-default-videosrc specify default video source
+  --with-default-visualizer
+                          specify default visualizer
+  --with-a52dec-prefix=PFX
+                          prefix where a52dec is installed (optional)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  VALGRIND_CFLAGS
+              C compiler flags for VALGRIND, overriding pkg-config
+  VALGRIND_LIBS
+              linker flags for VALGRIND, overriding pkg-config
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
+  GLIB_LIBS   linker flags for GLIB, overriding pkg-config
+  ORC_CFLAGS  C compiler flags for ORC, overriding pkg-config
+  ORC_LIBS    linker flags for ORC, overriding pkg-config
+  GST_CFLAGS  C compiler flags for GST, overriding pkg-config
+  GST_LIBS    linker flags for GST, overriding pkg-config
+  GST_BASE_CFLAGS
+              C compiler flags for GST_BASE, overriding pkg-config
+  GST_BASE_LIBS
+              linker flags for GST_BASE, overriding pkg-config
+  GST_CHECK_CFLAGS
+              C compiler flags for GST_CHECK, overriding pkg-config
+  GST_CHECK_LIBS
+              linker flags for GST_CHECK, overriding pkg-config
+  GST_PLUGINS_BASE_CFLAGS
+              C compiler flags for GST_PLUGINS_BASE, overriding pkg-config
+  GST_PLUGINS_BASE_LIBS
+              linker flags for GST_PLUGINS_BASE, overriding pkg-config
+  AMRNB_CFLAGS
+              C compiler flags for AMRNB, overriding pkg-config
+  AMRNB_LIBS  linker flags for AMRNB, overriding pkg-config
+  AMRWB_CFLAGS
+              C compiler flags for AMRWB, overriding pkg-config
+  AMRWB_LIBS  linker flags for AMRWB, overriding pkg-config
+  CDIO_CFLAGS C compiler flags for CDIO, overriding pkg-config
+  CDIO_LIBS   linker flags for CDIO, overriding pkg-config
+  MAD_CFLAGS  C compiler flags for MAD, overriding pkg-config
+  MAD_LIBS    linker flags for MAD, overriding pkg-config
+  MPEG2DEC_CFLAGS
+              C compiler flags for MPEG2DEC, overriding pkg-config
+  MPEG2DEC_LIBS
+              linker flags for MPEG2DEC, overriding pkg-config
+  TWOLAME_CFLAGS
+              C compiler flags for TWOLAME, overriding pkg-config
+  TWOLAME_LIBS
+              linker flags for TWOLAME, overriding pkg-config
+  X264_CFLAGS C compiler flags for X264, overriding pkg-config
+  X264_LIBS   linker flags for X264, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+GStreamer Ugly Plug-ins configure 0.10.19
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------------------------------------ ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer ##
+## ------------------------------------------------------------------------ ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------------------------------------ ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer ##
+## ------------------------------------------------------------------------ ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by GStreamer Ugly Plug-ins $as_me 0.10.19, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+gt_needs="$gt_needs "
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='gst-plugins-ugly'
+ VERSION='0.10.19'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+
+  PACKAGE_VERSION_MAJOR=$(echo 0.10.19 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 0.10.19 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 0.10.19 | cut -d'.' -f3)
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
+$as_echo_n "checking nano version... " >&6; }
+
+  NANO=$(echo 0.10.19 | cut -d'.' -f4)
+
+  if test x"$NANO" = x || test "x$NANO" = "x0" ; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
+$as_echo "0 (release)" >&6; }
+    NANO=0
+    PACKAGE_VERSION_RELEASE=1
+    GST_GIT="no"
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NANO" >&5
+$as_echo "$NANO" >&6; }
+    PACKAGE_VERSION_RELEASE=0.`date +%Y%m%d.%H%M%S`
+    if test "x$NANO" != "x1" ; then
+       GST_GIT="no"
+    else
+       GST_GIT="yes"
+    fi
+  fi
+  PACKAGE_VERSION_NANO=$NANO
+
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+
+GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
+GST_MAJORMINOR=0.10
+
+
+
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+  ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&5
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&5
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[012]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+
+
+
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='--shared'
+       lt_prog_compiler_static='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       lt_prog_compiler_wl='-Wl,-Wl,,'
+       lt_prog_compiler_pic='-PIC'
+       lt_prog_compiler_static='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-qpic'
+       lt_prog_compiler_static='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       *Sun\ F* | *Sun*Fortran*)
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Qoption ld '
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+        *Intel*\ [CF]*Compiler*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fPIC'
+         lt_prog_compiler_static='-static'
+         ;;
+       *Portland\ Group*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fpic'
+         lt_prog_compiler_static='-Bstatic'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+       link_all_deplibs=no
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           whole_archive_flag_spec='$convenience'
+         fi
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       always_export_symbols=yes
+       file_list_spec='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+       enable_shared_with_static_runtimes=yes
+       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       old_postinstall_cmds='chmod 644 $oldlib'
+       postlink_cmds='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
+       ;;
+      *)
+       # Assume MSVC wrapper
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       old_archive_from_new_cmds='true'
+       # FIXME: Should let the user specify the lib program.
+       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       enable_shared_with_static_runtimes=yes
+       ;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
+       hardcode_direct=yes
+       hardcode_direct_absolute=yes
+       export_dynamic_flag_spec='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       *)
+         hardcode_direct=yes
+         hardcode_direct_absolute=yes
+         export_dynamic_flag_spec='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       hardcode_direct_absolute=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl
+         pic_flag=$lt_prog_compiler_pic
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag
+         allow_undefined_flag=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc=no
+         else
+           lt_cv_archive_cmds_need_lc=yes
+         fi
+         allow_undefined_flag=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+GST_REQ=0.10.36
+GSTPB_REQ=0.10.36
+
+
+
+
+# Check whether --with-autoconf was given.
+if test "${with_autoconf+set}" = set; then :
+  withval=$with_autoconf;
+      unset AUTOCONF
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}${withval}"}
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Using $AUTOCONF as autoconf" >&5
+$as_echo "$as_me: Using $AUTOCONF as autoconf" >&6;}
+
+fi
+
+
+
+# Check whether --with-autoheader was given.
+if test "${with_autoheader+set}" = set; then :
+  withval=$with_autoheader;
+      unset AUTOHEADER
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}${withval}"}
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Using $AUTOHEADER as autoheader" >&5
+$as_echo "$as_me: Using $AUTOHEADER as autoheader" >&6;}
+
+fi
+
+
+
+# Check whether --with-automake was given.
+if test "${with_automake+set}" = set; then :
+  withval=$with_automake;
+      unset AUTOMAKE
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}${withval}"}
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Using $AUTOMAKE as automake" >&5
+$as_echo "$as_me: Using $AUTOMAKE as automake" >&6;}
+
+fi
+
+
+
+# Check whether --with-aclocal was given.
+if test "${with_aclocal+set}" = set; then :
+  withval=$with_aclocal;
+      unset ACLOCAL
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}${withval}"}
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Using $ACLOCAL as aclocal" >&5
+$as_echo "$as_me: Using $ACLOCAL as aclocal" >&6;}
+
+fi
+
+
+
+ACLOCAL_AMFLAGS="-I m4 -I common/m4"
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+      GETTEXT_MACRO_VERSION=0.17
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGFMT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+    ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GMSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+    case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XGETTEXT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$XGETTEXT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+    ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    rm -f messages.po
+
+    case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MSGMERGE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGMERGE" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&5
+          if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
+            ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+    ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+        test -n "$localedir" || localedir='${datadir}/locale'
+
+
+    test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+
+
+  ac_config_commands="$ac_config_commands po-directories"
+
+
+
+      if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${acl_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${acl_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if ${acl_cv_rpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+    # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+  enableval=$enable_rpath; :
+else
+  enable_rpath=yes
+fi
+
+
+
+                  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+  withval=$with_libiconv_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBICONV=
+  LTLIBICONV=
+  INCICONV=
+  LIBICONV_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+              else
+                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBICONV_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBICONV; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+                    LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+            LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFLocaleCopyCurrent=yes
+else
+  gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+
+
+
+
+
+
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+    if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if eval \${$gt_func_gnugettext_libc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libc=yes"
+else
+  eval "$gt_func_gnugettext_libc=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$gt_func_gnugettext_libc
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+            am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+else
+  am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+
+
+
+
+
+
+
+
+    use_additional=yes
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+
+# Check whether --with-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then :
+  withval=$with_libintl_prefix;
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+
+fi
+
+      LIBINTL=
+  LTLIBINTL=
+  INCINTL=
+  LIBINTL_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='intl '
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+                        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
+          else
+                                    :
+          fi
+        else
+                              found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+                                    if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+                        if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                                    if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                                    if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+                                                        if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+              else
+                                                                                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                                if test "$acl_hardcode_direct" = yes; then
+                                                      LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                                                                                haveit=
+                    for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                                                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+              else
+                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
+              fi
+            fi
+                        additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIBINTL_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+                                                                                                                if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INCINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                                            INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+                        if test -n "$found_la"; then
+                                                        save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+                            for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                                                                                                                                                                if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBINTL; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                                                                  haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                                                                  haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                                        names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                                                                                names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+                    LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+            LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+                        alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+            acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+    else
+            for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+    done
+  fi
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libintl=yes"
+else
+  eval "$gt_func_gnugettext_libintl=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+int
+main ()
+{
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+eval ac_res=\$$gt_func_gnugettext_libintl
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        fi
+
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+                    LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+  for element in $INCINTL; do
+    haveit=
+    for x in $CPPFLAGS; do
+
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  eval x=\"$x\"
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+    fi
+  done
+
+      fi
+
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+    fi
+
+        POSUB=po
+  fi
+
+
+
+    INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+
+  if test "$USE_NLS" = "yes"; then
+    GETTEXT_PACKAGE=gst-plugins-ugly-$GST_MAJORMINOR
+  else
+    GETTEXT_PACKAGE=NULL
+  fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+
+  EXP_VAR=LOCALEDIR
+  FROM_VAR=$datadir/locale
+
+    prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+    if test "x$prefix" = "xNONE"; then
+    prefix="$ac_default_prefix"
+  fi
+    if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+    while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var" = "x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+    full_var=$new_full_var
+  LOCALEDIR="$full_var"
+
+
+    prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+
+
+cat >>confdefs.h <<_ACEOF
+#define LOCALEDIR "$LOCALEDIR"
+_ACEOF
+
+
+
+
+
+    # Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug;
+      case "${enableval}" in
+        yes) USE_DEBUG=yes ;;
+        no)  USE_DEBUG=no ;;
+        *)   as_fn_error $? "bad value ${enableval} for --enable-debug" "$LINENO" 5 ;;
+      esac
+
+else
+  USE_DEBUG=yes
+fi
+
+
+  # Check whether --enable-profiling was given.
+if test "${enable_profiling+set}" = set; then :
+  enableval=$enable_profiling;
+      case "${enableval}" in
+        yes) USE_PROFILING=yes ;;
+        no)  USE_PROFILING=no ;;
+        *)   as_fn_error $? "bad value ${enableval} for --enable-profiling" "$LINENO" 5 ;;
+      esac
+
+else
+  USE_PROFILING=no
+fi
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+
+fi
+
+    # Check whether --enable-valgrind was given.
+if test "${enable_valgrind+set}" = set; then :
+  enableval=$enable_valgrind;
+      case "${enableval}" in
+        yes) USE_VALGRIND="$USE_DEBUG" ;;
+        no)  USE_VALGRIND=no ;;
+        *)   as_fn_error $? "bad value ${enableval} for --enable-valgrind" "$LINENO" 5 ;;
+      esac
+
+else
+  USE_VALGRIND="$USE_DEBUG"
+fi
+   VALGRIND_REQ="3.0"
+  if test "x$USE_VALGRIND" = xyes; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for VALGRIND" >&5
+$as_echo_n "checking for VALGRIND... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$VALGRIND_CFLAGS"; then
+        pkg_cv_VALGRIND_CFLAGS="$VALGRIND_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind >= \$VALGRIND_REQ\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "valgrind >= $VALGRIND_REQ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_VALGRIND_CFLAGS=`$PKG_CONFIG --cflags "valgrind >= $VALGRIND_REQ" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$VALGRIND_LIBS"; then
+        pkg_cv_VALGRIND_LIBS="$VALGRIND_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"valgrind >= \$VALGRIND_REQ\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "valgrind >= $VALGRIND_REQ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_VALGRIND_LIBS=`$PKG_CONFIG --libs "valgrind >= $VALGRIND_REQ" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               VALGRIND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "valgrind >= $VALGRIND_REQ"`
+        else
+               VALGRIND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "valgrind >= $VALGRIND_REQ"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$VALGRIND_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                USE_VALGRIND="no"
+elif test $pkg_failed = untried; then
+       USE_VALGRIND="no"
+else
+       VALGRIND_CFLAGS=$pkg_cv_VALGRIND_CFLAGS
+       VALGRIND_LIBS=$pkg_cv_VALGRIND_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       USE_VALGRIND="yes"
+fi
+  fi
+  if test "x$USE_VALGRIND" = xyes; then
+
+$as_echo "#define HAVE_VALGRIND 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Using extra code paths for valgrind" >&5
+$as_echo "$as_me: Using extra code paths for valgrind" >&6;}
+  fi
+
+
+  # Check whether --enable-gcov was given.
+if test "${enable_gcov+set}" = set; then :
+  enableval=$enable_gcov; enable_gcov=$enableval
+else
+  enable_gcov=no
+fi
+
+  if test x$enable_gcov = xyes ; then
+    if test "x$GCC" != "xyes"
+    then
+      as_fn_error $? "gcov only works if gcc is used" "$LINENO" 5
+    fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands \"-fprofile-arcs\"" >&5
+$as_echo_n "checking to see if compiler understands \"-fprofile-arcs\"... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS "-fprofile-arcs""
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    GCOV_CFLAGS="$GCOV_CFLAGS -fprofile-arcs"
+    true
+  else
+    true
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands \"-ftest-coverage\"" >&5
+$as_echo_n "checking to see if compiler understands \"-ftest-coverage\"... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS "-ftest-coverage""
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    GCOV_CFLAGS="$GCOV_CFLAGS -ftest-coverage"
+    true
+  else
+    true
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+        GCOV_CFLAGS=`echo "$GCOV_CFLAGS" | sed -e 's/-O[0-9]*//g'`
+                GCOV_LIBS=-lgcov
+
+
+    GCOV=`echo $CC | sed s/gcc/gcov/g`
+
+
+    GST_GCOV_ENABLED=yes
+
+cat >>confdefs.h <<_ACEOF
+#define GST_GCOV_ENABLED 1
+_ACEOF
+
+        if test "x$GST_GCOV_ENABLED" = "xyes"
+    then
+      CFLAGS="-O0"
+
+      CXXFLAGS="-O0"
+
+      FFLAGS="-O0"
+
+      CCASFLAGS="-O0"
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: gcov enabled, setting CFLAGS and friends to $CFLAGS" >&5
+$as_echo "$as_me: gcov enabled, setting CFLAGS and friends to $CFLAGS" >&6;}
+    fi
+  fi
+   if test x$enable_gcov = xyes; then
+  GST_GCOV_ENABLED_TRUE=
+  GST_GCOV_ENABLED_FALSE='#'
+else
+  GST_GCOV_ENABLED_TRUE='#'
+  GST_GCOV_ENABLED_FALSE=
+fi
+
+
+
+
+  # Check whether --enable-examples was given.
+if test "${enable_examples+set}" = set; then :
+  enableval=$enable_examples;
+        case "${enableval}" in
+          yes) BUILD_EXAMPLES=yes ;;
+          no)  BUILD_EXAMPLES=no ;;
+          *)   as_fn_error $? "bad value ${enableval} for --disable-examples" "$LINENO" 5 ;;
+        esac
+
+else
+  BUILD_EXAMPLES=yes
+fi
+    if test "x$BUILD_EXAMPLES" = "xyes"; then
+  BUILD_EXAMPLES_TRUE=
+  BUILD_EXAMPLES_FALSE='#'
+else
+  BUILD_EXAMPLES_TRUE='#'
+  BUILD_EXAMPLES_FALSE=
+fi
+
+
+
+
+
+# Check whether --with-pkg-config-path was given.
+if test "${with_pkg_config_path+set}" = set; then :
+  withval=$with_pkg_config_path;
+       export PKG_CONFIG_PATH=${withval}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: Set PKG_CONFIG_PATH to $PKG_CONFIG_PATH" >&5
+$as_echo "$as_me: Set PKG_CONFIG_PATH to $PKG_CONFIG_PATH" >&6;}
+
+fi
+
+
+
+
+# Check whether --with-package-name was given.
+if test "${with_package_name+set}" = set; then :
+  withval=$with_package_name;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-package-name" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-package-name" "$LINENO" 5 ;;
+        *)   GST_PACKAGE_NAME="${withval}" ;;
+      esac
+
+else
+
+      P=
+      if test "x$P" = "x"
+      then
+        P=$PACKAGE_NAME
+      fi
+
+      if test "x$PACKAGE_VERSION_NANO" = "x0"
+      then
+        GST_PACKAGE_NAME="$P source release"
+      else
+        if test "x$PACKAGE_VERSION_NANO" = "x1"
+        then
+          GST_PACKAGE_NAME="$P git"
+        else
+          GST_PACKAGE_NAME="$P prerelease"
+        fi
+      fi
+
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $GST_PACKAGE_NAME as package name" >&5
+$as_echo "$as_me: Using $GST_PACKAGE_NAME as package name" >&6;}
+
+cat >>confdefs.h <<_ACEOF
+#define GST_PACKAGE_NAME "$GST_PACKAGE_NAME"
+_ACEOF
+
+
+
+
+
+# Check whether --with-package-origin was given.
+if test "${with_package_origin+set}" = set; then :
+  withval=$with_package_origin;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-package-origin" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-package-origin" "$LINENO" 5 ;;
+        *)   GST_PACKAGE_ORIGIN="${withval}" ;;
+      esac
+
+else
+  GST_PACKAGE_ORIGIN="Unknown package origin"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $GST_PACKAGE_ORIGIN as package origin" >&5
+$as_echo "$as_me: Using $GST_PACKAGE_ORIGIN as package origin" >&6;}
+
+cat >>confdefs.h <<_ACEOF
+#define GST_PACKAGE_ORIGIN "$GST_PACKAGE_ORIGIN"
+_ACEOF
+
+
+
+
+
+
+# Check whether --with-plugins was given.
+if test "${with_plugins+set}" = set; then :
+  withval=$with_plugins; WITH_PLUGINS=$withval
+else
+  WITH_PLUGINS=
+fi
+
+
+  GST_PLUGINS_ALL=""
+  GST_PLUGINS_SELECTED=""
+
+
+
+
+
+
+  echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: building of plug-ins with external deps ***" >&5
+$as_echo "$as_me: *** checking feature: building of plug-ins with external deps ***" >&6;}
+if test "x" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins:  ***" >&5
+$as_echo "$as_me: *** for plug-ins:  ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_EXTERNAL" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-external was given.
+if test "${enable_external+set}" = set; then :
+  enableval=$enable_external;  case "${enableval}" in
+      yes) USE_EXTERNAL=yes;;
+      no) USE_EXTERNAL=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-external" "$LINENO" 5 ;;
+    esac
+else
+   USE_EXTERNAL=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_EXTERNAL="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***  pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: ***  pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_EXTERNAL = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_EXTERNAL=no
+    HAVE_EXTERNAL=yes
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_EXTERNAL = xno; then
+    USE_EXTERNAL=no
+  else
+    :
+  fi
+fi
+if test x$USE_EXTERNAL = xyes; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: building external plug-ins" >&5
+$as_echo "$as_me: building external plug-ins" >&6;}
+      BUILD_EXTERNAL="yes"
+
+  if test "x" != "x"; then
+    GST_PLUGINS_YES="\t\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_EXTERNAL /**/" >>confdefs.h
+
+else
+  :
+  if test "x" != "x"; then
+    GST_PLUGINS_NO="\t\n$GST_PLUGINS_NO"
+  fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: all plug-ins with external dependencies will not be built" >&5
+$as_echo "$as_me: WARNING: all plug-ins with external dependencies will not be built" >&2;}
+      BUILD_EXTERNAL="no"
+
+fi
+ if test x$USE_EXTERNAL = xyes; then
+  USE_EXTERNAL_TRUE=
+  USE_EXTERNAL_FALSE='#'
+else
+  USE_EXTERNAL_TRUE='#'
+  USE_EXTERNAL_FALSE=
+fi
+
+
+  # make BUILD_EXTERNAL available to Makefile.am
+   if test "x$BUILD_EXTERNAL" = "xyes"; then
+  BUILD_EXTERNAL_TRUE=
+  BUILD_EXTERNAL_FALSE='#'
+else
+  BUILD_EXTERNAL_TRUE='#'
+  BUILD_EXTERNAL_FALSE=
+fi
+
+
+
+
+  echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: building of experimental plug-ins ***" >&5
+$as_echo "$as_me: *** checking feature: building of experimental plug-ins ***" >&6;}
+if test "x" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins:  ***" >&5
+$as_echo "$as_me: *** for plug-ins:  ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_EXPERIMENTAL" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-experimental was given.
+if test "${enable_experimental+set}" = set; then :
+  enableval=$enable_experimental;  case "${enableval}" in
+      yes) USE_EXPERIMENTAL=yes;;
+      no) USE_EXPERIMENTAL=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-experimental" "$LINENO" 5 ;;
+    esac
+else
+   USE_EXPERIMENTAL=no
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_EXPERIMENTAL="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***  pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: ***  pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_EXPERIMENTAL = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_EXPERIMENTAL=no
+    HAVE_EXPERIMENTAL=yes
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_EXPERIMENTAL = xno; then
+    USE_EXPERIMENTAL=no
+  else
+    :
+  fi
+fi
+if test x$USE_EXPERIMENTAL = xyes; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: building experimental plug-ins" >&5
+$as_echo "$as_me: WARNING: building experimental plug-ins" >&2;}
+      BUILD_EXPERIMENTAL="yes"
+
+  if test "x" != "x"; then
+    GST_PLUGINS_YES="\t\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_EXPERIMENTAL /**/" >>confdefs.h
+
+else
+  :
+  if test "x" != "x"; then
+    GST_PLUGINS_NO="\t\n$GST_PLUGINS_NO"
+  fi
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: not building experimental plug-ins" >&5
+$as_echo "$as_me: not building experimental plug-ins" >&6;}
+      BUILD_EXPERIMENTAL="no"
+
+fi
+ if test x$USE_EXPERIMENTAL = xyes; then
+  USE_EXPERIMENTAL_TRUE=
+  USE_EXPERIMENTAL_FALSE='#'
+else
+  USE_EXPERIMENTAL_TRUE='#'
+  USE_EXPERIMENTAL_FALSE=
+fi
+
+
+  # make BUILD_EXPERIMENTAL available to Makefile.am
+   if test "x$BUILD_EXPERIMENTAL" = "xyes"; then
+  BUILD_EXPERIMENTAL_TRUE=
+  BUILD_EXPERIMENTAL_FALSE='#'
+else
+  BUILD_EXPERIMENTAL_TRUE='#'
+  BUILD_EXPERIMENTAL_FALSE=
+fi
+
+
+
+
+
+
+
+    case "x${host_cpu}" in
+    xi?86 | xk? | xi?86_64)
+      case $host_os in
+         solaris*)
+            ac_fn_c_check_decl "$LINENO" "__i386" "ac_cv_have_decl___i386" "$ac_includes_default"
+if test "x$ac_cv_have_decl___i386" = xyes; then :
+  I386_ABI="yes"
+else
+  I386_ABI="no"
+fi
+
+            ac_fn_c_check_decl "$LINENO" "__amd64" "ac_cv_have_decl___amd64" "$ac_includes_default"
+if test "x$ac_cv_have_decl___amd64" = xyes; then :
+  AMD64_ABI="yes"
+else
+  AMD64_ABI="no"
+fi
+
+
+            if test "x$I386_ABI" = "xyes" ; then
+               HAVE_CPU_I386=yes
+
+$as_echo "#define HAVE_CPU_I386 1" >>confdefs.h
+
+            fi
+            if test "x$AMD64_ABI" = "xyes" ; then
+                HAVE_CPU_X86_64=yes
+
+$as_echo "#define HAVE_CPU_X86_64 1" >>confdefs.h
+
+            fi
+            ;;
+         *)
+            HAVE_CPU_I386=yes
+
+$as_echo "#define HAVE_CPU_I386 1" >>confdefs.h
+
+
+                                    case "x${host_cpu}" in
+              xi386 | xi486) ;;
+            *)
+
+$as_echo "#define HAVE_RDTSC 1" >>confdefs.h
+ ;;
+            esac
+            ;;
+      esac
+      ;;
+    xpowerpc)
+      HAVE_CPU_PPC=yes
+
+$as_echo "#define HAVE_CPU_PPC 1" >>confdefs.h
+ ;;
+    xpowerpc64)
+      HAVE_CPU_PPC64=yes
+
+$as_echo "#define HAVE_CPU_PPC64 1" >>confdefs.h
+ ;;
+    xalpha*)
+      HAVE_CPU_ALPHA=yes
+
+$as_echo "#define HAVE_CPU_ALPHA 1" >>confdefs.h
+ ;;
+    xarm*)
+      HAVE_CPU_ARM=yes
+
+$as_echo "#define HAVE_CPU_ARM 1" >>confdefs.h
+ ;;
+    xsparc*)
+      HAVE_CPU_SPARC=yes
+
+$as_echo "#define HAVE_CPU_SPARC 1" >>confdefs.h
+ ;;
+    xmips*)
+      HAVE_CPU_MIPS=yes
+
+$as_echo "#define HAVE_CPU_MIPS 1" >>confdefs.h
+ ;;
+    xhppa*)
+      HAVE_CPU_HPPA=yes
+
+$as_echo "#define HAVE_CPU_HPPA 1" >>confdefs.h
+ ;;
+    xs390*)
+      HAVE_CPU_S390=yes
+
+$as_echo "#define HAVE_CPU_S390 1" >>confdefs.h
+ ;;
+    xia64*)
+      HAVE_CPU_IA64=yes
+
+$as_echo "#define HAVE_CPU_IA64 1" >>confdefs.h
+ ;;
+    xm68k*)
+      HAVE_CPU_M68K=yes
+
+$as_echo "#define HAVE_CPU_M68K 1" >>confdefs.h
+ ;;
+    xx86_64)
+      HAVE_CPU_X86_64=yes
+
+$as_echo "#define HAVE_CPU_X86_64 1" >>confdefs.h
+ ;;
+    xcris)
+      HAVE_CPU_CRIS=yes
+
+$as_echo "#define HAVE_CPU_CRIS 1" >>confdefs.h
+ ;;
+    xcrisv32)
+      HAVE_CPU_CRISV32=yes
+
+$as_echo "#define HAVE_CPU_CRISV32 1" >>confdefs.h
+ ;;
+  esac
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+
+   if test "x$HAVE_CPU_I386" = "xyes"; then
+  HAVE_CPU_I386_TRUE=
+  HAVE_CPU_I386_FALSE='#'
+else
+  HAVE_CPU_I386_TRUE='#'
+  HAVE_CPU_I386_FALSE=
+fi
+
+   if test "x$HAVE_CPU_PPC" = "xyes"; then
+  HAVE_CPU_PPC_TRUE=
+  HAVE_CPU_PPC_FALSE='#'
+else
+  HAVE_CPU_PPC_TRUE='#'
+  HAVE_CPU_PPC_FALSE=
+fi
+
+   if test "x$HAVE_CPU_PPC64" = "xyes"; then
+  HAVE_CPU_PPC64_TRUE=
+  HAVE_CPU_PPC64_FALSE='#'
+else
+  HAVE_CPU_PPC64_TRUE='#'
+  HAVE_CPU_PPC64_FALSE=
+fi
+
+   if test "x$HAVE_CPU_ALPHA" = "xyes"; then
+  HAVE_CPU_ALPHA_TRUE=
+  HAVE_CPU_ALPHA_FALSE='#'
+else
+  HAVE_CPU_ALPHA_TRUE='#'
+  HAVE_CPU_ALPHA_FALSE=
+fi
+
+   if test "x$HAVE_CPU_ARM" = "xyes"; then
+  HAVE_CPU_ARM_TRUE=
+  HAVE_CPU_ARM_FALSE='#'
+else
+  HAVE_CPU_ARM_TRUE='#'
+  HAVE_CPU_ARM_FALSE=
+fi
+
+   if test "x$HAVE_CPU_SPARC" = "xyes"; then
+  HAVE_CPU_SPARC_TRUE=
+  HAVE_CPU_SPARC_FALSE='#'
+else
+  HAVE_CPU_SPARC_TRUE='#'
+  HAVE_CPU_SPARC_FALSE=
+fi
+
+   if test "x$HAVE_CPU_HPPA" = "xyes"; then
+  HAVE_CPU_HPPA_TRUE=
+  HAVE_CPU_HPPA_FALSE='#'
+else
+  HAVE_CPU_HPPA_TRUE='#'
+  HAVE_CPU_HPPA_FALSE=
+fi
+
+   if test "x$HAVE_CPU_MIPS" = "xyes"; then
+  HAVE_CPU_MIPS_TRUE=
+  HAVE_CPU_MIPS_FALSE='#'
+else
+  HAVE_CPU_MIPS_TRUE='#'
+  HAVE_CPU_MIPS_FALSE=
+fi
+
+   if test "x$HAVE_CPU_S390" = "xyes"; then
+  HAVE_CPU_S390_TRUE=
+  HAVE_CPU_S390_FALSE='#'
+else
+  HAVE_CPU_S390_TRUE='#'
+  HAVE_CPU_S390_FALSE=
+fi
+
+   if test "x$HAVE_CPU_IA64" = "xyes"; then
+  HAVE_CPU_IA64_TRUE=
+  HAVE_CPU_IA64_FALSE='#'
+else
+  HAVE_CPU_IA64_TRUE='#'
+  HAVE_CPU_IA64_FALSE=
+fi
+
+   if test "x$HAVE_CPU_M68K" = "xyes"; then
+  HAVE_CPU_M68K_TRUE=
+  HAVE_CPU_M68K_FALSE='#'
+else
+  HAVE_CPU_M68K_TRUE='#'
+  HAVE_CPU_M68K_FALSE=
+fi
+
+   if test "x$HAVE_CPU_X86_64" = "xyes"; then
+  HAVE_CPU_X86_64_TRUE=
+  HAVE_CPU_X86_64_FALSE='#'
+else
+  HAVE_CPU_X86_64_TRUE='#'
+  HAVE_CPU_X86_64_FALSE=
+fi
+
+   if test "x$HAVE_CPU_CRIS" = "xyes"; then
+  HAVE_CPU_CRIS_TRUE=
+  HAVE_CPU_CRIS_FALSE='#'
+else
+  HAVE_CPU_CRIS_TRUE='#'
+  HAVE_CPU_CRIS_FALSE=
+fi
+
+   if test "x$HAVE_CPU_CRISV32" = "xyes"; then
+  HAVE_CPU_CRISV32_TRUE=
+  HAVE_CPU_CRISV32_FALSE='#'
+else
+  HAVE_CPU_CRISV32_TRUE='#'
+  HAVE_CPU_CRISV32_FALSE=
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define HOST_CPU "$host_cpu"
+_ACEOF
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+   case $ac_cv_prog_cc_stdc in #(
+  no) :
+    ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+       {
+       case 's': // string
+         str = va_arg (args_copy, const char *);
+         break;
+       case 'd': // int
+         number = va_arg (args_copy, int);
+         break;
+       case 'f': // float
+         fnumber = va_arg (args_copy, double);
+         break;
+       default:
+         break;
+       }
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+         || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+else
+  ac_cv_prog_cc_stdc=no
+fi
+
+fi
+ ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
+$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
+  if ${ac_cv_prog_cc_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+
+  case $ac_cv_prog_cc_stdc in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;; #(
+  '') :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;; #(
+  *) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
+$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  _lt_caught_CXX_error=yes
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+         $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+           # We have reworked collect2
+           :
+         else
+           # We have old collect2
+           hardcode_direct_CXX=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           hardcode_minus_L_CXX=yes
+           hardcode_libdir_flag_spec_CXX='-L$libdir'
+           hardcode_libdir_separator_CXX=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+          else
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+           allow_undefined_flag_CXX="-z nodefs"
+           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
+
+fi
+
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+           hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           no_undefined_flag_CXX=' ${wl}-bernotok'
+           allow_undefined_flag_CXX=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             whole_archive_flag_spec_CXX='$convenience'
+           fi
+           archive_cmds_need_lc_CXX=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         allow_undefined_flag_CXX=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         ld_shlibs_CXX=no
+       fi
+       ;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+         ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl*)
+         # Native MSVC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+         # no search path for DLLs.
+         hardcode_libdir_flag_spec_CXX=' '
+         allow_undefined_flag_CXX=unsupported
+         always_export_symbols_CXX=yes
+         file_list_spec_CXX='@'
+         # Tell ltmain to make .lib files, not .a files.
+         libext=lib
+         # Tell ltmain to make .dll files, not .so files.
+         shrext_cmds=".dll"
+         # FIXME: Setting linknames here is a bad hack.
+         archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
+         # The linker will not automatically build a static lib if we build a DLL.
+         # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+         enable_shared_with_static_runtimes_CXX=yes
+         # Don't use ranlib
+         old_postinstall_cmds_CXX='chmod 644 $oldlib'
+         postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
+               ;;
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
+         ;;
+       *)
+         # g++
+         # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+         # as there is no search path for DLLs.
+         hardcode_libdir_flag_spec_CXX='-L$libdir'
+         export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+         allow_undefined_flag_CXX=unsupported
+         always_export_symbols_CXX=no
+         enable_shared_with_static_runtimes_CXX=yes
+
+         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+         else
+           ld_shlibs_CXX=no
+         fi
+         ;;
+       esac
+       ;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+       ;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                            # but as the default
+                                            # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                                # but as the default
+                                                # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             ld_shlibs_CXX=no
+           fi
+           ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+       hardcode_direct_CXX=no
+       hardcode_shlibpath_var_CXX=no
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+             fi
+           fi
+           link_all_deplibs_CXX=yes
+           ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+           # Archives containing C++ object files must be created using
+           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+           old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           archive_cmds_need_lc_CXX=no
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+             prelink_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+             old_archive_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
+             archive_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             archive_expsym_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 and above use weak symbols
+             archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
+
+           hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+           runpath_var=LD_RUN_PATH
+           hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+           hardcode_libdir_separator_CXX=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           ;;
+         xl* | mpixl* | bgxl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             no_undefined_flag_CXX=' -zdefs'
+             archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             hardcode_libdir_flag_spec_CXX='-R$libdir'
+             whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+             compiler_needs_object_CXX=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='func_echo_all'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+       ;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+       esac
+       ;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         hardcode_libdir_flag_spec_CXX='-R$libdir'
+         hardcode_direct_CXX=yes
+         hardcode_shlibpath_var_CXX=no
+       fi
+       # Workaround some broken pre-1.5 toolchains
+       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+       ;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+       ;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       ld_shlibs_CXX=no
+       ;;
+
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         hardcode_direct_CXX=yes
+         hardcode_shlibpath_var_CXX=no
+         hardcode_direct_absolute_CXX=yes
+         archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           export_dynamic_flag_spec_CXX='${wl}-E'
+           whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=func_echo_all
+       else
+         ld_shlibs_CXX=no
+       fi
+       ;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           hardcode_libdir_separator_CXX=:
+
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               allow_undefined_flag_CXX=' -expect_unresolved \*'
+               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+               ;;
+           esac
+
+           hardcode_libdir_separator_CXX=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
+
+             hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+             hardcode_libdir_separator_CXX=:
+
+             # Commands to make compiler produce verbose output that lists
+             # what "hidden" libraries, object files and flags are used when
+             # linking a shared library.
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+           else
+             # FIXME: insert proper C++ library support
+             ld_shlibs_CXX=no
+           fi
+           ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+           no_undefined_flag_CXX=' -zdefs'
+           archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           hardcode_libdir_flag_spec_CXX='-R$libdir'
+           hardcode_shlibpath_var_CXX=no
+           case $host_os in
+             solaris2.[0-5] | solaris2.[0-5].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           link_all_deplibs_CXX=yes
+
+           output_verbose_link_cmd='func_echo_all'
+
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+           # The C++ compiler must be used to create the archive.
+           old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
+          *)
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             fi
+
+             hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[0-5] | solaris2.[0-5].*) ;;
+               *)
+                 whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+         archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       no_undefined_flag_CXX='${wl}-z,text'
+       allow_undefined_flag_CXX='${wl}-z,nodefs'
+       archive_cmds_need_lc_CXX=no
+       hardcode_shlibpath_var_CXX=no
+       hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+       hardcode_libdir_separator_CXX=':'
+       link_all_deplibs_CXX=yes
+       export_dynamic_flag_spec_CXX='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
+
+       case $cc_basename in
+          CC*)
+           archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+             '"$old_archive_cmds_CXX"
+           reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+             '"$reload_cmds_CXX"
+           ;;
+         *)
+           archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+        prev=$p
+        continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+        case ${prev} in
+        -L | -R)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$compiler_lib_search_path_CXX"; then
+            compiler_lib_search_path_CXX="${prev}${p}"
+          else
+            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$postdeps_CXX"; then
+          postdeps_CXX="${prev}${p}"
+        else
+          postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+        fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$predep_objects_CXX"; then
+          predep_objects_CXX="$p"
+        else
+          predep_objects_CXX="$predep_objects_CXX $p"
+        fi
+       else
+        if test -z "$postdep_objects_CXX"; then
+          postdep_objects_CXX="$p"
+        else
+          postdep_objects_CXX="$postdep_objects_CXX $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       ;;
+      *)
+       lt_prog_compiler_pic_CXX='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         lt_prog_compiler_static_CXX='-Bstatic'
+       else
+         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+       # This hack is so that the source file can tell whether it is being
+       # built for inclusion in a dll (and should export symbols for example).
+       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             lt_prog_compiler_pic_CXX='+Z'
+           fi
+           ;;
+         aCC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             lt_prog_compiler_pic_CXX='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-fpic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-qpic'
+           lt_prog_compiler_static_CXX='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             lt_prog_compiler_pic_CXX='-KPIC'
+             lt_prog_compiler_static_CXX='-Bstatic'
+             lt_prog_compiler_wl_CXX='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           lt_prog_compiler_pic_CXX='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd* | netbsdelf*-gnu)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           lt_prog_compiler_wl_CXX='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           lt_prog_compiler_pic_CXX='-pic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       lt_prog_compiler_can_build_shared_CXX=no
+       ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl_CXX
+         pic_flag=$lt_prog_compiler_pic_CXX
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+         allow_undefined_flag_CXX=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc_CXX=no
+         else
+           lt_cv_archive_cmds_need_lc_CXX=yes
+         fi
+         allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Extract the first word of "$CXX", so it can be a program name with args.
+set dummy $CXX; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_HAVE_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$HAVE_CXX"; then
+  ac_cv_prog_HAVE_CXX="$HAVE_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_HAVE_CXX="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_HAVE_CXX" && ac_cv_prog_HAVE_CXX="no"
+fi
+fi
+HAVE_CXX=$ac_cv_prog_HAVE_CXX
+if test -n "$HAVE_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_CXX" >&5
+$as_echo "$HAVE_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
+fi
+set dummy $CC; ac_cc=`$as_echo "$2" |
+                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+       # cc works too.
+       :
+      else
+       # cc exists but doesn't like -o.
+       eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
+else
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f core conftest*
+
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+
+
+
+# Extract the first word of "valgrind", so it can be a program name with args.
+set dummy valgrind; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_VALGRIND_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $VALGRIND_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_VALGRIND_PATH="$VALGRIND_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_VALGRIND_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_VALGRIND_PATH" && ac_cv_path_VALGRIND_PATH="no"
+  ;;
+esac
+fi
+VALGRIND_PATH=$ac_cv_path_VALGRIND_PATH
+if test -n "$VALGRIND_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALGRIND_PATH" >&5
+$as_echo "$VALGRIND_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test ! "x$VALGRIND_PATH" = "xno"; then
+  HAVE_VALGRIND_TRUE=
+  HAVE_VALGRIND_FALSE='#'
+else
+  HAVE_VALGRIND_TRUE='#'
+  HAVE_VALGRIND_FALSE=
+fi
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working do while(0) macros" >&5
+$as_echo_n "checking for working do while(0) macros... " >&6; }
+if ${_cv_g_support_dowhile_macros+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+       #define STMT_START do
+       #define STMT_END while(0)
+       #define STMT_TEST STMT_START { i = 0; } STMT_END
+       int main(void) { int i = 1; STMT_TEST; return i; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  _cv_g_support_dowhile_macros=yes
+else
+  _cv_g_support_dowhile_macros=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_cv_g_support_dowhile_macros" >&5
+$as_echo "$_cv_g_support_dowhile_macros" >&6; }
+if test x$_cv_g_support_dowhile_macros = xyes; then
+
+$as_echo "#define HAVE_DOWHILE_MACROS 1" >>confdefs.h
+
+fi
+
+
+
+
+# Check whether --with-html-dir was given.
+if test "${with_html_dir+set}" = set; then :
+  withval=$with_html_dir;
+else
+  with_html_dir='${datadir}/gtk-doc/html'
+fi
+
+  HTML_DIR="$with_html_dir"
+
+
+    # Check whether --enable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then :
+  enableval=$enable_gtk_doc;
+else
+  enable_gtk_doc=no
+fi
+
+
+  if test x$enable_gtk_doc = xyes; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.3\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.3") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  :
+else
+  as_fn_error $? "You need to have gtk-doc >= 1.3 installed to build gtk-doc" "$LINENO" 5
+fi
+    if test -z "$SED"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5
+$as_echo_n "checking whether to build gtk-doc documentation... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5
+$as_echo "$enable_gtk_doc" >&6; }
+
+  for ac_prog in gtkdoc-check
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GTKDOC_CHECK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GTKDOC_CHECK in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK
+if test -n "$GTKDOC_CHECK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5
+$as_echo "$GTKDOC_CHECK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$GTKDOC_CHECK" && break
+done
+
+
+   if test x$enable_gtk_doc = xyes; then
+  ENABLE_GTK_DOC_TRUE=
+  ENABLE_GTK_DOC_FALSE='#'
+else
+  ENABLE_GTK_DOC_TRUE='#'
+  ENABLE_GTK_DOC_FALSE=
+fi
+
+   if test -n "$LIBTOOL"; then
+  GTK_DOC_USE_LIBTOOL_TRUE=
+  GTK_DOC_USE_LIBTOOL_FALSE='#'
+else
+  GTK_DOC_USE_LIBTOOL_TRUE='#'
+  GTK_DOC_USE_LIBTOOL_FALSE=
+fi
+
+
+
+
+    PYTHON_CANDIDATES="python python2.2 python2.1 python2.0 python2 \
+                     python1.6 python1.5"
+
+     { $as_echo "$as_me:${as_lineno-$LINENO}: Looking for Python version >= 2.1" >&5
+$as_echo "$as_me: Looking for Python version >= 2.1" >&6;}
+        prog="
+import sys, string
+minver = '2.1'
+# split string by '.' and convert to numeric
+minver_info = map(string.atoi, string.split(minver, '.'))
+# we can now do comparisons on the two lists:
+if sys.version_info >= tuple(minver_info):
+       sys.exit(0)
+else:
+       sys.exit(1)"
+
+    python_good=false
+    for python_candidate in $PYTHON_CANDIDATES; do
+      unset PYTHON
+      # Extract the first word of "$python_candidate", so it can be a program name with args.
+set dummy $python_candidate; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ 1> /dev/null 2> /dev/null
+
+      if test "x$PYTHON" = "x"; then continue; fi
+
+      if $PYTHON -c "$prog" 1>&5 2>&5; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking \"$PYTHON\":" >&5
+$as_echo_n "checking \"$PYTHON\":... " >&6; }
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5
+$as_echo "okay" >&6; }
+        python_good=true
+        break;
+      else
+                unset ac_cv_path_PYTHON
+      fi
+    done
+
+
+  if test "$python_good" != "true"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No suitable version of python found" >&5
+$as_echo "$as_me: WARNING: No suitable version of python found" >&2;}
+    PYTHON=
+  else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking local Python configuration" >&5
+$as_echo_n "checking local Python configuration... " >&6; }
+
+
+
+    PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[:3]"`
+
+
+
+
+  PYTHON_PREFIX='${prefix}'
+
+
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
+
+
+
+  PYTHON_PLATFORM=`$PYTHON -c "import sys; print sys.platform"`
+
+
+
+
+
+  pythondir=$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
+
+
+
+  pkgpythondir=\${pythondir}/$PACKAGE
+
+
+
+  pyexecdir=$PYTHON_EXEC_PREFIX"/lib/python"$PYTHON_VERSION/site-packages
+
+
+
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: looks good" >&5
+$as_echo "looks good" >&6; }
+
+  fi
+
+
+
+  build_plugin_docs=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build plugin documentation" >&5
+$as_echo_n "checking whether to build plugin documentation... " >&6; }
+  if test x$enable_gtk_doc = xyes; then
+    build_plugin_docs=yes
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (gtk-doc disabled or not available)" >&5
+$as_echo "no (gtk-doc disabled or not available)" >&6; }
+  fi
+
+   if test x$build_plugin_docs = xyes; then
+  ENABLE_PLUGIN_DOCS_TRUE=
+  ENABLE_PLUGIN_DOCS_FALSE='#'
+else
+  ENABLE_PLUGIN_DOCS_TRUE='#'
+  ENABLE_PLUGIN_DOCS_FALSE=
+fi
+
+
+
+
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mwvalidcheckl in -lmw" >&5
+$as_echo_n "checking for _mwvalidcheckl in -lmw... " >&6; }
+if ${ac_cv_lib_mw__mwvalidcheckl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmw  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char _mwvalidcheckl ();
+int
+main ()
+{
+return _mwvalidcheckl ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_mw__mwvalidcheckl=yes
+else
+  ac_cv_lib_mw__mwvalidcheckl=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5
+$as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; }
+if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then :
+  LIBM="-lmw"
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if ${ac_cv_lib_m_cos+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_cos=yes
+else
+  ac_cv_lib_m_cos=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = xyes; then :
+  LIBM="$LIBM -lm"
+fi
+
+  ;;
+*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if ${ac_cv_lib_m_cos+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_cos=yes
+else
+  ac_cv_lib_m_cos=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = xyes; then :
+  LIBM="-lm"
+fi
+
+  ;;
+esac
+
+
+
+
+
+# ------ AX CREATE STDINT H -------------------------------------
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5
+$as_echo_n "checking for stdint types... " >&6; }
+ac_stdint_h=`echo _stdint.h`
+# try to shortcircuit - if the default include path of the compiler
+# can find a "stdint.h" header then we assume that all compilers can.
+if ${ac_cv_header_stdint_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
+old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
+old_CFLAGS="$CFLAGS"     ; CFLAGS=""
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+int
+main ()
+{
+int_least32_t v = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_stdint_result="(assuming C99 compatible system)"
+ ac_cv_header_stdint_t="stdint.h";
+else
+  ac_cv_header_stdint_t=""
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
+CFLAGS="-std=c99"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdint.h>
+int
+main ()
+{
+int_least32_t v = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&5
+$as_echo "$as_me: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&2;}
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+CXXFLAGS="$old_CXXFLAGS"
+CPPFLAGS="$old_CPPFLAGS"
+CFLAGS="$old_CFLAGS"
+fi
+
+
+v="... $ac_cv_header_stdint_h"
+if test "$ac_stdint_h" = "stdint.h" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./stdint.h?)" >&5
+$as_echo "(are you sure you want them in ./stdint.h?)" >&6; }
+elif test "$ac_stdint_h" = "inttypes.h" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./inttypes.h?)" >&5
+$as_echo "(are you sure you want them in ./inttypes.h?)" >&6; }
+elif test "_$ac_cv_header_stdint_t" = "_" ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: (putting them into $ac_stdint_h)$v" >&5
+$as_echo "(putting them into $ac_stdint_h)$v" >&6; }
+else
+ ac_cv_header_stdint="$ac_cv_header_stdint_t"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint (shortcircuit)" >&5
+$as_echo "$ac_cv_header_stdint (shortcircuit)" >&6; }
+fi
+
+if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
+
+
+inttype_headers=`echo  | sed -e 's/,/ /g'`
+
+ac_cv_stdint_result="(no helpful system typedefs seen)"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
+$as_echo_n "checking for stdint uintptr_t... " >&6; }
+if ${ac_cv_header_stdint_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
+$as_echo "(..)" >&6; }
+  for i in    stdint.h inttypes.h sys/inttypes.h $inttype_headers
+  do
+   unset ac_cv_type_uintptr_t
+   unset ac_cv_type_uint64_t
+   ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <$i>
+"
+if test "x$ac_cv_type_uintptr_t" = xyes; then :
+  ac_cv_header_stdint_x=$i
+else
+  continue
+fi
+
+   ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
+"
+if test "x$ac_cv_type_uint64_t" = xyes; then :
+  and64="/uint64_t"
+else
+  and64=""
+fi
+
+   ac_cv_stdint_result="(seen uintptr_t$and64 in $i)"
+ break
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
+$as_echo_n "checking for stdint uintptr_t... " >&6; }
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5
+$as_echo "$ac_cv_header_stdint_x" >&6; }
+
+
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
+$as_echo_n "checking for stdint uint32_t... " >&6; }
+if ${ac_cv_header_stdint_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
+$as_echo "(..)" >&6; }
+  for i in    inttypes.h sys/inttypes.h stdint.h $inttype_headers
+  do
+   unset ac_cv_type_uint32_t
+   unset ac_cv_type_uint64_t
+   ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <$i>
+"
+if test "x$ac_cv_type_uint32_t" = xyes; then :
+  ac_cv_header_stdint_o=$i
+else
+  continue
+fi
+
+   ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
+"
+if test "x$ac_cv_type_uint64_t" = xyes; then :
+  and64="/uint64_t"
+else
+  and64=""
+fi
+
+   ac_cv_stdint_result="(seen uint32_t$and64 in $i)"
+ break
+   break;
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
+$as_echo_n "checking for stdint uint32_t... " >&6; }
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5
+$as_echo "$ac_cv_header_stdint_o" >&6; }
+
+fi
+
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+if test "_$ac_cv_header_stdint_o" = "_" ; then
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
+$as_echo_n "checking for stdint u_int32_t... " >&6; }
+if ${ac_cv_header_stdint_u+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
+$as_echo "(..)" >&6; }
+  for i in    sys/types.h inttypes.h sys/inttypes.h $inttype_headers ; do
+   unset ac_cv_type_u_int32_t
+   unset ac_cv_type_u_int64_t
+   ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <$i>
+"
+if test "x$ac_cv_type_u_int32_t" = xyes; then :
+  ac_cv_header_stdint_u=$i
+else
+  continue
+fi
+
+   ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i>
+"
+if test "x$ac_cv_type_u_int64_t" = xyes; then :
+  and64="/u_int64_t"
+else
+  and64=""
+fi
+
+   ac_cv_stdint_result="(seen u_int32_t$and64 in $i)"
+ break
+   break;
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
+$as_echo_n "checking for stdint u_int32_t... " >&6; }
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5
+$as_echo "$ac_cv_header_stdint_u" >&6; }
+
+fi fi
+
+if test "_$ac_cv_header_stdint_x" = "_" ; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint datatype model" >&5
+$as_echo_n "checking for stdint datatype model... " >&6; }
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
+$as_echo "(..)" >&6; }
+
+   # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
+$as_echo_n "checking size of char... " >&6; }
+if ${ac_cv_sizeof_char+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_char" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (char)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_char=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
+$as_echo "$ac_cv_sizeof_char" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR $ac_cv_sizeof_char
+_ACEOF
+
+
+   # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if ${ac_cv_sizeof_short+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (short)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+   # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if ${ac_cv_sizeof_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+   # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+   # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
+$as_echo_n "checking size of void*... " >&6; }
+if ${ac_cv_sizeof_voidp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_voidp" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (void*)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_voidp=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
+$as_echo "$ac_cv_sizeof_voidp" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
+_ACEOF
+
+
+   ac_cv_char_data_model=""
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
+   ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
+   ac_cv_long_data_model=""
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
+   ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking data model" >&5
+$as_echo_n "checking data model... " >&6; }
+   case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
+    122/242)     ac_cv_data_model="IP16"  ; n="standard 16bit machine" ;;
+    122/244)     ac_cv_data_model="LP32"  ; n="standard 32bit machine" ;;
+    122/*)       ac_cv_data_model="i16"   ; n="unusual int16 model" ;;
+    124/444)     ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
+    124/488)     ac_cv_data_model="LP64"  ; n="standard 64bit unixish" ;;
+    124/448)     ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
+    124/*)       ac_cv_data_model="i32"   ; n="unusual int32 model" ;;
+    128/888)     ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
+    128/*)       ac_cv_data_model="i64"   ; n="unusual int64 model" ;;
+    222/*2)      ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
+    333/*3)      ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
+    444/*4)      ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
+    666/*6)      ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
+    888/*8)      ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
+    222/*|333/*|444/*|666/*|888/*) :
+                 ac_cv_data_model="iDSP"  ; n="unusual dsptype" ;;
+     *)          ac_cv_data_model="none"  ; n="very unusual model" ;;
+   esac
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_data_model ($ac_cv_long_data_model, $n)" >&5
+$as_echo "$ac_cv_data_model ($ac_cv_long_data_model, $n)" >&6; }
+
+fi
+
+if test "_$ac_cv_header_stdint_x" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_x"
+elif  test "_$ac_cv_header_stdint_o" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_o"
+elif  test "_$ac_cv_header_stdint_u" != "_" ; then
+   ac_cv_header_stdint="$ac_cv_header_stdint_u"
+else
+   ac_cv_header_stdint="stddef.h"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra inttypes in chosen header" >&5
+$as_echo_n "checking for extra inttypes in chosen header... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ($ac_cv_header_stdint)" >&5
+$as_echo "($ac_cv_header_stdint)" >&6; }
+unset ac_cv_type_int_least32_t
+unset ac_cv_type_int_fast32_t
+ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <$ac_cv_header_stdint>
+"
+if test "x$ac_cv_type_int_least32_t" = xyes; then :
+
+fi
+
+ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include<$ac_cv_header_stdint>
+"
+if test "x$ac_cv_type_int_fast32_t" = xyes; then :
+
+fi
+
+ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "#include <$ac_cv_header_stdint>
+"
+if test "x$ac_cv_type_intmax_t" = xyes; then :
+
+fi
+
+
+fi # shortcircut to system "stdint.h"
+# ------------------ PREPARE VARIABLES ------------------------------
+if test "$GCC" = "yes" ; then
+ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
+else
+ac_cv_stdint_message="using $CC"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&5
+$as_echo "make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&6; }
+
+# ----------------- DONE inttypes.h checks START header -------------
+ac_config_commands="$ac_config_commands $ac_stdint_h"
+
+
+
+for ac_header in malloc.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default"
+if test "x$ac_cv_header_malloc_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_MALLOC_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __PRETTY_FUNCTION__" >&5
+$as_echo_n "checking whether $CC implements __PRETTY_FUNCTION__... " >&6; }
+  if ${gst_cv_have_pretty_function+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+printf("%s", __PRETTY_FUNCTION__);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gst_cv_have_pretty_function=yes
+else
+  gst_cv_have_pretty_function=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gst_cv_have_pretty_function" >&5
+$as_echo "$gst_cv_have_pretty_function" >&6; }
+  if test "$gst_cv_have_pretty_function" = yes; then
+
+$as_echo "#define HAVE_PRETTY_FUNCTION 1" >>confdefs.h
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __FUNCTION__" >&5
+$as_echo_n "checking whether $CC implements __FUNCTION__... " >&6; }
+  if ${gst_cv_have_function+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+printf("%s", __FUNCTION__);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gst_cv_have_function=yes
+else
+  gst_cv_have_function=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gst_cv_have_function" >&5
+$as_echo "$gst_cv_have_function" >&6; }
+  if test "$gst_cv_have_function" = yes; then
+
+$as_echo "#define HAVE_FUNCTION 1" >>confdefs.h
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __func__" >&5
+$as_echo_n "checking whether $CC implements __func__... " >&6; }
+  if ${gst_cv_have_func+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+printf("%s", __func__);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gst_cv_have_func=yes
+else
+  gst_cv_have_func=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gst_cv_have_func" >&5
+$as_echo "$gst_cv_have_func" >&6; }
+  if test "$gst_cv_have_func" = yes; then
+
+$as_echo "#define HAVE_FUNC 1" >>confdefs.h
+
+  fi
+
+  if test "$gst_cv_have_pretty_function" = yes; then
+    function=__PRETTY_FUNCTION__
+  else
+    if test "$gst_cv_have_function" = yes; then
+      function=__FUNCTION__
+    else
+      if test "$gst_cv_have_func" = yes; then
+        function=__func__
+      else
+        function=\"\"
+      fi
+    fi
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define GST_FUNCTION $function
+_ACEOF
+
+
+
+
+
+
+
+    GLIB_REQ=2.24
+  if test "x$GLIB_REQ" = "x"
+  then
+    as_fn_error $? "Please specify a required version for GLib 2.0" "$LINENO" 5
+  fi
+
+
+
+  which="glib-2.0 >= $GLIB_REQ gobject-2.0 gthread-2.0 gmodule-no-export-2.0"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5
+$as_echo_n "checking for GLIB... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GLIB_CFLAGS"; then
+        pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GLIB_LIBS"; then
+        pkg_cv_GLIB_LIBS="$GLIB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+               GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GLIB_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GLIB="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GLIB_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GLIB_PKG_ERRORS" >&5
+$as_echo "$as_me: $GLIB_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GLIB="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GLIB_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GLIB_PKG_ERRORS" >&5
+$as_echo "$as_me: $GLIB_PKG_ERRORS" >&6;}
+      fi
+
+else
+       GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
+       GLIB_LIBS=$pkg_cv_GLIB_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GLIB="yes"
+
+fi
+
+
+
+  if test "x$HAVE_GLIB" = "xno"; then
+    as_fn_error $? "This package requires GLib >= $GLIB_REQ to compile." "$LINENO" 5
+  fi
+
+        GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_THREADS_MANDATORY"
+
+    if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_DEPRECATED"
+  fi
+
+  # Check whether --enable-gobject-cast-checks was given.
+if test "${enable_gobject_cast_checks+set}" = set; then :
+  enableval=$enable_gobject_cast_checks;
+else
+  enable_gobject_cast_checks=auto
+fi
+
+
+  if test "x$enable_gobject_cast_checks" = "xauto"; then
+        if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+      enable_gobject_cast_checks=yes
+    else
+      enable_gobject_cast_checks=no
+    fi
+  fi
+
+  if test "x$enable_gobject_cast_checks" = "xno"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_CAST_CHECKS"
+  fi
+
+  # Check whether --enable-glib-asserts was given.
+if test "${enable_glib_asserts+set}" = set; then :
+  enableval=$enable_glib_asserts;
+else
+  enable_glib_assertions=auto
+fi
+
+
+  if test "x$enable_glib_assertions" = "xauto"; then
+        if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+      enable_glib_assertions=yes
+    else
+      enable_glib_assertions=no
+    fi
+  fi
+
+  if test "x$enable_glib_assertions" = "xno"; then
+    GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_ASSERT"
+  fi
+
+
+  GIVEN_CFLAGS=$GLIB_CFLAGS
+  INCLUDE_DIRS=`echo | cpp -v 2>&1`
+
+      INCLUDE_DIRS=`echo $INCLUDE_DIRS | sed -e 's/.*<...> search starts here://' | sed -e 's/End of search list.*//'`
+  for dir in $INCLUDE_DIRS; do
+        GIVEN_CFLAGS=`echo $GIVEN_CFLAGS | sed -e "s#-I$dir ##"`
+  done
+  GLIB_CFLAGS=$GIVEN_CFLAGS
+
+
+
+
+
+  ORC_REQ=0.4.11
+
+  # Check whether --enable-orc was given.
+if test "${enable_orc+set}" = set; then :
+  enableval=$enable_orc; case "${enableval}" in
+    auto) enable_orc=auto ;;
+    yes) enable_orc=yes ;;
+    no)  enable_orc=no ;;
+    *) as_fn_error $? "bad value ${enableval} for --enable-orc" "$LINENO" 5 ;;
+  esac
+
+else
+  enable_orc=auto
+fi
+
+  if test "x$enable_orc" != "xno" ; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ORC" >&5
+$as_echo_n "checking for ORC... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$ORC_CFLAGS"; then
+        pkg_cv_ORC_CFLAGS="$ORC_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"orc-0.4 >= \$ORC_REQ\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "orc-0.4 >= $ORC_REQ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ORC_CFLAGS=`$PKG_CONFIG --cflags "orc-0.4 >= $ORC_REQ" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$ORC_LIBS"; then
+        pkg_cv_ORC_LIBS="$ORC_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"orc-0.4 >= \$ORC_REQ\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "orc-0.4 >= $ORC_REQ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ORC_LIBS=`$PKG_CONFIG --libs "orc-0.4 >= $ORC_REQ" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               ORC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "orc-0.4 >= $ORC_REQ"`
+        else
+               ORC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "orc-0.4 >= $ORC_REQ"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$ORC_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      if test "x$enable_orc" = "xyes" ; then
+        as_fn_error $? "--enable-orc specified, but Orc >= $ORC_REQ not found" "$LINENO" 5
+      fi
+
+$as_echo "#define DISABLE_ORC 1" >>confdefs.h
+
+      HAVE_ORC=no
+      HAVE_ORCC=no
+
+elif test $pkg_failed = untried; then
+
+      if test "x$enable_orc" = "xyes" ; then
+        as_fn_error $? "--enable-orc specified, but Orc >= $ORC_REQ not found" "$LINENO" 5
+      fi
+
+$as_echo "#define DISABLE_ORC 1" >>confdefs.h
+
+      HAVE_ORC=no
+      HAVE_ORCC=no
+
+else
+       ORC_CFLAGS=$pkg_cv_ORC_CFLAGS
+       ORC_LIBS=$pkg_cv_ORC_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+
+$as_echo "#define HAVE_ORC 1" >>confdefs.h
+
+      HAVE_ORC=yes
+      if test "x$ORCC" = "x" ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usable orcc" >&5
+$as_echo_n "checking for usable orcc... " >&6; }
+        ORCC=`$PKG_CONFIG --variable=orcc orc-0.4`
+                        if $ORCC --version 1> /dev/null 2> /dev/null; then :
+
+else
+  ORCC=`which orcc`
+fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ORCC" >&5
+$as_echo "$ORCC" >&6; }
+      fi
+
+      ORCC_FLAGS="--compat $ORC_REQ"
+
+      if test "x$ORCC" = "x"; then :
+  HAVE_ORCC=no
+else
+  HAVE_ORCC=yes
+fi
+
+fi
+  else
+
+$as_echo "#define DISABLE_ORC 1" >>confdefs.h
+
+    HAVE_ORC=no
+    HAVE_ORCC=no
+  fi
+   if test "x$HAVE_ORC" = "xyes"; then
+  HAVE_ORC_TRUE=
+  HAVE_ORC_FALSE='#'
+else
+  HAVE_ORC_TRUE='#'
+  HAVE_ORC_FALSE=
+fi
+
+   if test "x$HAVE_ORCC" = "xyes"; then
+  HAVE_ORCC_TRUE=
+  HAVE_ORCC_FALSE='#'
+else
+  HAVE_ORCC_TRUE='#'
+  HAVE_ORCC_FALSE=
+fi
+
+
+
+
+
+
+  module=gstreamer-$GST_MAJORMINOR
+  minver=$GST_REQ
+  name="GStreamer"
+  required=yes
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST" >&5
+$as_echo_n "checking for GST... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_CFLAGS"; then
+        pkg_cv_GST_CFLAGS="$GST_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_CFLAGS=`$PKG_CONFIG --cflags "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_LIBS"; then
+        pkg_cv_GST_LIBS="$GST_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_LIBS=`$PKG_CONFIG --libs "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$module >= $minver"`
+        else
+               GST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$module >= $minver"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GST_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+else
+       GST_CFLAGS=$pkg_cv_GST_CFLAGS
+       GST_LIBS=$pkg_cv_GST_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST="yes"
+
+fi
+
+
+    if test -z $GST_TOOLS_DIR; then
+    GST_TOOLS_DIR=`$PKG_CONFIG --variable=toolsdir gstreamer-$GST_MAJORMINOR`
+    if test -z $GST_TOOLS_DIR; then
+      as_fn_error $? "no tools dir set in GStreamer pkg-config file, core upgrade needed." "$LINENO" 5
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: using GStreamer tools in $GST_TOOLS_DIR" >&5
+$as_echo "$as_me: using GStreamer tools in $GST_TOOLS_DIR" >&6;}
+
+
+        if test -z $GST_PLUGINS_DIR; then
+    GST_PLUGINS_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-$GST_MAJORMINOR`
+    if test -z $GST_PLUGINS_DIR; then
+      as_fn_error $? "no pluginsdir set in GStreamer pkg-config file, core upgrade needed." "$LINENO" 5
+    fi
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: using GStreamer plug-ins in $GST_PLUGINS_DIR" >&5
+$as_echo "$as_me: using GStreamer plug-ins in $GST_PLUGINS_DIR" >&6;}
+
+
+
+
+  module=gstreamer-base-$GST_MAJORMINOR
+  minver=$GST_REQ
+  name="GStreamer Base Libraries"
+  required=yes
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_BASE" >&5
+$as_echo_n "checking for GST_BASE... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_BASE_CFLAGS"; then
+        pkg_cv_GST_BASE_CFLAGS="$GST_BASE_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_BASE_CFLAGS=`$PKG_CONFIG --cflags "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_BASE_LIBS"; then
+        pkg_cv_GST_BASE_LIBS="$GST_BASE_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_BASE_LIBS=`$PKG_CONFIG --libs "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GST_BASE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$module >= $minver"`
+        else
+               GST_BASE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$module >= $minver"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GST_BASE_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_BASE="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_BASE_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_BASE_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_BASE="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_BASE_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_BASE_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+else
+       GST_BASE_CFLAGS=$pkg_cv_GST_BASE_CFLAGS
+       GST_BASE_LIBS=$pkg_cv_GST_BASE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_BASE="yes"
+
+fi
+
+
+
+
+
+  module=gstreamer-check-$GST_MAJORMINOR
+  minver=$GST_REQ
+  name="GStreamer Check unittest Library"
+  required=no
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_CHECK" >&5
+$as_echo_n "checking for GST_CHECK... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_CHECK_CFLAGS"; then
+        pkg_cv_GST_CHECK_CFLAGS="$GST_CHECK_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_CHECK_CFLAGS=`$PKG_CONFIG --cflags "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_CHECK_LIBS"; then
+        pkg_cv_GST_CHECK_LIBS="$GST_CHECK_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_CHECK_LIBS=`$PKG_CONFIG --libs "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GST_CHECK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$module >= $minver"`
+        else
+               GST_CHECK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$module >= $minver"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GST_CHECK_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_CHECK="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_CHECK_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_CHECK_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_CHECK="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_CHECK_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_CHECK_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+else
+       GST_CHECK_CFLAGS=$pkg_cv_GST_CHECK_CFLAGS
+       GST_CHECK_LIBS=$pkg_cv_GST_CHECK_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_CHECK="yes"
+
+fi
+
+
+
+
+
+  module=gstreamer-plugins-base-$GST_MAJORMINOR
+  minver=$GSTPB_REQ
+  name="GStreamer Base Plugins"
+  required=yes
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_PLUGINS_BASE" >&5
+$as_echo_n "checking for GST_PLUGINS_BASE... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_PLUGINS_BASE_CFLAGS"; then
+        pkg_cv_GST_PLUGINS_BASE_CFLAGS="$GST_PLUGINS_BASE_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_PLUGINS_BASE_CFLAGS=`$PKG_CONFIG --cflags "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_PLUGINS_BASE_LIBS"; then
+        pkg_cv_GST_PLUGINS_BASE_LIBS="$GST_PLUGINS_BASE_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$module >= \$minver\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$module >= $minver") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_PLUGINS_BASE_LIBS=`$PKG_CONFIG --libs "$module >= $minver" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               GST_PLUGINS_BASE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$module >= $minver"`
+        else
+               GST_PLUGINS_BASE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$module >= $minver"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GST_PLUGINS_BASE_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_PLUGINS_BASE="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PLUGINS_BASE_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PLUGINS_BASE_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_PLUGINS_BASE="no"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PLUGINS_BASE_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PLUGINS_BASE_PKG_ERRORS" >&6;}
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "no $module >= $minver ($name) found" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: no $module >= $minver ($name) found" >&5
+$as_echo "$as_me: no $module >= $minver ($name) found" >&6;}
+      fi
+
+else
+       GST_PLUGINS_BASE_CFLAGS=$pkg_cv_GST_PLUGINS_BASE_CFLAGS
+       GST_PLUGINS_BASE_LIBS=$pkg_cv_GST_PLUGINS_BASE_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_PLUGINS_BASE="yes"
+
+fi
+
+
+
+  if test "x$HAVE_GST_PLUGINS_BASE" = "xyes"; then
+                if test -z $GSTPB_PLUGINS_DIR; then
+      GSTPB_PLUGINS_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-base-$GST_MAJORMINOR`
+      if test -z $GSTPB_PLUGINS_DIR; then
+        as_fn_error $? "no pluginsdir set in GStreamer Base Plugins pkg-config file" "$LINENO" 5
+      fi
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR" >&5
+$as_echo "$as_me: using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR" >&6;}
+    GST_PLUGINS_BASE_DIR="$GSTPB_PLUGINS_DIR/gst:$GSTPB_PLUGINS_DIR/sys:$GSTPB_PLUGINS_DIR/ext"
+
+
+  fi
+
+ if test "x$HAVE_GST_CHECK" = "xyes"; then
+  HAVE_GST_CHECK_TRUE=
+  HAVE_GST_CHECK_FALSE='#'
+else
+  HAVE_GST_CHECK_TRUE='#'
+  HAVE_GST_CHECK_FALSE=
+fi
+
+
+GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
+GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
+GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
+
+
+
+
+
+GST_LICENSE="LGPL"
+
+cat >>confdefs.h <<_ACEOF
+#define GST_LICENSE "$GST_LICENSE"
+_ACEOF
+
+
+
+
+
+  EXP_VAR=PLUGINDIR
+  FROM_VAR=${libdir}/gstreamer-$GST_MAJORMINOR
+
+    prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+    if test "x$prefix" = "xNONE"; then
+    prefix="$ac_default_prefix"
+  fi
+    if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+    while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var" = "x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+    full_var=$new_full_var
+  PLUGINDIR="$full_var"
+
+
+    prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+
+
+cat >>confdefs.h <<_ACEOF
+#define PLUGINDIR "$PLUGINDIR"
+_ACEOF
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $PLUGINDIR as the plugin install location" >&5
+$as_echo "$as_me: Using $PLUGINDIR as the plugin install location" >&6;}
+
+    plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
+
+
+
+
+  if test "x$PACKAGE_VERSION_NANO" = "x0"; then
+
+      if test "xyes" = "xno" -o "xyes" = "x"; then
+    GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"`
+  elif test "xyes" = "xyes"; then
+            if ( echo yes | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+      GST_PACKAGE_RELEASE_DATETIME=yes
+    else
+            YYYY_MM_DD=`sh "${srcdir}/common/extract-release-date-from-doap-file"  $PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO   "${srcdir}/gst-plugins-ugly.doap" `;
+      if test "x$YYYY_MM_DD" != "x"; then
+        GST_PACKAGE_RELEASE_DATETIME=$YYYY_MM_DD
+      else
+        as_fn_error $? "SET_PACKAGE_RELEASE_DATETIME: could not extract
+            release date for release version  $PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO  from  \"${srcdir}/gst-plugins-ugly.doap\" " "$LINENO" 5
+        GST_PACKAGE_RELEASE_DATETIME=""
+      fi
+    fi
+    elif ( echo yes | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+    GST_PACKAGE_RELEASE_DATETIME=yes
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&5
+$as_echo "$as_me: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&2;}
+    GST_PACKAGE_RELEASE_DATETIME=""
+  fi
+
+  if test "x$GST_PACKAGE_RELEASE_DATETIME" = "x"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid package release date time: $GST_PACKAGE_RELEASE_DATETIME" >&5
+$as_echo "$as_me: WARNING: Invalid package release date time: $GST_PACKAGE_RELEASE_DATETIME" >&2;}
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Setting GST_PACKAGE_RELEASE_DATETIME to $GST_PACKAGE_RELEASE_DATETIME" >&5
+$as_echo "$as_me: Setting GST_PACKAGE_RELEASE_DATETIME to $GST_PACKAGE_RELEASE_DATETIME" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define GST_PACKAGE_RELEASE_DATETIME "$GST_PACKAGE_RELEASE_DATETIME"
+_ACEOF
+
+  fi
+
+  else
+
+      if test "xno" = "xno" -o "xno" = "x"; then
+    GST_PACKAGE_RELEASE_DATETIME=`date -u "+%Y-%m-%dT%H:%MZ"`
+  elif test "xno" = "xyes"; then
+            if ( echo no | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+      GST_PACKAGE_RELEASE_DATETIME=no
+    else
+            YYYY_MM_DD=`sh "${srcdir}/common/extract-release-date-from-doap-file"  `;
+      if test "x$YYYY_MM_DD" != "x"; then
+        GST_PACKAGE_RELEASE_DATETIME=$YYYY_MM_DD
+      else
+        as_fn_error $? "SET_PACKAGE_RELEASE_DATETIME: could not extract
+            release date for release version  from " "$LINENO" 5
+        GST_PACKAGE_RELEASE_DATETIME=""
+      fi
+    fi
+    elif ( echo no | grep -e '^201-90-9-0-10-9-0-30-9' >/dev/null ) ; then
+    GST_PACKAGE_RELEASE_DATETIME=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&5
+$as_echo "$as_me: WARNING: SET_PACKAGE_RELEASE_DATETIME: invalid first argument" >&2;}
+    GST_PACKAGE_RELEASE_DATETIME=""
+  fi
+
+  if test "x$GST_PACKAGE_RELEASE_DATETIME" = "x"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid package release date time: $GST_PACKAGE_RELEASE_DATETIME" >&5
+$as_echo "$as_me: WARNING: Invalid package release date time: $GST_PACKAGE_RELEASE_DATETIME" >&2;}
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Setting GST_PACKAGE_RELEASE_DATETIME to $GST_PACKAGE_RELEASE_DATETIME" >&5
+$as_echo "$as_me: Setting GST_PACKAGE_RELEASE_DATETIME to $GST_PACKAGE_RELEASE_DATETIME" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define GST_PACKAGE_RELEASE_DATETIME "$GST_PACKAGE_RELEASE_DATETIME"
+_ACEOF
+
+  fi
+
+  fi
+
+
+
+
+
+
+  WARNING_CFLAGS=""
+  ERROR_CFLAGS=""
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -Wall" >&5
+$as_echo_n "checking to see if compiler understands -Wall... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Wall"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CFLAGS="$WARNING_CFLAGS -Wall"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -Wdeclaration-after-statement" >&5
+$as_echo_n "checking to see if compiler understands -Wdeclaration-after-statement... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CFLAGS="$WARNING_CFLAGS -Wdeclaration-after-statement"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -Wvla" >&5
+$as_echo_n "checking to see if compiler understands -Wvla... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Wvla"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CFLAGS="$WARNING_CFLAGS -Wvla"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -Wpointer-arith" >&5
+$as_echo_n "checking to see if compiler understands -Wpointer-arith... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Wpointer-arith"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CFLAGS="$WARNING_CFLAGS -Wpointer-arith"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+    if test "x$GST_GIT" != "xno"
+  then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -Werror" >&5
+$as_echo_n "checking to see if compiler understands -Werror... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CFLAGS="$ERROR_CFLAGS -Werror"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+        if test "x$ERROR_CFLAGS" = "x"
+    then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -errwarn=%all" >&5
+$as_echo_n "checking to see if compiler understands -errwarn=%all... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -errwarn=%all"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+
+          ERROR_CFLAGS="-errwarn=%all"
+                                                                                for f in 'no%E_EMPTY_DECLARATION' \
+                   'no%E_STATEMENT_NOT_REACHED' \
+                   'no%E_ARGUEMENT_MISMATCH' \
+                   'no%E_MACRO_REDEFINED' \
+                   'no%E_LOOP_NOT_ENTERED_AT_TOP'
+          do
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -errwarn=%all,$f" >&5
+$as_echo_n "checking to see if compiler understands -errwarn=%all,$f... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -errwarn=%all,$f"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+
+              ERROR_CFLAGS="$ERROR_CFLAGS,$f"
+
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+          done
+
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+    else
+                        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 < 2.19.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 < 2.19.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands -fno-strict-aliasing" >&5
+$as_echo_n "checking to see if compiler understands -fno-strict-aliasing... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CFLAGS="$ERROR_CFLAGS -fno-strict-aliasing"
+    true
+  else
+
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+fi
+    fi
+  fi
+
+  if test "x
+    -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
+    -Winit-self -Wmissing-include-dirs -Waddress
+    -Waggregate-return -Wno-multichar -Wnested-externs " != "x"
+  then
+    UNSUPPORTED=""
+    list="
+    -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
+    -Winit-self -Wmissing-include-dirs -Waddress
+    -Waggregate-return -Wno-multichar -Wnested-externs "
+    for each in $list
+    do
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if compiler understands $each" >&5
+$as_echo_n "checking to see if compiler understands $each... " >&6; }
+
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $each"
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$save_CFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CFLAGS="$WARNING_CFLAGS $each"
+    true
+  else
+    UNSUPPORTED="$UNSUPPORTED $each"
+    true
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+    done
+    if test "X$UNSUPPORTED" != X ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: unsupported compiler flags: $UNSUPPORTED" >&5
+$as_echo "$as_me: unsupported compiler flags: $UNSUPPORTED" >&6;}
+    fi
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: set WARNING_CFLAGS to $WARNING_CFLAGS" >&5
+$as_echo "$as_me: set WARNING_CFLAGS to $WARNING_CFLAGS" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: set ERROR_CFLAGS to $ERROR_CFLAGS" >&5
+$as_echo "$as_me: set ERROR_CFLAGS to $ERROR_CFLAGS" >&6;}
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands " >&5
+$as_echo_n "checking to see if c++ compiler understands ... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS "
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+
+
+
+  ERROR_CXXFLAGS=""
+  WARNING_CXXFLAGS=""
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -Wall" >&5
+$as_echo_n "checking to see if c++ compiler understands -Wall... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -Wall"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CXXFLAGS="$WARNING_CXXFLAGS -Wall"
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+    if test "x$GST_GIT" != "xno"
+  then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -Werror" >&5
+$as_echo_n "checking to see if c++ compiler understands -Werror... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -Werror"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+    if test "x$ERROR_CXXFLAGS" != "x"
+    then
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -Wno-non-virtual-dtor" >&5
+$as_echo_n "checking to see if c++ compiler understands -Wno-non-virtual-dtor... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -Wno-non-virtual-dtor"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Wno-non-virtual-dtor"
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+                               if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 < 2.19.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 < 2.19.8") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -fno-strict-aliasing" >&5
+$as_echo_n "checking to see if c++ compiler understands -fno-strict-aliasing... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -fno-strict-aliasing"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS -fno-strict-aliasing"
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+
+fi
+    else
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -errwarn=%all" >&5
+$as_echo_n "checking to see if c++ compiler understands -errwarn=%all... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -errwarn=%all"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS -errwarn=%all"
+    true
+  else
+
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+      if test "x$ERROR_CXXFLAGS" != "x"; then
+                                                                                for f in 'no%E_EMPTY_DECLARATION' \
+                 'no%E_STATEMENT_NOT_REACHED' \
+                 'no%E_ARGUEMENT_MISMATCH' \
+                 'no%E_MACRO_REDEFINED' \
+                 'no%E_LOOP_NOT_ENTERED_AT_TOP'
+        do
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands -errwarn=%all,$f" >&5
+$as_echo_n "checking to see if c++ compiler understands -errwarn=%all,$f... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -errwarn=%all,$f"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    ERROR_CXXFLAGS="$ERROR_CXXFLAGS
+    true
+  else
+    $f"
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+        done
+      fi
+    fi
+  fi
+
+  if test "x
+    -Wmissing-declarations -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security
+    -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return
+    -Wno-multichar" != "x"
+  then
+    UNSUPPORTED=""
+    list="
+    -Wmissing-declarations -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security
+    -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return
+    -Wno-multichar"
+    for each in $list
+    do
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if c++ compiler understands $each" >&5
+$as_echo_n "checking to see if c++ compiler understands $each... " >&6; }
+
+  save_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $each"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  flag_ok=yes
+else
+  flag_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CPPFLAGS="$save_CPPFLAGS"
+
+  if test "X$flag_ok" = Xyes ; then
+    WARNING_CXXFLAGS="$WARNING_CXXFLAGS $each"
+    true
+  else
+    UNSUPPORTED="$UNSUPPORTED $each"
+    true
+  fi
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag_ok" >&5
+$as_echo "$flag_ok" >&6; }
+
+    done
+    if test "X$UNSUPPORTED" != X ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: unsupported compiler flags: $UNSUPPORTED" >&5
+$as_echo "$as_me: unsupported compiler flags: $UNSUPPORTED" >&6;}
+    fi
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: set WARNING_CXXFLAGS to $WARNING_CXXFLAGS" >&5
+$as_echo "$as_me: set WARNING_CXXFLAGS to $WARNING_CXXFLAGS" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: set ERROR_CXXFLAGS to $ERROR_CXXFLAGS" >&5
+$as_echo "$as_me: set ERROR_CXXFLAGS to $ERROR_CXXFLAGS" >&6;}
+
+
+
+      if test "x$GST_GIT" = "xyes"; then
+    GST_LEVEL_DEFAULT=GST_LEVEL_ERROR
+  else
+    GST_LEVEL_DEFAULT=GST_LEVEL_NONE
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define GST_LEVEL_DEFAULT $GST_LEVEL_DEFAULT
+_ACEOF
+
+
+
+
+
+            DEFAULT_AUDIOSINK="autoaudiosink"
+  DEFAULT_VIDEOSINK="autovideosink"
+  DEFAULT_AUDIOSRC="alsasrc"
+  DEFAULT_VIDEOSRC="v4l2src"
+  DEFAULT_VISUALIZER="goom"
+  case "$host" in
+    *-sun-* | *pc-solaris* )
+      DEFAULT_AUDIOSRC="sunaudiosrc"
+      ;;
+    *-darwin* )
+      DEFAULT_AUDIOSRC="osxaudiosrc"
+      ;;
+  esac
+
+
+# Check whether --with-default-audiosink was given.
+if test "${with_default_audiosink+set}" = set; then :
+  withval=$with_default_audiosink;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-default-audiosink" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-default-audiosink" "$LINENO" 5 ;;
+        *)   DEFAULT_AUDIOSINK="${withval}" ;;
+      esac
+
+else
+
+      DEFAULT_AUDIOSINK="$DEFAULT_AUDIOSINK"
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $DEFAULT_AUDIOSINK as default audio sink" >&5
+$as_echo "$as_me: Using $DEFAULT_AUDIOSINK as default audio sink" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_AUDIOSINK "$DEFAULT_AUDIOSINK"
+_ACEOF
+
+
+
+# Check whether --with-default-audiosrc was given.
+if test "${with_default_audiosrc+set}" = set; then :
+  withval=$with_default_audiosrc;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-default-audiosrc" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-default-audiosrc" "$LINENO" 5 ;;
+        *)   DEFAULT_AUDIOSRC="${withval}" ;;
+      esac
+
+else
+
+      DEFAULT_AUDIOSRC="$DEFAULT_AUDIOSRC"
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $DEFAULT_AUDIOSRC as default audio source" >&5
+$as_echo "$as_me: Using $DEFAULT_AUDIOSRC as default audio source" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_AUDIOSRC "$DEFAULT_AUDIOSRC"
+_ACEOF
+
+
+
+# Check whether --with-default-videosink was given.
+if test "${with_default_videosink+set}" = set; then :
+  withval=$with_default_videosink;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-default-videosink" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-default-videosink" "$LINENO" 5 ;;
+        *)   DEFAULT_VIDEOSINK="${withval}" ;;
+      esac
+
+else
+
+      DEFAULT_VIDEOSINK="$DEFAULT_VIDEOSINK"
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $DEFAULT_VIDEOSINK as default video sink" >&5
+$as_echo "$as_me: Using $DEFAULT_VIDEOSINK as default video sink" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_VIDEOSINK "$DEFAULT_VIDEOSINK"
+_ACEOF
+
+
+
+# Check whether --with-default-videosrc was given.
+if test "${with_default_videosrc+set}" = set; then :
+  withval=$with_default_videosrc;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-default-videosrc" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-default-videosrc" "$LINENO" 5 ;;
+        *)   DEFAULT_VIDEOSRC="${withval}" ;;
+      esac
+
+else
+
+      DEFAULT_VIDEOSRC="$DEFAULT_VIDEOSRC"
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $DEFAULT_VIDEOSRC as default video source" >&5
+$as_echo "$as_me: Using $DEFAULT_VIDEOSRC as default video source" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_VIDEOSRC "$DEFAULT_VIDEOSRC"
+_ACEOF
+
+
+
+# Check whether --with-default-visualizer was given.
+if test "${with_default_visualizer+set}" = set; then :
+  withval=$with_default_visualizer;
+      case "${withval}" in
+        yes) as_fn_error $? "bad value ${withval} for --with-default-visualizer" "$LINENO" 5 ;;
+        no)  as_fn_error $? "bad value ${withval} for --with-default-visualizer" "$LINENO" 5 ;;
+        *)   DEFAULT_VISUALIZER="${withval}" ;;
+      esac
+
+else
+
+      DEFAULT_VISUALIZER="$DEFAULT_VISUALIZER"
+
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Using $DEFAULT_VISUALIZER as default visualizer" >&5
+$as_echo "$as_me: Using $DEFAULT_VISUALIZER as default visualizer" >&6;}
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_VISUALIZER "$DEFAULT_VISUALIZER"
+_ACEOF
+
+
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL asfdemux"
+
+
+
+  # Check whether --enable-asfdemux was given.
+if test "${enable_asfdemux+set}" = set; then :
+  enableval=$enable_asfdemux;
+      case "${enableval}" in
+        yes) gst_use_asfdemux=yes ;;
+        no) gst_use_asfdemux=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-asfdemux" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_asfdemux=yes
+fi
+
+  if test x$gst_use_asfdemux = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin asfdemux" >&5
+$as_echo "$as_me: disabling dependency-less plugin asfdemux" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS asfdemux"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " asfdemux " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED asfdemux"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " asfdemux " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ asfdemux / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " asfdemux " > /dev/null; then
+  USE_PLUGIN_ASFDEMUX_TRUE=
+  USE_PLUGIN_ASFDEMUX_FALSE='#'
+else
+  USE_PLUGIN_ASFDEMUX_TRUE='#'
+  USE_PLUGIN_ASFDEMUX_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL dvdlpcmdec"
+
+
+
+  # Check whether --enable-dvdlpcmdec was given.
+if test "${enable_dvdlpcmdec+set}" = set; then :
+  enableval=$enable_dvdlpcmdec;
+      case "${enableval}" in
+        yes) gst_use_dvdlpcmdec=yes ;;
+        no) gst_use_dvdlpcmdec=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-dvdlpcmdec" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_dvdlpcmdec=yes
+fi
+
+  if test x$gst_use_dvdlpcmdec = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin dvdlpcmdec" >&5
+$as_echo "$as_me: disabling dependency-less plugin dvdlpcmdec" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS dvdlpcmdec"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " dvdlpcmdec " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED dvdlpcmdec"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " dvdlpcmdec " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ dvdlpcmdec / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " dvdlpcmdec " > /dev/null; then
+  USE_PLUGIN_DVDLPCMDEC_TRUE=
+  USE_PLUGIN_DVDLPCMDEC_FALSE='#'
+else
+  USE_PLUGIN_DVDLPCMDEC_TRUE='#'
+  USE_PLUGIN_DVDLPCMDEC_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL dvdsub"
+
+
+
+  # Check whether --enable-dvdsub was given.
+if test "${enable_dvdsub+set}" = set; then :
+  enableval=$enable_dvdsub;
+      case "${enableval}" in
+        yes) gst_use_dvdsub=yes ;;
+        no) gst_use_dvdsub=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-dvdsub" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_dvdsub=yes
+fi
+
+  if test x$gst_use_dvdsub = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin dvdsub" >&5
+$as_echo "$as_me: disabling dependency-less plugin dvdsub" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS dvdsub"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " dvdsub " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED dvdsub"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " dvdsub " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ dvdsub / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " dvdsub " > /dev/null; then
+  USE_PLUGIN_DVDSUB_TRUE=
+  USE_PLUGIN_DVDSUB_FALSE='#'
+else
+  USE_PLUGIN_DVDSUB_TRUE='#'
+  USE_PLUGIN_DVDSUB_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL iec958"
+
+
+
+  # Check whether --enable-iec958 was given.
+if test "${enable_iec958+set}" = set; then :
+  enableval=$enable_iec958;
+      case "${enableval}" in
+        yes) gst_use_iec958=yes ;;
+        no) gst_use_iec958=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-iec958" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_iec958=yes
+fi
+
+  if test x$gst_use_iec958 = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin iec958" >&5
+$as_echo "$as_me: disabling dependency-less plugin iec958" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS iec958"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " iec958 " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED iec958"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " iec958 " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ iec958 / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " iec958 " > /dev/null; then
+  USE_PLUGIN_IEC958_TRUE=
+  USE_PLUGIN_IEC958_FALSE='#'
+else
+  USE_PLUGIN_IEC958_TRUE='#'
+  USE_PLUGIN_IEC958_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL mpegaudioparse"
+
+
+
+  # Check whether --enable-mpegaudioparse was given.
+if test "${enable_mpegaudioparse+set}" = set; then :
+  enableval=$enable_mpegaudioparse;
+      case "${enableval}" in
+        yes) gst_use_mpegaudioparse=yes ;;
+        no) gst_use_mpegaudioparse=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-mpegaudioparse" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_mpegaudioparse=yes
+fi
+
+  if test x$gst_use_mpegaudioparse = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin mpegaudioparse" >&5
+$as_echo "$as_me: disabling dependency-less plugin mpegaudioparse" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS mpegaudioparse"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " mpegaudioparse " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED mpegaudioparse"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " mpegaudioparse " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ mpegaudioparse / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " mpegaudioparse " > /dev/null; then
+  USE_PLUGIN_MPEGAUDIOPARSE_TRUE=
+  USE_PLUGIN_MPEGAUDIOPARSE_FALSE='#'
+else
+  USE_PLUGIN_MPEGAUDIOPARSE_TRUE='#'
+  USE_PLUGIN_MPEGAUDIOPARSE_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL mpegstream"
+
+
+
+  # Check whether --enable-mpegstream was given.
+if test "${enable_mpegstream+set}" = set; then :
+  enableval=$enable_mpegstream;
+      case "${enableval}" in
+        yes) gst_use_mpegstream=yes ;;
+        no) gst_use_mpegstream=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-mpegstream" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_mpegstream=yes
+fi
+
+  if test x$gst_use_mpegstream = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin mpegstream" >&5
+$as_echo "$as_me: disabling dependency-less plugin mpegstream" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS mpegstream"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " mpegstream " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED mpegstream"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " mpegstream " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ mpegstream / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " mpegstream " > /dev/null; then
+  USE_PLUGIN_MPEGSTREAM_TRUE=
+  USE_PLUGIN_MPEGSTREAM_FALSE='#'
+else
+  USE_PLUGIN_MPEGSTREAM_TRUE='#'
+  USE_PLUGIN_MPEGSTREAM_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL realmedia"
+
+
+
+  # Check whether --enable-realmedia was given.
+if test "${enable_realmedia+set}" = set; then :
+  enableval=$enable_realmedia;
+      case "${enableval}" in
+        yes) gst_use_realmedia=yes ;;
+        no) gst_use_realmedia=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-realmedia" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_realmedia=yes
+fi
+
+  if test x$gst_use_realmedia = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin realmedia" >&5
+$as_echo "$as_me: disabling dependency-less plugin realmedia" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS realmedia"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " realmedia " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED realmedia"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " realmedia " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ realmedia / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " realmedia " > /dev/null; then
+  USE_PLUGIN_REALMEDIA_TRUE=
+  USE_PLUGIN_REALMEDIA_FALSE='#'
+else
+  USE_PLUGIN_REALMEDIA_TRUE='#'
+  USE_PLUGIN_REALMEDIA_FALSE=
+fi
+
+
+
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL synaesthesia"
+
+
+
+  # Check whether --enable-synaesthesia was given.
+if test "${enable_synaesthesia+set}" = set; then :
+  enableval=$enable_synaesthesia;
+      case "${enableval}" in
+        yes) gst_use_synaesthesia=yes ;;
+        no) gst_use_synaesthesia=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-synaesthesia" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_synaesthesia=yes
+fi
+
+  if test x$gst_use_synaesthesia = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin synaesthesia" >&5
+$as_echo "$as_me: disabling dependency-less plugin synaesthesia" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS synaesthesia"
+  fi
+
+
+  if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " synaesthesia " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED synaesthesia"
+  fi
+  if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " synaesthesia " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ synaesthesia / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " synaesthesia " > /dev/null; then
+  USE_PLUGIN_SYNAESTHESIA_TRUE=
+  USE_PLUGIN_SYNAESTHESIA_FALSE='#'
+else
+  USE_PLUGIN_SYNAESTHESIA_TRUE='#'
+  USE_PLUGIN_SYNAESTHESIA_FALSE=
+fi
+
+
+
+for ac_header in winsock2.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
+if test "x$ac_cv_header_winsock2_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WINSOCK2_H 1
+_ACEOF
+ HAVE_WINSOCK2_H=yes
+fi
+
+done
+
+
+if test "x$HAVE_WINSOCK2_H" = "xyes"; then
+  WIN32_LIBS="-lws2_32"
+
+fi
+
+if test "x$BUILD_EXPERIMENTAL" != "xyes"; then
+
+  GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ synaesthesia / /'`
+   if false; then
+  USE_PLUGIN_SYNAESTHESIA_TRUE=
+  USE_PLUGIN_SYNAESTHESIA_FALSE='#'
+else
+  USE_PLUGIN_SYNAESTHESIA_TRUE='#'
+  USE_PLUGIN_SYNAESTHESIA_FALSE=
+fi
+
+
+fi
+
+
+if test "x$BUILD_EXTERNAL" = "xyes"; then
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Checking libraries for plugins in ext/" >&5
+$as_echo "$as_me: Checking libraries for plugins in ext/" >&6;}
+echo
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: a52dec ***" >&5
+$as_echo "$as_me: *** checking feature: a52dec ***" >&6;}
+if test "xa52dec" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: a52dec ***" >&5
+$as_echo "$as_me: *** for plug-ins: a52dec ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_A52DEC" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-a52dec was given.
+if test "${enable_a52dec+set}" = set; then :
+  enableval=$enable_a52dec;  case "${enableval}" in
+      yes) USE_A52DEC=yes;;
+      no) USE_A52DEC=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-a52dec" "$LINENO" 5 ;;
+    esac
+else
+   USE_A52DEC=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_A52DEC="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** a52dec pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** a52dec pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_A52DEC = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_A52DEC=no
+
+
+# Check whether --with-a52dec-prefix was given.
+if test "${with_a52dec_prefix+set}" = set; then :
+  withval=$with_a52dec_prefix; a52dec_config_prefix="$withval"
+else
+  a52dec_config_prefix=""
+fi
+
+
+if test x$a52dec_config_prefix = x ; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a52_init in -la52" >&5
+$as_echo_n "checking for a52_init in -la52... " >&6; }
+if ${ac_cv_lib_a52_a52_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-la52 -lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char a52_init ();
+int
+main ()
+{
+return a52_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_a52_a52_init=yes
+else
+  ac_cv_lib_a52_a52_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_a52_a52_init" >&5
+$as_echo "$ac_cv_lib_a52_a52_init" >&6; }
+if test "x$ac_cv_lib_a52_a52_init" = xyes; then :
+  HAVE_A52DEC=yes
+else
+  HAVE_A52DEC=no
+fi
+
+  check_libheader_feature_name=a52dec
+
+  if test "x$HAVE_A52DEC" = "xyes"; then
+    check_libheader_save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS=" $CPPFLAGS"
+    ac_fn_c_check_header_mongrel "$LINENO" "a52dec/a52.h" "ac_cv_header_a52dec_a52_h" "$ac_includes_default"
+if test "x$ac_cv_header_a52dec_a52_h" = xyes; then :
+  :
+else
+  HAVE_A52DEC=no
+fi
+
+
+    CPPFLAGS=$check_libheader_save_CPPFLAGS
+  fi
+
+  if test "x$HAVE_A52DEC" = "xyes"; then
+    A52DEC_LIBS="-la52 -lm"
+  else
+    :
+  fi
+
+
+else
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a52_init in -la52" >&5
+$as_echo_n "checking for a52_init in -la52... " >&6; }
+if ${ac_cv_lib_a52_a52_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-la52 -L$a52dec_config_prefix/lib $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char a52_init ();
+int
+main ()
+{
+return a52_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_a52_a52_init=yes
+else
+  ac_cv_lib_a52_a52_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_a52_a52_init" >&5
+$as_echo "$ac_cv_lib_a52_a52_init" >&6; }
+if test "x$ac_cv_lib_a52_a52_init" = xyes; then :
+  HAVE_A52DEC=yes
+else
+  HAVE_A52DEC=no
+fi
+
+  check_libheader_feature_name=a52dec
+
+  if test "x$HAVE_A52DEC" = "xyes"; then
+    check_libheader_save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="-I$a52dec_config_prefix/include $CPPFLAGS"
+    ac_fn_c_check_header_mongrel "$LINENO" "a52dec/a52.h" "ac_cv_header_a52dec_a52_h" "$ac_includes_default"
+if test "x$ac_cv_header_a52dec_a52_h" = xyes; then :
+  :
+else
+  HAVE_A52DEC=no
+fi
+
+
+    CPPFLAGS=$check_libheader_save_CPPFLAGS
+  fi
+
+  if test "x$HAVE_A52DEC" = "xyes"; then
+
+            A52DEC_LIBS="-la52 -L$a52dec_config_prefix/lib -lm"
+            A52DEC_CFLAGS="-I$a52dec_config_prefix/include"
+
+  else
+    :
+  fi
+
+
+fi
+
+if test $HAVE_A52DEC = "yes"; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $A52DEC_CFLAGS"
+    LIBS="$A52DEC_LIBS $LIBS"
+    if test "$cross_compiling" = yes; then :
+  echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <inttypes.h>
+#include <a52dec/a52.h>
+
+int
+main ()
+{
+  a52_state_t *state;
+  state = a52_init (0);
+  a52_free (state);
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  HAVE_A52DEC=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+    if test HAVE_A52DEC = "no"; then
+        echo "*** Your a52dec is borked somehow. Please update to 0.7.4."
+    else
+        if test "$cross_compiling" = yes; then :
+  echo $ac_n "cross compiling; assumed OK... $ac_c"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <inttypes.h>
+#include <a52dec/a52.h>
+
+int
+main ()
+{
+  int i = sizeof (a52_state_t);
+  if ( i )
+    return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  HAVE_A52DEC=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+        if test HAVE_A52DEC = "no"; then
+            echo "*** Your a52dec is too old. Please update to 0.7.4."
+        fi
+    fi
+    CFLAGS="$ac_save_CFLAGS"
+    LIBS="$ac_save_LIBS"
+fi
+
+if test HAVE_A52DEC = "no"; then
+    A52DEC_CFLAGS=""
+    A52DEC_LIBS=""
+fi
+
+if test "x$HAVE_A52DEC" = "xyes"; then
+  HAVE_A52DEC=yes
+else
+  HAVE_A52DEC=no
+fi
+
+
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_A52DEC = xno; then
+    USE_A52DEC=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: a52dec" >&5
+$as_echo "$as_me: *** These plugins will be built: a52dec" >&6;}
+  fi
+fi
+if test x$USE_A52DEC = xyes; then
+  :
+  if test "xa52dec" != "x"; then
+    GST_PLUGINS_YES="\ta52dec\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_A52DEC /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: a52dec" >&5
+$as_echo "$as_me: *** These plugins will not be built: a52dec" >&6;}
+  if test "xa52dec" != "x"; then
+    GST_PLUGINS_NO="\ta52dec\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_A52DEC = xyes; then
+  USE_A52DEC_TRUE=
+  USE_A52DEC_FALSE='#'
+else
+  USE_A52DEC_TRUE='#'
+  USE_A52DEC_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: amrnb library ***" >&5
+$as_echo "$as_me: *** checking feature: amrnb library ***" >&6;}
+if test "xamrnb" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: amrnb ***" >&5
+$as_echo "$as_me: *** for plug-ins: amrnb ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_AMRNB" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-amrnb was given.
+if test "${enable_amrnb+set}" = set; then :
+  enableval=$enable_amrnb;  case "${enableval}" in
+      yes) USE_AMRNB=yes;;
+      no) USE_AMRNB=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-amrnb" "$LINENO" 5 ;;
+    esac
+else
+   USE_AMRNB=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_AMRNB="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** amrnb pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** amrnb pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_AMRNB = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_AMRNB=no
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AMRNB" >&5
+$as_echo_n "checking for AMRNB... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$AMRNB_CFLAGS"; then
+        pkg_cv_AMRNB_CFLAGS="$AMRNB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencore-amrnb\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencore-amrnb") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMRNB_CFLAGS=`$PKG_CONFIG --cflags "opencore-amrnb" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$AMRNB_LIBS"; then
+        pkg_cv_AMRNB_LIBS="$AMRNB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencore-amrnb\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencore-amrnb") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMRNB_LIBS=`$PKG_CONFIG --libs "opencore-amrnb" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               AMRNB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencore-amrnb"`
+        else
+               AMRNB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencore-amrnb"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$AMRNB_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Decoder_Interface_init in -lopencore-amrnb" >&5
+$as_echo_n "checking for Decoder_Interface_init in -lopencore-amrnb... " >&6; }
+if ${ac_cv_lib_opencore_amrnb_Decoder_Interface_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lopencore-amrnb $LIBM $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char Decoder_Interface_init ();
+int
+main ()
+{
+return Decoder_Interface_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_opencore_amrnb_Decoder_Interface_init=yes
+else
+  ac_cv_lib_opencore_amrnb_Decoder_Interface_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opencore_amrnb_Decoder_Interface_init" >&5
+$as_echo "$ac_cv_lib_opencore_amrnb_Decoder_Interface_init" >&6; }
+if test "x$ac_cv_lib_opencore_amrnb_Decoder_Interface_init" = xyes; then :
+  HAVE_AMRNB=yes
+else
+  HAVE_AMRNB=no
+fi
+
+  if test "x$HAVE_AMRNB" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "opencore-amrnb/interf_dec.h" "ac_cv_header_opencore_amrnb_interf_dec_h" "$ac_includes_default"
+if test "x$ac_cv_header_opencore_amrnb_interf_dec_h" = xyes; then :
+  :
+else
+  HAVE_AMRNB=no
+fi
+
+
+    if test "x$HAVE_AMRNB" = "xyes"; then
+            AMRNB_LIBS="-lopencore-amrnb"
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+elif test $pkg_failed = untried; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Decoder_Interface_init in -lopencore-amrnb" >&5
+$as_echo_n "checking for Decoder_Interface_init in -lopencore-amrnb... " >&6; }
+if ${ac_cv_lib_opencore_amrnb_Decoder_Interface_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lopencore-amrnb $LIBM $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char Decoder_Interface_init ();
+int
+main ()
+{
+return Decoder_Interface_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_opencore_amrnb_Decoder_Interface_init=yes
+else
+  ac_cv_lib_opencore_amrnb_Decoder_Interface_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opencore_amrnb_Decoder_Interface_init" >&5
+$as_echo "$ac_cv_lib_opencore_amrnb_Decoder_Interface_init" >&6; }
+if test "x$ac_cv_lib_opencore_amrnb_Decoder_Interface_init" = xyes; then :
+  HAVE_AMRNB=yes
+else
+  HAVE_AMRNB=no
+fi
+
+  if test "x$HAVE_AMRNB" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "opencore-amrnb/interf_dec.h" "ac_cv_header_opencore_amrnb_interf_dec_h" "$ac_includes_default"
+if test "x$ac_cv_header_opencore_amrnb_interf_dec_h" = xyes; then :
+  :
+else
+  HAVE_AMRNB=no
+fi
+
+
+    if test "x$HAVE_AMRNB" = "xyes"; then
+            AMRNB_LIBS="-lopencore-amrnb"
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+else
+       AMRNB_CFLAGS=$pkg_cv_AMRNB_CFLAGS
+       AMRNB_LIBS=$pkg_cv_AMRNB_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       HAVE_AMRNB="yes"
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_AMRNB = xno; then
+    USE_AMRNB=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: amrnb" >&5
+$as_echo "$as_me: *** These plugins will be built: amrnb" >&6;}
+  fi
+fi
+if test x$USE_AMRNB = xyes; then
+  :
+  if test "xamrnb" != "x"; then
+    GST_PLUGINS_YES="\tamrnb\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_AMRNB /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: amrnb" >&5
+$as_echo "$as_me: *** These plugins will not be built: amrnb" >&6;}
+  if test "xamrnb" != "x"; then
+    GST_PLUGINS_NO="\tamrnb\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_AMRNB = xyes; then
+  USE_AMRNB_TRUE=
+  USE_AMRNB_FALSE='#'
+else
+  USE_AMRNB_TRUE='#'
+  USE_AMRNB_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: amrwb library ***" >&5
+$as_echo "$as_me: *** checking feature: amrwb library ***" >&6;}
+if test "xamrwbdec" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: amrwbdec ***" >&5
+$as_echo "$as_me: *** for plug-ins: amrwbdec ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_AMRWB" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-amrwb was given.
+if test "${enable_amrwb+set}" = set; then :
+  enableval=$enable_amrwb;  case "${enableval}" in
+      yes) USE_AMRWB=yes;;
+      no) USE_AMRWB=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-amrwb" "$LINENO" 5 ;;
+    esac
+else
+   USE_AMRWB=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_AMRWB="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** amrwbdec pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** amrwbdec pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_AMRWB = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_AMRWB=no
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AMRWB" >&5
+$as_echo_n "checking for AMRWB... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$AMRWB_CFLAGS"; then
+        pkg_cv_AMRWB_CFLAGS="$AMRWB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencore-amrwb\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencore-amrwb") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMRWB_CFLAGS=`$PKG_CONFIG --cflags "opencore-amrwb" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$AMRWB_LIBS"; then
+        pkg_cv_AMRWB_LIBS="$AMRWB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencore-amrwb\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencore-amrwb") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMRWB_LIBS=`$PKG_CONFIG --libs "opencore-amrwb" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               AMRWB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencore-amrwb"`
+        else
+               AMRWB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencore-amrwb"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$AMRWB_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for D_IF_decode in -lopencore-amrwb" >&5
+$as_echo_n "checking for D_IF_decode in -lopencore-amrwb... " >&6; }
+if ${ac_cv_lib_opencore_amrwb_D_IF_decode+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lopencore-amrwb  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char D_IF_decode ();
+int
+main ()
+{
+return D_IF_decode ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_opencore_amrwb_D_IF_decode=yes
+else
+  ac_cv_lib_opencore_amrwb_D_IF_decode=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opencore_amrwb_D_IF_decode" >&5
+$as_echo "$ac_cv_lib_opencore_amrwb_D_IF_decode" >&6; }
+if test "x$ac_cv_lib_opencore_amrwb_D_IF_decode" = xyes; then :
+  HAVE_AMRWB=yes
+else
+  HAVE_AMRWB=no
+fi
+
+  if test "x$HAVE_AMRWB" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "opencore-amrwb/dec_if.h" "ac_cv_header_opencore_amrwb_dec_if_h" "$ac_includes_default"
+if test "x$ac_cv_header_opencore_amrwb_dec_if_h" = xyes; then :
+  :
+else
+  HAVE_AMRWB=no
+fi
+
+
+    if test "x$HAVE_AMRWB" = "xyes"; then
+            AMRWB_LIBS="-lopencore-amrwb"
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+elif test $pkg_failed = untried; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for D_IF_decode in -lopencore-amrwb" >&5
+$as_echo_n "checking for D_IF_decode in -lopencore-amrwb... " >&6; }
+if ${ac_cv_lib_opencore_amrwb_D_IF_decode+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lopencore-amrwb  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char D_IF_decode ();
+int
+main ()
+{
+return D_IF_decode ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_opencore_amrwb_D_IF_decode=yes
+else
+  ac_cv_lib_opencore_amrwb_D_IF_decode=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opencore_amrwb_D_IF_decode" >&5
+$as_echo "$ac_cv_lib_opencore_amrwb_D_IF_decode" >&6; }
+if test "x$ac_cv_lib_opencore_amrwb_D_IF_decode" = xyes; then :
+  HAVE_AMRWB=yes
+else
+  HAVE_AMRWB=no
+fi
+
+  if test "x$HAVE_AMRWB" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "opencore-amrwb/dec_if.h" "ac_cv_header_opencore_amrwb_dec_if_h" "$ac_includes_default"
+if test "x$ac_cv_header_opencore_amrwb_dec_if_h" = xyes; then :
+  :
+else
+  HAVE_AMRWB=no
+fi
+
+
+    if test "x$HAVE_AMRWB" = "xyes"; then
+            AMRWB_LIBS="-lopencore-amrwb"
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+else
+       AMRWB_CFLAGS=$pkg_cv_AMRWB_CFLAGS
+       AMRWB_LIBS=$pkg_cv_AMRWB_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       HAVE_AMRWB="yes"
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_AMRWB = xno; then
+    USE_AMRWB=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: amrwbdec" >&5
+$as_echo "$as_me: *** These plugins will be built: amrwbdec" >&6;}
+  fi
+fi
+if test x$USE_AMRWB = xyes; then
+  :
+  if test "xamrwbdec" != "x"; then
+    GST_PLUGINS_YES="\tamrwbdec\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_AMRWB /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: amrwbdec" >&5
+$as_echo "$as_me: *** These plugins will not be built: amrwbdec" >&6;}
+  if test "xamrwbdec" != "x"; then
+    GST_PLUGINS_NO="\tamrwbdec\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_AMRWB = xyes; then
+  USE_AMRWB_TRUE=
+  USE_AMRWB_FALSE='#'
+else
+  USE_AMRWB_TRUE='#'
+  USE_AMRWB_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: cdio library ***" >&5
+$as_echo "$as_me: *** checking feature: cdio library ***" >&6;}
+if test "xcdio" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: cdio ***" >&5
+$as_echo "$as_me: *** for plug-ins: cdio ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_CDIO" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-cdio was given.
+if test "${enable_cdio+set}" = set; then :
+  enableval=$enable_cdio;  case "${enableval}" in
+      yes) USE_CDIO=yes;;
+      no) USE_CDIO=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-cdio" "$LINENO" 5 ;;
+    esac
+else
+   USE_CDIO=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_CDIO="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** cdio pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** cdio pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_CDIO = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_CDIO=no
+
+
+  which="libcdio >= 0.76"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CDIO" >&5
+$as_echo_n "checking for CDIO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$CDIO_CFLAGS"; then
+        pkg_cv_CDIO_CFLAGS="$CDIO_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CDIO_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$CDIO_LIBS"; then
+        pkg_cv_CDIO_LIBS="$CDIO_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_CDIO_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               CDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+               CDIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$CDIO_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_CDIO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$CDIO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $CDIO_PKG_ERRORS" >&5
+$as_echo "$as_me: $CDIO_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_CDIO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$CDIO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $CDIO_PKG_ERRORS" >&5
+$as_echo "$as_me: $CDIO_PKG_ERRORS" >&6;}
+      fi
+
+else
+       CDIO_CFLAGS=$pkg_cv_CDIO_CFLAGS
+       CDIO_LIBS=$pkg_cv_CDIO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_CDIO="yes"
+
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_CDIO = xno; then
+    USE_CDIO=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: cdio" >&5
+$as_echo "$as_me: *** These plugins will be built: cdio" >&6;}
+  fi
+fi
+if test x$USE_CDIO = xyes; then
+  :
+  if test "xcdio" != "x"; then
+    GST_PLUGINS_YES="\tcdio\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_CDIO /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: cdio" >&5
+$as_echo "$as_me: *** These plugins will not be built: cdio" >&6;}
+  if test "xcdio" != "x"; then
+    GST_PLUGINS_NO="\tcdio\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_CDIO = xyes; then
+  USE_CDIO_TRUE=
+  USE_CDIO_FALSE='#'
+else
+  USE_CDIO_TRUE='#'
+  USE_CDIO_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: dvdread library ***" >&5
+$as_echo "$as_me: *** checking feature: dvdread library ***" >&6;}
+if test "xdvdreadsrc" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: dvdreadsrc ***" >&5
+$as_echo "$as_me: *** for plug-ins: dvdreadsrc ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_DVDREAD" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-dvdread was given.
+if test "${enable_dvdread+set}" = set; then :
+  enableval=$enable_dvdread;  case "${enableval}" in
+      yes) USE_DVDREAD=yes;;
+      no) USE_DVDREAD=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-dvdread" "$LINENO" 5 ;;
+    esac
+else
+   USE_DVDREAD=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_DVDREAD="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** dvdreadsrc pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** dvdreadsrc pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_DVDREAD = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_DVDREAD=no
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DVDOpen in -ldvdread" >&5
+$as_echo_n "checking for DVDOpen in -ldvdread... " >&6; }
+if ${ac_cv_lib_dvdread_DVDOpen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldvdread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char DVDOpen ();
+int
+main ()
+{
+return DVDOpen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dvdread_DVDOpen=yes
+else
+  ac_cv_lib_dvdread_DVDOpen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dvdread_DVDOpen" >&5
+$as_echo "$ac_cv_lib_dvdread_DVDOpen" >&6; }
+if test "x$ac_cv_lib_dvdread_DVDOpen" = xyes; then :
+  HAVE_DVDREAD=yes
+else
+  HAVE_DVDREAD=no
+fi
+
+  if test "x$HAVE_DVDREAD" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "dvdread/dvd_reader.h" "ac_cv_header_dvdread_dvd_reader_h" "$ac_includes_default"
+if test "x$ac_cv_header_dvdread_dvd_reader_h" = xyes; then :
+  :
+else
+  HAVE_DVDREAD=no
+fi
+
+
+    if test "x$HAVE_DVDREAD" = "xyes"; then
+            DVDREAD_LIBS="-ldvdread"
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_DVDREAD = xno; then
+    USE_DVDREAD=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: dvdreadsrc" >&5
+$as_echo "$as_me: *** These plugins will be built: dvdreadsrc" >&6;}
+  fi
+fi
+if test x$USE_DVDREAD = xyes; then
+  :
+  if test "xdvdreadsrc" != "x"; then
+    GST_PLUGINS_YES="\tdvdreadsrc\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_DVDREAD /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: dvdreadsrc" >&5
+$as_echo "$as_me: *** These plugins will not be built: dvdreadsrc" >&6;}
+  if test "xdvdreadsrc" != "x"; then
+    GST_PLUGINS_NO="\tdvdreadsrc\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_DVDREAD = xyes; then
+  USE_DVDREAD_TRUE=
+  USE_DVDREAD_FALSE='#'
+else
+  USE_DVDREAD_TRUE='#'
+  USE_DVDREAD_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: lame mp3 encoder library ***" >&5
+$as_echo "$as_me: *** checking feature: lame mp3 encoder library ***" >&6;}
+if test "xlame" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: lame ***" >&5
+$as_echo "$as_me: *** for plug-ins: lame ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_LAME" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-lame was given.
+if test "${enable_lame+set}" = set; then :
+  enableval=$enable_lame;  case "${enableval}" in
+      yes) USE_LAME=yes;;
+      no) USE_LAME=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-lame" "$LINENO" 5 ;;
+    esac
+else
+   USE_LAME=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_LAME="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** lame pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** lame pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_LAME = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_LAME=no
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lame_init in -lmp3lame" >&5
+$as_echo_n "checking for lame_init in -lmp3lame... " >&6; }
+if ${ac_cv_lib_mp3lame_lame_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmp3lame $LIBM $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char lame_init ();
+int
+main ()
+{
+return lame_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_mp3lame_lame_init=yes
+else
+  ac_cv_lib_mp3lame_lame_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mp3lame_lame_init" >&5
+$as_echo "$ac_cv_lib_mp3lame_lame_init" >&6; }
+if test "x$ac_cv_lib_mp3lame_lame_init" = xyes; then :
+  HAVE_LAME=yes
+else
+  HAVE_LAME=no
+fi
+
+  if test "x$HAVE_LAME" = "xyes"; then
+    ac_fn_c_check_header_mongrel "$LINENO" "lame/lame.h" "ac_cv_header_lame_lame_h" "$ac_includes_default"
+if test "x$ac_cv_header_lame_lame_h" = xyes; then :
+  :
+else
+  HAVE_LAME=no
+fi
+
+
+    if test "x$HAVE_LAME" = "xyes"; then
+
+    HAVE_LAME="yes"
+    LAME_LIBS="-lmp3lame $LIBM"
+        LAME_CFLAGS=""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <lame/lame.h>
+int
+main ()
+{
+ int preset = MEDIUM
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  LAME_CFLAGS="-DGSTLAME_PRESET"
+else
+  LAME_CFLAGS=""
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <lame/lame.h>
+int
+main ()
+{
+
+        void *ptr = &lame_set_VBR_quality
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  LAME_CFLAGS="$LAME_CFLAGS -DHAVE_LAME_SET_VBR_QUALITY"
+else
+  LAME_CFLAGS="$LAME_CFLAGS"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+    else
+      :
+    fi
+  else
+    :
+  fi
+
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_LAME = xno; then
+    USE_LAME=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: lame" >&5
+$as_echo "$as_me: *** These plugins will be built: lame" >&6;}
+  fi
+fi
+if test x$USE_LAME = xyes; then
+  :
+  if test "xlame" != "x"; then
+    GST_PLUGINS_YES="\tlame\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_LAME /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: lame" >&5
+$as_echo "$as_me: *** These plugins will not be built: lame" >&6;}
+  if test "xlame" != "x"; then
+    GST_PLUGINS_NO="\tlame\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_LAME = xyes; then
+  USE_LAME_TRUE=
+  USE_LAME_FALSE='#'
+else
+  USE_LAME_TRUE='#'
+  USE_LAME_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mad mp3 decoder ***" >&5
+$as_echo "$as_me: *** checking feature: mad mp3 decoder ***" >&6;}
+if test "xmad" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: mad ***" >&5
+$as_echo "$as_me: *** for plug-ins: mad ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_MAD" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-mad was given.
+if test "${enable_mad+set}" = set; then :
+  enableval=$enable_mad;  case "${enableval}" in
+      yes) USE_MAD=yes;;
+      no) USE_MAD=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-mad" "$LINENO" 5 ;;
+    esac
+else
+   USE_MAD=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_MAD="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mad pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** mad pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_MAD = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_MAD=no
+
+
+
+  which="mad >= 0.15"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAD" >&5
+$as_echo_n "checking for MAD... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$MAD_CFLAGS"; then
+        pkg_cv_MAD_CFLAGS="$MAD_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_MAD_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$MAD_LIBS"; then
+        pkg_cv_MAD_LIBS="$MAD_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_MAD_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               MAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+               MAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$MAD_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_MAD="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$MAD_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $MAD_PKG_ERRORS" >&5
+$as_echo "$as_me: $MAD_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_MAD="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$MAD_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $MAD_PKG_ERRORS" >&5
+$as_echo "$as_me: $MAD_PKG_ERRORS" >&6;}
+      fi
+
+else
+       MAD_CFLAGS=$pkg_cv_MAD_CFLAGS
+       MAD_LIBS=$pkg_cv_MAD_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_MAD="yes"
+
+fi
+
+
+  MAD_LIBS="$MAD_LIBS"
+  if test "x$HAVE_MAD" = "xno"; then
+        ac_fn_c_check_header_mongrel "$LINENO" "mad.h" "ac_cv_header_mad_h" "$ac_includes_default"
+if test "x$ac_cv_header_mad_h" = xyes; then :
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mad_decoder_finish in -lmad" >&5
+$as_echo_n "checking for mad_decoder_finish in -lmad... " >&6; }
+if ${ac_cv_lib_mad_mad_decoder_finish+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmad  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char mad_decoder_finish ();
+int
+main ()
+{
+return mad_decoder_finish ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_mad_mad_decoder_finish=yes
+else
+  ac_cv_lib_mad_mad_decoder_finish=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mad_mad_decoder_finish" >&5
+$as_echo "$ac_cv_lib_mad_mad_decoder_finish" >&6; }
+if test "x$ac_cv_lib_mad_mad_decoder_finish" = xyes; then :
+  HAVE_MAD="yes" MAD_LIBS="-lmad"
+fi
+
+
+fi
+
+
+  fi
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_MAD = xno; then
+    USE_MAD=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: mad" >&5
+$as_echo "$as_me: *** These plugins will be built: mad" >&6;}
+  fi
+fi
+if test x$USE_MAD = xyes; then
+  :
+  if test "xmad" != "x"; then
+    GST_PLUGINS_YES="\tmad\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_MAD /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: mad" >&5
+$as_echo "$as_me: *** These plugins will not be built: mad" >&6;}
+  if test "xmad" != "x"; then
+    GST_PLUGINS_NO="\tmad\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_MAD = xyes; then
+  USE_MAD_TRUE=
+  USE_MAD_FALSE='#'
+else
+  USE_MAD_TRUE='#'
+  USE_MAD_FALSE=
+fi
+
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mpeg2dec ***" >&5
+$as_echo "$as_me: *** checking feature: mpeg2dec ***" >&6;}
+if test "xmpeg2dec" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: mpeg2dec ***" >&5
+$as_echo "$as_me: *** for plug-ins: mpeg2dec ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_MPEG2DEC" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-mpeg2dec was given.
+if test "${enable_mpeg2dec+set}" = set; then :
+  enableval=$enable_mpeg2dec;  case "${enableval}" in
+      yes) USE_MPEG2DEC=yes;;
+      no) USE_MPEG2DEC=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-mpeg2dec" "$LINENO" 5 ;;
+    esac
+else
+   USE_MPEG2DEC=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_MPEG2DEC="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mpeg2dec pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** mpeg2dec pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_MPEG2DEC = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_MPEG2DEC=no
+
+
+  which="libmpeg2 >= 0.4.0"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPEG2DEC" >&5
+$as_echo_n "checking for MPEG2DEC... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$MPEG2DEC_CFLAGS"; then
+        pkg_cv_MPEG2DEC_CFLAGS="$MPEG2DEC_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_MPEG2DEC_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$MPEG2DEC_LIBS"; then
+        pkg_cv_MPEG2DEC_LIBS="$MPEG2DEC_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_MPEG2DEC_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               MPEG2DEC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+               MPEG2DEC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$MPEG2DEC_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_MPEG2DEC="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$MPEG2DEC_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $MPEG2DEC_PKG_ERRORS" >&5
+$as_echo "$as_me: $MPEG2DEC_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_MPEG2DEC="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$MPEG2DEC_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $MPEG2DEC_PKG_ERRORS" >&5
+$as_echo "$as_me: $MPEG2DEC_PKG_ERRORS" >&6;}
+      fi
+
+else
+       MPEG2DEC_CFLAGS=$pkg_cv_MPEG2DEC_CFLAGS
+       MPEG2DEC_LIBS=$pkg_cv_MPEG2DEC_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_MPEG2DEC="yes"
+
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_MPEG2DEC = xno; then
+    USE_MPEG2DEC=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: mpeg2dec" >&5
+$as_echo "$as_me: *** These plugins will be built: mpeg2dec" >&6;}
+  fi
+fi
+if test x$USE_MPEG2DEC = xyes; then
+  :
+  if test "xmpeg2dec" != "x"; then
+    GST_PLUGINS_YES="\tmpeg2dec\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_MPEG2DEC /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: mpeg2dec" >&5
+$as_echo "$as_me: *** These plugins will not be built: mpeg2dec" >&6;}
+  if test "xmpeg2dec" != "x"; then
+    GST_PLUGINS_NO="\tmpeg2dec\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_MPEG2DEC = xyes; then
+  USE_MPEG2DEC_TRUE=
+  USE_MPEG2DEC_FALSE='#'
+else
+  USE_MPEG2DEC_TRUE='#'
+  USE_MPEG2DEC_FALSE=
+fi
+
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: libsidplay ***" >&5
+$as_echo "$as_me: *** checking feature: libsidplay ***" >&6;}
+if test "xsid" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: sid ***" >&5
+$as_echo "$as_me: *** for plug-ins: sid ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_SIDPLAY" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-sidplay was given.
+if test "${enable_sidplay+set}" = set; then :
+  enableval=$enable_sidplay;  case "${enableval}" in
+      yes) USE_SIDPLAY=yes;;
+      no) USE_SIDPLAY=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-sidplay" "$LINENO" 5 ;;
+    esac
+else
+   USE_SIDPLAY=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_SIDPLAY="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** sid pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** sid pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_SIDPLAY = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_SIDPLAY=no
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsidplay 1.36.x" >&5
+$as_echo_n "checking for libsidplay 1.36.x... " >&6; }
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ac_fn_cxx_check_header_mongrel "$LINENO" "sidplay/player.h" "ac_cv_header_sidplay_player_h" "$ac_includes_default"
+if test "x$ac_cv_header_sidplay_player_h" = xyes; then :
+  HAVE_SIDPLAY="yes"
+else
+  HAVE_SIDPLAY="no"
+fi
+
+
+
+if test $HAVE_SIDPLAY = "yes"; then
+  SIDPLAY_LIBS="-lsidplay"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lsidplay works" >&5
+$as_echo_n "checking whether -lsidplay works... " >&6; }
+  ac_libs_safe=$LIBS
+
+  LIBS="-lsidplay"
+
+  if test "$cross_compiling" = yes; then :
+  HAVE_SIDPLAY="no"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+    #include <sidplay/player.h>
+    int main()
+    { sidTune tune = sidTune(0);  }
+
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  HAVE_SIDPLAY="yes"
+else
+  HAVE_SIDPLAY="no"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+  LIBS="$ac_libs_safe"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_SIDPLAY" >&5
+$as_echo "$HAVE_SIDPLAY" >&6; }
+fi
+
+SIDPLAY_CFLAGS=
+SIDPLAY_LIBS="-lsidplay"
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_SIDPLAY = xno; then
+    USE_SIDPLAY=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: sid" >&5
+$as_echo "$as_me: *** These plugins will be built: sid" >&6;}
+  fi
+fi
+if test x$USE_SIDPLAY = xyes; then
+  :
+  if test "xsid" != "x"; then
+    GST_PLUGINS_YES="\tsid\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_SIDPLAY /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: sid" >&5
+$as_echo "$as_me: *** These plugins will not be built: sid" >&6;}
+  if test "xsid" != "x"; then
+    GST_PLUGINS_NO="\tsid\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_SIDPLAY = xyes; then
+  USE_SIDPLAY_TRUE=
+  USE_SIDPLAY_FALSE='#'
+else
+  USE_SIDPLAY_TRUE='#'
+  USE_SIDPLAY_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: twolame ***" >&5
+$as_echo "$as_me: *** checking feature: twolame ***" >&6;}
+if test "xtwolame" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: twolame ***" >&5
+$as_echo "$as_me: *** for plug-ins: twolame ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_TWOLAME" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-twolame was given.
+if test "${enable_twolame+set}" = set; then :
+  enableval=$enable_twolame;  case "${enableval}" in
+      yes) USE_TWOLAME=yes;;
+      no) USE_TWOLAME=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-twolame" "$LINENO" 5 ;;
+    esac
+else
+   USE_TWOLAME=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_TWOLAME="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** twolame pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** twolame pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_TWOLAME = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_TWOLAME=no
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TWOLAME" >&5
+$as_echo_n "checking for TWOLAME... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$TWOLAME_CFLAGS"; then
+        pkg_cv_TWOLAME_CFLAGS="$TWOLAME_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"twolame >= 0.3.10\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "twolame >= 0.3.10") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_TWOLAME_CFLAGS=`$PKG_CONFIG --cflags "twolame >= 0.3.10" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$TWOLAME_LIBS"; then
+        pkg_cv_TWOLAME_LIBS="$TWOLAME_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"twolame >= 0.3.10\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "twolame >= 0.3.10") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_TWOLAME_LIBS=`$PKG_CONFIG --libs "twolame >= 0.3.10" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               TWOLAME_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "twolame >= 0.3.10"`
+        else
+               TWOLAME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "twolame >= 0.3.10"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$TWOLAME_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_TWOLAME="no"
+
+elif test $pkg_failed = untried; then
+
+      HAVE_TWOLAME="no"
+
+else
+       TWOLAME_CFLAGS=$pkg_cv_TWOLAME_CFLAGS
+       TWOLAME_LIBS=$pkg_cv_TWOLAME_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_TWOLAME="yes"
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_TWOLAME = xno; then
+    USE_TWOLAME=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: twolame" >&5
+$as_echo "$as_me: *** These plugins will be built: twolame" >&6;}
+  fi
+fi
+if test x$USE_TWOLAME = xyes; then
+  :
+  if test "xtwolame" != "x"; then
+    GST_PLUGINS_YES="\ttwolame\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_TWOLAME /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: twolame" >&5
+$as_echo "$as_me: *** These plugins will not be built: twolame" >&6;}
+  if test "xtwolame" != "x"; then
+    GST_PLUGINS_NO="\ttwolame\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_TWOLAME = xyes; then
+  USE_TWOLAME_TRUE=
+  USE_TWOLAME_FALSE='#'
+else
+  USE_TWOLAME_TRUE='#'
+  USE_TWOLAME_FALSE=
+fi
+
+
+
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: x264 plug-in ***" >&5
+$as_echo "$as_me: *** checking feature: x264 plug-in ***" >&6;}
+if test "xx264" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: x264 ***" >&5
+$as_echo "$as_me: *** for plug-ins: x264 ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_X264" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-x264 was given.
+if test "${enable_x264+set}" = set; then :
+  enableval=$enable_x264;  case "${enableval}" in
+      yes) USE_X264=yes;;
+      no) USE_X264=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-x264" "$LINENO" 5 ;;
+    esac
+else
+   USE_X264=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_X264="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** x264 pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** x264 pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+
+if test x$USE_X264 = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_X264=no
+
+
+  which="x264 >= 0.55.0"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X264" >&5
+$as_echo_n "checking for X264... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$X264_CFLAGS"; then
+        pkg_cv_X264_CFLAGS="$X264_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_X264_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$X264_LIBS"; then
+        pkg_cv_X264_LIBS="$X264_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_X264_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+       pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               X264_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+               X264_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$X264_PKG_ERRORS" >&5
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_X264="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$X264_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $X264_PKG_ERRORS" >&5
+$as_echo "$as_me: $X264_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_X264="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$X264_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $X264_PKG_ERRORS" >&5
+$as_echo "$as_me: $X264_PKG_ERRORS" >&6;}
+      fi
+
+else
+       X264_CFLAGS=$pkg_cv_X264_CFLAGS
+       X264_LIBS=$pkg_cv_X264_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_X264="yes"
+
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_X264 = xno; then
+    USE_X264=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: x264" >&5
+$as_echo "$as_me: *** These plugins will be built: x264" >&6;}
+  fi
+fi
+if test x$USE_X264 = xyes; then
+  :
+  if test "xx264" != "x"; then
+    GST_PLUGINS_YES="\tx264\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_X264 /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: x264" >&5
+$as_echo "$as_me: *** These plugins will not be built: x264" >&6;}
+  if test "xx264" != "x"; then
+    GST_PLUGINS_NO="\tx264\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_X264 = xyes; then
+  USE_X264_TRUE=
+  USE_X264_FALSE='#'
+else
+  USE_X264_TRUE='#'
+  USE_X264_FALSE=
+fi
+
+
+
+else
+
+
+ if false; then
+  USE_A52DEC_TRUE=
+  USE_A52DEC_FALSE='#'
+else
+  USE_A52DEC_TRUE='#'
+  USE_A52DEC_FALSE=
+fi
+
+ if false; then
+  USE_AMRNB_TRUE=
+  USE_AMRNB_FALSE='#'
+else
+  USE_AMRNB_TRUE='#'
+  USE_AMRNB_FALSE=
+fi
+
+ if false; then
+  USE_AMRWB_TRUE=
+  USE_AMRWB_FALSE='#'
+else
+  USE_AMRWB_TRUE='#'
+  USE_AMRWB_FALSE=
+fi
+
+ if false; then
+  USE_CDIO_TRUE=
+  USE_CDIO_FALSE='#'
+else
+  USE_CDIO_TRUE='#'
+  USE_CDIO_FALSE=
+fi
+
+ if false; then
+  USE_DVDREAD_TRUE=
+  USE_DVDREAD_FALSE='#'
+else
+  USE_DVDREAD_TRUE='#'
+  USE_DVDREAD_FALSE=
+fi
+
+ if false; then
+  USE_LAME_TRUE=
+  USE_LAME_FALSE='#'
+else
+  USE_LAME_TRUE='#'
+  USE_LAME_FALSE=
+fi
+
+ if false; then
+  USE_MAD_TRUE=
+  USE_MAD_FALSE='#'
+else
+  USE_MAD_TRUE='#'
+  USE_MAD_FALSE=
+fi
+
+ if false; then
+  USE_MPEG2DEC_TRUE=
+  USE_MPEG2DEC_FALSE='#'
+else
+  USE_MPEG2DEC_TRUE='#'
+  USE_MPEG2DEC_FALSE=
+fi
+
+ if false; then
+  USE_SIDPLAY_TRUE=
+  USE_SIDPLAY_FALSE='#'
+else
+  USE_SIDPLAY_TRUE='#'
+  USE_SIDPLAY_FALSE=
+fi
+
+ if false; then
+  USE_TWOLAME_TRUE=
+  USE_TWOLAME_FALSE='#'
+else
+  USE_TWOLAME_TRUE='#'
+  USE_TWOLAME_FALSE=
+fi
+
+ if false; then
+  USE_X264_TRUE=
+  USE_X264_FALSE='#'
+else
+  USE_X264_TRUE='#'
+  USE_X264_FALSE=
+fi
+
+
+fi
+
+
+if test "x$USE_DEBUG" = xyes; then
+   PROFILE_CFLAGS="-g"
+fi
+
+
+if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+    DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
+else
+  DEPRECATED_CFLAGS=""
+fi
+
+
+GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
+GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
+
+
+
+GST_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
+GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
+
+
+
+
+GST_ALL_LDFLAGS="-no-undefined"
+
+
+GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^_*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
+
+
+
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst/Makefile gst/asfdemux/Makefile gst/dvdlpcmdec/Makefile gst/dvdsub/Makefile gst/iec958/Makefile gst/mpegaudioparse/Makefile gst/mpegstream/Makefile gst/realmedia/Makefile gst/synaesthesia/Makefile ext/Makefile ext/a52dec/Makefile ext/amrnb/Makefile ext/amrwbdec/Makefile ext/cdio/Makefile ext/dvdread/Makefile ext/lame/Makefile ext/mad/Makefile ext/mpeg2dec/Makefile ext/sidplay/Makefile ext/twolame/Makefile ext/x264/Makefile docs/Makefile docs/plugins/Makefile docs/version.entities tests/Makefile tests/check/Makefile m4/Makefile po/Makefile.in pkgconfig/Makefile pkgconfig/gstreamer-plugins-ugly-uninstalled.pc gst-plugins-ugly.spec"
+
+
+sed \
+    -e 's/.*config.h.in.*autoheader.*/\/* Autogenerated config.h created for win32 Visual Studio builds *\/\n\n\/* PREFIX -- specifically added for Windows for easier moving *\/\n#define PREFIX "C:\\\\gstreamer"\n\n/' \
+    -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
+    -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
+    -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
+    -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
+    -e 's/.* GST_MAJORMINOR$/#define GST_MAJORMINOR "'$GST_MAJORMINOR'"/' \
+    -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
+    -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
+    -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
+    -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
+    -e 's/.* HAVE_FGETPOS$/#define HAVE_FGETPOS 1/' \
+    -e 's/.* HAVE_FSETPOS$/#define HAVE_FSETPOS 1/' \
+    -e 's/.* HAVE_LIBXML2$/#define HAVE_LIBXML2 1/' \
+    -e 's/.* HAVE_PROCESS_H$/#define HAVE_PROCESS_H 1/' \
+    -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
+    -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
+    -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
+    -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
+    -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
+    -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
+    -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
+    -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
+    -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
+    -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
+    -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
+    -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
+    -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
+    -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
+    -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
+    -e 's/.* PLUGINDIR$/#ifdef _DEBUG\n#  define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.10"\n#else\n#  define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.10"\n#endif/' \
+    -e 's/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
+    -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
+    -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
+    -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
+    -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
+    -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
+    config.h.in >win32/common/config.h-new
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GST_GCOV_ENABLED_TRUE}" && test -z "${GST_GCOV_ENABLED_FALSE}"; then
+  as_fn_error $? "conditional \"GST_GCOV_ENABLED\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXAMPLES_TRUE}" && test -z "${BUILD_EXAMPLES_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_EXAMPLES\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_EXTERNAL_TRUE}" && test -z "${USE_EXTERNAL_FALSE}"; then
+  as_fn_error $? "conditional \"USE_EXTERNAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXTERNAL_TRUE}" && test -z "${BUILD_EXTERNAL_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_EXTERNAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_EXPERIMENTAL_TRUE}" && test -z "${USE_EXPERIMENTAL_FALSE}"; then
+  as_fn_error $? "conditional \"USE_EXPERIMENTAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXPERIMENTAL_TRUE}" && test -z "${BUILD_EXPERIMENTAL_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_EXPERIMENTAL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+if test -z "${HAVE_CPU_I386_TRUE}" && test -z "${HAVE_CPU_I386_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_I386\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_PPC_TRUE}" && test -z "${HAVE_CPU_PPC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_PPC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_PPC64_TRUE}" && test -z "${HAVE_CPU_PPC64_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_PPC64\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_ALPHA_TRUE}" && test -z "${HAVE_CPU_ALPHA_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_ALPHA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_ARM_TRUE}" && test -z "${HAVE_CPU_ARM_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_ARM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_SPARC_TRUE}" && test -z "${HAVE_CPU_SPARC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_SPARC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_HPPA_TRUE}" && test -z "${HAVE_CPU_HPPA_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_HPPA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_MIPS_TRUE}" && test -z "${HAVE_CPU_MIPS_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_MIPS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_S390_TRUE}" && test -z "${HAVE_CPU_S390_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_S390\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_IA64_TRUE}" && test -z "${HAVE_CPU_IA64_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_IA64\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_M68K_TRUE}" && test -z "${HAVE_CPU_M68K_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_M68K\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_X86_64_TRUE}" && test -z "${HAVE_CPU_X86_64_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_X86_64\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_CRIS_TRUE}" && test -z "${HAVE_CPU_CRIS_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_CRIS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CPU_CRISV32_TRUE}" && test -z "${HAVE_CPU_CRISV32_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CPU_CRISV32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_VALGRIND_TRUE}" && test -z "${HAVE_VALGRIND_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_VALGRIND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+  as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${ENABLE_PLUGIN_DOCS_TRUE}" && test -z "${ENABLE_PLUGIN_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_PLUGIN_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_ORC_TRUE}" && test -z "${HAVE_ORC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ORC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_ORCC_TRUE}" && test -z "${HAVE_ORCC_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_ORCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_GST_CHECK_TRUE}" && test -z "${HAVE_GST_CHECK_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_GST_CHECK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_ASFDEMUX_TRUE}" && test -z "${USE_PLUGIN_ASFDEMUX_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_ASFDEMUX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_DVDLPCMDEC_TRUE}" && test -z "${USE_PLUGIN_DVDLPCMDEC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_DVDLPCMDEC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_DVDSUB_TRUE}" && test -z "${USE_PLUGIN_DVDSUB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_DVDSUB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_IEC958_TRUE}" && test -z "${USE_PLUGIN_IEC958_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_IEC958\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_MPEGAUDIOPARSE_TRUE}" && test -z "${USE_PLUGIN_MPEGAUDIOPARSE_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_MPEGAUDIOPARSE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_MPEGSTREAM_TRUE}" && test -z "${USE_PLUGIN_MPEGSTREAM_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_MPEGSTREAM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_REALMEDIA_TRUE}" && test -z "${USE_PLUGIN_REALMEDIA_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_REALMEDIA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_SYNAESTHESIA_TRUE}" && test -z "${USE_PLUGIN_SYNAESTHESIA_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_SYNAESTHESIA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_PLUGIN_SYNAESTHESIA_TRUE}" && test -z "${USE_PLUGIN_SYNAESTHESIA_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_SYNAESTHESIA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_A52DEC_TRUE}" && test -z "${USE_A52DEC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_A52DEC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_AMRNB_TRUE}" && test -z "${USE_AMRNB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_AMRNB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_AMRWB_TRUE}" && test -z "${USE_AMRWB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_AMRWB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_CDIO_TRUE}" && test -z "${USE_CDIO_FALSE}"; then
+  as_fn_error $? "conditional \"USE_CDIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_DVDREAD_TRUE}" && test -z "${USE_DVDREAD_FALSE}"; then
+  as_fn_error $? "conditional \"USE_DVDREAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_LAME_TRUE}" && test -z "${USE_LAME_FALSE}"; then
+  as_fn_error $? "conditional \"USE_LAME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_MAD_TRUE}" && test -z "${USE_MAD_FALSE}"; then
+  as_fn_error $? "conditional \"USE_MAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_MPEG2DEC_TRUE}" && test -z "${USE_MPEG2DEC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_MPEG2DEC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_SIDPLAY_TRUE}" && test -z "${USE_SIDPLAY_FALSE}"; then
+  as_fn_error $? "conditional \"USE_SIDPLAY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_TWOLAME_TRUE}" && test -z "${USE_TWOLAME_FALSE}"; then
+  as_fn_error $? "conditional \"USE_TWOLAME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_X264_TRUE}" && test -z "${USE_X264_FALSE}"; then
+  as_fn_error $? "conditional \"USE_X264\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_A52DEC_TRUE}" && test -z "${USE_A52DEC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_A52DEC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_AMRNB_TRUE}" && test -z "${USE_AMRNB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_AMRNB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_AMRWB_TRUE}" && test -z "${USE_AMRWB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_AMRWB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_CDIO_TRUE}" && test -z "${USE_CDIO_FALSE}"; then
+  as_fn_error $? "conditional \"USE_CDIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_DVDREAD_TRUE}" && test -z "${USE_DVDREAD_FALSE}"; then
+  as_fn_error $? "conditional \"USE_DVDREAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_LAME_TRUE}" && test -z "${USE_LAME_FALSE}"; then
+  as_fn_error $? "conditional \"USE_LAME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_MAD_TRUE}" && test -z "${USE_MAD_FALSE}"; then
+  as_fn_error $? "conditional \"USE_MAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_MPEG2DEC_TRUE}" && test -z "${USE_MPEG2DEC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_MPEG2DEC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_SIDPLAY_TRUE}" && test -z "${USE_SIDPLAY_FALSE}"; then
+  as_fn_error $? "conditional \"USE_SIDPLAY\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_TWOLAME_TRUE}" && test -z "${USE_TWOLAME_FALSE}"; then
+  as_fn_error $? "conditional \"USE_TWOLAME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_X264_TRUE}" && test -z "${USE_X264_FALSE}"; then
+  as_fn_error $? "conditional \"USE_X264\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by GStreamer Ugly Plug-ins $as_me 0.10.19, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+GStreamer Ugly Plug-ins config.status 0.10.19
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_separator_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+
+# variables for create stdint.h replacement
+PACKAGE="$PACKAGE"
+VERSION="$VERSION"
+ac_stdint_h="$ac_stdint_h"
+_ac_stdint_h=`$as_echo "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp`
+ac_cv_stdint_message="$ac_cv_stdint_message"
+ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
+ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
+ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
+ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
+ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
+ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
+ac_cv_char_data_model="$ac_cv_char_data_model"
+ac_cv_long_data_model="$ac_cv_long_data_model"
+ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
+ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
+ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
+    "$ac_stdint_h") CONFIG_COMMANDS="$CONFIG_COMMANDS $ac_stdint_h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "common/Makefile") CONFIG_FILES="$CONFIG_FILES common/Makefile" ;;
+    "common/m4/Makefile") CONFIG_FILES="$CONFIG_FILES common/m4/Makefile" ;;
+    "gst-libs/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/Makefile" ;;
+    "gst-libs/gst/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/gst/Makefile" ;;
+    "gst/Makefile") CONFIG_FILES="$CONFIG_FILES gst/Makefile" ;;
+    "gst/asfdemux/Makefile") CONFIG_FILES="$CONFIG_FILES gst/asfdemux/Makefile" ;;
+    "gst/dvdlpcmdec/Makefile") CONFIG_FILES="$CONFIG_FILES gst/dvdlpcmdec/Makefile" ;;
+    "gst/dvdsub/Makefile") CONFIG_FILES="$CONFIG_FILES gst/dvdsub/Makefile" ;;
+    "gst/iec958/Makefile") CONFIG_FILES="$CONFIG_FILES gst/iec958/Makefile" ;;
+    "gst/mpegaudioparse/Makefile") CONFIG_FILES="$CONFIG_FILES gst/mpegaudioparse/Makefile" ;;
+    "gst/mpegstream/Makefile") CONFIG_FILES="$CONFIG_FILES gst/mpegstream/Makefile" ;;
+    "gst/realmedia/Makefile") CONFIG_FILES="$CONFIG_FILES gst/realmedia/Makefile" ;;
+    "gst/synaesthesia/Makefile") CONFIG_FILES="$CONFIG_FILES gst/synaesthesia/Makefile" ;;
+    "ext/Makefile") CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;;
+    "ext/a52dec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/a52dec/Makefile" ;;
+    "ext/amrnb/Makefile") CONFIG_FILES="$CONFIG_FILES ext/amrnb/Makefile" ;;
+    "ext/amrwbdec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/amrwbdec/Makefile" ;;
+    "ext/cdio/Makefile") CONFIG_FILES="$CONFIG_FILES ext/cdio/Makefile" ;;
+    "ext/dvdread/Makefile") CONFIG_FILES="$CONFIG_FILES ext/dvdread/Makefile" ;;
+    "ext/lame/Makefile") CONFIG_FILES="$CONFIG_FILES ext/lame/Makefile" ;;
+    "ext/mad/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mad/Makefile" ;;
+    "ext/mpeg2dec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mpeg2dec/Makefile" ;;
+    "ext/sidplay/Makefile") CONFIG_FILES="$CONFIG_FILES ext/sidplay/Makefile" ;;
+    "ext/twolame/Makefile") CONFIG_FILES="$CONFIG_FILES ext/twolame/Makefile" ;;
+    "ext/x264/Makefile") CONFIG_FILES="$CONFIG_FILES ext/x264/Makefile" ;;
+    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+    "docs/plugins/Makefile") CONFIG_FILES="$CONFIG_FILES docs/plugins/Makefile" ;;
+    "docs/version.entities") CONFIG_FILES="$CONFIG_FILES docs/version.entities" ;;
+    "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+    "tests/check/Makefile") CONFIG_FILES="$CONFIG_FILES tests/check/Makefile" ;;
+    "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
+    "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+    "pkgconfig/Makefile") CONFIG_FILES="$CONFIG_FILES pkgconfig/Makefile" ;;
+    "pkgconfig/gstreamer-plugins-ugly-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-plugins-ugly-uninstalled.pc" ;;
+    "gst-plugins-ugly.spec") CONFIG_FILES="$CONFIG_FILES gst-plugins-ugly.spec" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+ ;;
+    "po-directories":C)
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done ;;
+    "$ac_stdint_h":C)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_stdint_h : $_ac_stdint_h" >&5
+$as_echo "$as_me: creating $ac_stdint_h : $_ac_stdint_h" >&6;}
+ac_stdint=$tmp/_stdint.h
+
+echo "#ifndef" $_ac_stdint_h >$ac_stdint
+echo "#define" $_ac_stdint_h "1" >>$ac_stdint
+echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
+echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
+echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
+if test "_$ac_cv_header_stdint_t" != "_" ; then
+echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
+echo "#include <stdint.h>" >>$ac_stdint
+echo "#endif" >>$ac_stdint
+echo "#endif" >>$ac_stdint
+else
+
+cat >>$ac_stdint <<STDINT_EOF
+
+/* ................... shortcircuit part ........................... */
+
+#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
+#include <stdint.h>
+#else
+#include <stddef.h>
+
+/* .................... configured part ............................ */
+
+STDINT_EOF
+
+echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
+if test "_$ac_cv_header_stdint_x" != "_" ; then
+  ac_header="$ac_cv_header_stdint_x"
+  echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
+fi
+
+echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
+if  test "_$ac_cv_header_stdint_o" != "_" ; then
+  ac_header="$ac_cv_header_stdint_o"
+  echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
+fi
+
+echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
+if  test "_$ac_cv_header_stdint_u" != "_" ; then
+  ac_header="$ac_cv_header_stdint_u"
+  echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
+else
+  echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
+fi
+
+echo "" >>$ac_stdint
+
+if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
+  echo "#include <$ac_header>" >>$ac_stdint
+  echo "" >>$ac_stdint
+fi fi
+
+echo "/* which 64bit typedef has been found */" >>$ac_stdint
+if test "$ac_cv_type_uint64_t" = "yes" ; then
+echo "#define   _STDINT_HAVE_UINT64_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
+fi
+if test "$ac_cv_type_u_int64_t" = "yes" ; then
+echo "#define   _STDINT_HAVE_U_INT64_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+echo "/* which type model has been detected */" >>$ac_stdint
+if test "_$ac_cv_char_data_model" != "_" ; then
+echo "#define   _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
+echo "#define   _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
+else
+echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
+echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+echo "/* whether int_least types were detected */" >>$ac_stdint
+if test "$ac_cv_type_int_least32_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INT_LEAST32_T" "1"  >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
+fi
+echo "/* whether int_fast types were detected */" >>$ac_stdint
+if test "$ac_cv_type_int_fast32_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
+fi
+echo "/* whether intmax_t type was detected */" >>$ac_stdint
+if test "$ac_cv_type_intmax_t" = "yes"; then
+echo "#define   _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
+else
+echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
+fi
+echo "" >>$ac_stdint
+
+  cat >>$ac_stdint <<STDINT_EOF
+/* .................... detections part ............................ */
+
+/* whether we need to define bitspecific types from compiler base types */
+#ifndef _STDINT_HEADER_INTPTR
+#ifndef _STDINT_HEADER_UINT32
+#ifndef _STDINT_HEADER_U_INT32
+#define _STDINT_NEED_INT_MODEL_T
+#else
+#define _STDINT_HAVE_U_INT_TYPES
+#endif
+#endif
+#endif
+
+#ifdef _STDINT_HAVE_U_INT_TYPES
+#undef _STDINT_NEED_INT_MODEL_T
+#endif
+
+#ifdef  _STDINT_CHAR_MODEL
+#if     _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
+#ifndef _STDINT_BYTE_MODEL
+#define _STDINT_BYTE_MODEL 12
+#endif
+#endif
+#endif
+
+#ifndef _STDINT_HAVE_INT_LEAST32_T
+#define _STDINT_NEED_INT_LEAST_T
+#endif
+
+#ifndef _STDINT_HAVE_INT_FAST32_T
+#define _STDINT_NEED_INT_FAST_T
+#endif
+
+#ifndef _STDINT_HEADER_INTPTR
+#define _STDINT_NEED_INTPTR_T
+#ifndef _STDINT_HAVE_INTMAX_T
+#define _STDINT_NEED_INTMAX_T
+#endif
+#endif
+
+
+/* .................... definition part ............................ */
+
+/* some system headers have good uint64_t */
+#ifndef _HAVE_UINT64_T
+#if     defined _STDINT_HAVE_UINT64_T  || defined HAVE_UINT64_T
+#define _HAVE_UINT64_T
+#elif   defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
+#define _HAVE_UINT64_T
+typedef u_int64_t uint64_t;
+#endif
+#endif
+
+#ifndef _HAVE_UINT64_T
+/* .. here are some common heuristics using compiler runtime specifics */
+#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef long long int64_t;
+typedef unsigned long long uint64_t;
+
+#elif !defined __STRICT_ANSI__
+#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
+#define _HAVE_UINT64_T
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+
+#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
+/* note: all ELF-systems seem to have loff-support which needs 64-bit */
+#if !defined _NO_LONGLONG
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef long long int64_t;
+typedef unsigned long long uint64_t;
+#endif
+
+#elif defined __alpha || (defined __mips && defined _ABIN32)
+#if !defined _NO_LONGLONG
+typedef long int64_t;
+typedef unsigned long uint64_t;
+#endif
+  /* compiler/cpu type to define int64_t */
+#endif
+#endif
+#endif
+
+#if defined _STDINT_HAVE_U_INT_TYPES
+/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
+typedef u_int8_t uint8_t;
+typedef u_int16_t uint16_t;
+typedef u_int32_t uint32_t;
+
+/* glibc compatibility */
+#ifndef __int8_t_defined
+#define __int8_t_defined
+#endif
+#endif
+
+#ifdef _STDINT_NEED_INT_MODEL_T
+/* we must guess all the basic types. Apart from byte-adressable system, */
+/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
+/* (btw, those nibble-addressable systems are way off, or so we assume) */
+
+
+#if defined _STDINT_BYTE_MODEL
+#if _STDINT_LONG_MODEL+0 == 242
+/* 2:4:2 =  IP16 = a normal 16-bit system                */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned long   uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          long    int32_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
+/* 2:4:4 =  LP32 = a 32-bit system derived from a 16-bit */
+/* 4:4:4 = ILP32 = a normal 32-bit system                */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
+/* 4:8:4 =  IP32 = a 32-bit system prepared for 64-bit    */
+/* 4:8:8 =  LP64 = a normal 64-bit system                 */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+/* this system has a "long" of 64bit */
+#ifndef _HAVE_UINT64_T
+#define _HAVE_UINT64_T
+typedef unsigned long   uint64_t;
+typedef          long    int64_t;
+#endif
+#elif _STDINT_LONG_MODEL+0 == 448
+/*      LLP64   a 64-bit system derived from a 32-bit system */
+typedef unsigned char   uint8_t;
+typedef unsigned short  uint16_t;
+typedef unsigned int    uint32_t;
+#ifndef __int8_t_defined
+#define __int8_t_defined
+typedef          char    int8_t;
+typedef          short   int16_t;
+typedef          int     int32_t;
+#endif
+/* assuming the system has a "long long" */
+#ifndef _HAVE_UINT64_T
+#define _HAVE_UINT64_T
+#define _HAVE_LONGLONG_UINT64_T
+typedef unsigned long long uint64_t;
+typedef          long long  int64_t;
+#endif
+#else
+#define _STDINT_NO_INT32_T
+#endif
+#else
+#define _STDINT_NO_INT8_T
+#define _STDINT_NO_INT32_T
+#endif
+#endif
+
+/*
+ * quote from SunOS-5.8 sys/inttypes.h:
+ * Use at your own risk.  As of February 1996, the committee is squarely
+ * behind the fixed sized types; the "least" and "fast" types are still being
+ * discussed.  The probability that the "fast" types may be removed before
+ * the standard is finalized is high enough that they are not currently
+ * implemented.
+ */
+
+#if defined _STDINT_NEED_INT_LEAST_T
+typedef  int8_t    int_least8_t;
+typedef  int16_t   int_least16_t;
+typedef  int32_t   int_least32_t;
+#ifdef _HAVE_UINT64_T
+typedef  int64_t   int_least64_t;
+#endif
+
+typedef uint8_t   uint_least8_t;
+typedef uint16_t  uint_least16_t;
+typedef uint32_t  uint_least32_t;
+#ifdef _HAVE_UINT64_T
+typedef uint64_t  uint_least64_t;
+#endif
+  /* least types */
+#endif
+
+#if defined _STDINT_NEED_INT_FAST_T
+typedef  int8_t    int_fast8_t;
+typedef  int       int_fast16_t;
+typedef  int32_t   int_fast32_t;
+#ifdef _HAVE_UINT64_T
+typedef  int64_t   int_fast64_t;
+#endif
+
+typedef uint8_t   uint_fast8_t;
+typedef unsigned  uint_fast16_t;
+typedef uint32_t  uint_fast32_t;
+#ifdef _HAVE_UINT64_T
+typedef uint64_t  uint_fast64_t;
+#endif
+  /* fast types */
+#endif
+
+#ifdef _STDINT_NEED_INTMAX_T
+#ifdef _HAVE_UINT64_T
+typedef  int64_t       intmax_t;
+typedef uint64_t      uintmax_t;
+#else
+typedef          long  intmax_t;
+typedef unsigned long uintmax_t;
+#endif
+#endif
+
+#ifdef _STDINT_NEED_INTPTR_T
+#ifndef __intptr_t_defined
+#define __intptr_t_defined
+/* we encourage using "long" to store pointer values, never use "int" ! */
+#if   _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
+typedef  unsigned int   uintptr_t;
+typedef           int    intptr_t;
+#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
+typedef  unsigned long  uintptr_t;
+typedef           long   intptr_t;
+#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
+typedef        uint64_t uintptr_t;
+typedef         int64_t  intptr_t;
+#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
+typedef  unsigned long  uintptr_t;
+typedef           long   intptr_t;
+#endif
+#endif
+#endif
+
+/* The ISO C99 standard specifies that in C++ implementations these
+   should only be defined if explicitly requested.  */
+#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+#ifndef UINT32_C
+
+/* Signed.  */
+# define INT8_C(c)      c
+# define INT16_C(c)     c
+# define INT32_C(c)     c
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define INT64_C(c)    c ## L
+# else
+#  define INT64_C(c)    c ## LL
+# endif
+
+/* Unsigned.  */
+# define UINT8_C(c)     c ## U
+# define UINT16_C(c)    c ## U
+# define UINT32_C(c)    c ## U
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define UINT64_C(c)   c ## UL
+# else
+#  define UINT64_C(c)   c ## ULL
+# endif
+
+/* Maximal type.  */
+# ifdef _HAVE_LONGLONG_UINT64_T
+#  define INTMAX_C(c)   c ## L
+#  define UINTMAX_C(c)  c ## UL
+# else
+#  define INTMAX_C(c)   c ## LL
+#  define UINTMAX_C(c)  c ## ULL
+# endif
+
+  /* literalnumbers */
+#endif
+#endif
+
+/* These limits are merily those of a two complement byte-oriented system */
+
+/* Minimum of signed integral types.  */
+# define INT8_MIN               (-128)
+# define INT16_MIN              (-32767-1)
+# define INT32_MIN              (-2147483647-1)
+# define INT64_MIN              (-__INT64_C(9223372036854775807)-1)
+/* Maximum of signed integral types.  */
+# define INT8_MAX               (127)
+# define INT16_MAX              (32767)
+# define INT32_MAX              (2147483647)
+# define INT64_MAX              (__INT64_C(9223372036854775807))
+
+/* Maximum of unsigned integral types.  */
+# define UINT8_MAX              (255)
+# define UINT16_MAX             (65535)
+# define UINT32_MAX             (4294967295U)
+# define UINT64_MAX             (__UINT64_C(18446744073709551615))
+
+/* Minimum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MIN         INT8_MIN
+# define INT_LEAST16_MIN        INT16_MIN
+# define INT_LEAST32_MIN        INT32_MIN
+# define INT_LEAST64_MIN        INT64_MIN
+/* Maximum of signed integral types having a minimum size.  */
+# define INT_LEAST8_MAX         INT8_MAX
+# define INT_LEAST16_MAX        INT16_MAX
+# define INT_LEAST32_MAX        INT32_MAX
+# define INT_LEAST64_MAX        INT64_MAX
+
+/* Maximum of unsigned integral types having a minimum size.  */
+# define UINT_LEAST8_MAX        UINT8_MAX
+# define UINT_LEAST16_MAX       UINT16_MAX
+# define UINT_LEAST32_MAX       UINT32_MAX
+# define UINT_LEAST64_MAX       UINT64_MAX
+
+  /* shortcircuit*/
+#endif
+  /* once */
+#endif
+#endif
+STDINT_EOF
+fi
+    if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_stdint_h is unchanged" >&5
+$as_echo "$as_me: $ac_stdint_h is unchanged" >&6;}
+    else
+      ac_dir=`$as_dirname -- "$ac_stdint_h" ||
+$as_expr X"$ac_stdint_h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_stdint_h" : 'X\(//\)[^/]' \| \
+        X"$ac_stdint_h" : 'X\(//\)$' \| \
+        X"$ac_stdint_h" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_stdint_h" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      as_dir="$ac_dir"; as_fn_mkdir_p
+      rm -f $ac_stdint_h
+      mv $ac_stdint $ac_stdint_h
+    fi
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+
+
+printf "configure: *** Plug-ins without external dependencies that will be built:\n"
+( for i in $GST_PLUGINS_SELECTED; do printf '\t'$i'\n'; done ) | sort
+printf "\n"
+
+printf "configure: *** Plug-ins without external dependencies that will NOT be built:\n"
+( for i in $GST_PLUGINS_ALL; do
+    case " $GST_PLUGINS_SELECTED " in
+      *\ $i\ *)
+       ;;
+      *)
+       printf '\t'$i'\n'
+       ;;
+    esac
+  done ) | sort
+printf "\n"
+
+if test "x$BUILD_EXTERNAL" = "xno"; then
+  printf "configure: *** No plug-ins with external dependencies will be built\n"
+else
+  printf "configure: *** Plug-ins with dependencies that will be built:"
+  printf "$GST_PLUGINS_YES\n" | sort
+  printf "\n"
+  printf "configure: *** Plug-ins with dependencies that will NOT be built:"
+  printf "$GST_PLUGINS_NO\n" | sort
+  printf "\n"
+fi
+
+
+
+  if test "$HAVE_ORC" = yes ; then
+    printf "configure: *** Orc acceleration enabled.\n"
+  else
+    if test "x$enable_orc" = "xno" ; then
+      printf "configure: *** Orc acceleration disabled by --disable-orc.  Slower code paths\n"
+      printf "               will be used.\n"
+    else
+      printf "configure: *** Orc acceleration disabled.  Requires Orc >= $ORC_REQ, which was\n"
+      printf "               not found.  Slower code paths will be used.\n"
+    fi
+  fi
+  printf "\n"
+
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..76f4e9b
--- /dev/null
@@ -0,0 +1,511 @@
+AC_PREREQ(2.60)
+
+dnl please read gstreamer/docs/random/autotools before changing this file
+
+dnl initialize autoconf
+dnl releases only do -Wall, cvs and prerelease does -Werror too
+dnl use a three digit version number for releases, and four for cvs/prerelease
+AC_INIT(GStreamer Ugly Plug-ins, 0.10.19,
+    http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
+    gst-plugins-ugly)
+
+AG_GST_INIT
+
+dnl initialize automake
+AM_INIT_AUTOMAKE([-Wno-portability 1.10])
+
+dnl define PACKAGE_VERSION_* variables
+AS_VERSION
+
+dnl check if this is a release version
+AS_NANO(GST_GIT="no", GST_GIT="yes")
+
+dnl can autoconf find the source ?
+AC_CONFIG_SRCDIR([ext/mad/gstmad.c])
+
+dnl define the output header for config
+AM_CONFIG_HEADER(config.h)
+
+dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
+AM_MAINTAINER_MODE
+
+dnl sets host_* variables
+AC_CANONICAL_HOST
+
+dnl use pretty build output with automake >= 1.11
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
+  [AM_DEFAULT_VERBOSITY=1
+   AC_SUBST(AM_DEFAULT_VERBOSITY)])
+
+dnl our libraries and install dirs use major.minor as a version
+GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
+dnl we override it here if we need to for the release candidate of new series
+GST_MAJORMINOR=0.10
+AC_SUBST(GST_MAJORMINOR)
+
+dnl FIXME: this macro doesn't actually work;
+dnl the generated libtool script has no support for the listed tags.
+dnl So this needs to be fixed first if we want to use this
+dnl AS_LIBTOOL_TAGS([CXX])
+
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_LIBTOOL
+
+dnl *** required versions of GStreamer stuff ***
+GST_REQ=0.10.36
+GSTPB_REQ=0.10.36
+
+dnl *** autotools stuff ****
+
+dnl allow for different autotools
+AS_AUTOTOOLS_ALTERNATE
+
+dnl Add parameters for aclocal
+AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
+
+dnl set up gettext
+dnl the version check needs to stay here because autopoint greps for it
+AM_GNU_GETTEXT_VERSION(0.17)
+AM_GNU_GETTEXT([external])
+AG_GST_GETTEXT([gst-plugins-ugly-$GST_MAJORMINOR])
+
+dnl *** check for arguments to configure ***
+
+AG_GST_ARG_DEBUG
+AG_GST_ARG_PROFILING
+AG_GST_ARG_VALGRIND
+AG_GST_ARG_GCOV
+
+AG_GST_ARG_EXAMPLES
+
+AG_GST_ARG_WITH_PKG_CONFIG_PATH
+AG_GST_ARG_WITH_PACKAGE_NAME
+AG_GST_ARG_WITH_PACKAGE_ORIGIN
+
+AG_GST_ARG_WITH_PLUGINS
+
+AG_GST_ARG_ENABLE_EXTERNAL
+
+AG_GST_ARG_ENABLE_EXPERIMENTAL
+
+dnl *** checks for platform ***
+
+dnl * hardware/architecture *
+
+dnl common/m4/gst-arch.m4
+dnl check CPU type
+AG_GST_ARCH
+
+dnl Determine endianness
+AC_C_BIGENDIAN
+
+dnl *** checks for programs ***
+
+dnl find a compiler
+AC_PROG_CC
+AC_PROG_CC_STDC
+
+dnl determine c++ compiler
+AC_PROG_CXX
+dnl determine if c++ is available on this system
+AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
+
+dnl check if the compiler supports '-c' and '-o' options
+AM_PROG_CC_C_O
+
+AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
+AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
+
+dnl check if the compiler supports do while(0) macros
+AG_GST_CHECK_DOWHILE_MACROS
+
+dnl check for documentation tools
+GTK_DOC_CHECK([1.3])
+AS_PATH_PYTHON([2.1])
+AG_GST_PLUGIN_DOCS([1.3],[2.1])
+
+dnl *** checks for libraries ***
+
+dnl check for libm, for sin()
+AC_CHECK_LIBM
+AC_SUBST(LIBM)
+
+dnl *** checks for header files ***
+
+dnl used by ext/a52dec
+AX_CREATE_STDINT_H
+
+dnl Check for malloc.h
+AC_CHECK_HEADERS([malloc.h])
+
+dnl *** checks for types/defines ***
+
+dnl *** checks for structures ***
+
+dnl *** checks for compiler characteristics ***
+
+dnl *** checks for library functions ***
+
+dnl Check for a way to display the function name in debug output
+AG_GST_CHECK_FUNCTION
+
+dnl *** checks for dependency libraries ***
+
+dnl GLib is required
+AG_GST_GLIB_CHECK([2.24])
+ORC_CHECK([0.4.11])
+
+dnl checks for gstreamer
+dnl uninstalled is selected preferentially -- see pkg-config(1)
+AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ], yes)
+AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ], yes)
+AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
+AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], yes)
+AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
+
+dnl Check for documentation xrefs
+GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
+GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
+GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
+AC_SUBST(GLIB_PREFIX)
+AC_SUBST(GST_PREFIX)
+AC_SUBST(GSTPB_PREFIX)
+
+dnl *** set variables based on configure arguments ***
+
+dnl set license and copyright notice
+GST_LICENSE="LGPL"
+AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
+AC_SUBST(GST_LICENSE)
+
+dnl set location of plugin directory
+AG_GST_SET_PLUGINDIR
+
+dnl set release date/time
+AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
+  ["${srcdir}/gst-plugins-ugly.doap"],
+  [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
+
+dnl define an ERROR_CFLAGS Makefile variable
+AG_GST_SET_ERROR_CFLAGS($GST_GIT, [
+    -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
+    -Winit-self -Wmissing-include-dirs -Waddress
+    -Waggregate-return -Wno-multichar -Wnested-externs ])
+
+dnl define an ERROR_CXXFLAGS Makefile variable
+AG_GST_SET_ERROR_CXXFLAGS($GST_GIT, [
+    -Wmissing-declarations -Wredundant-decls
+    -Wwrite-strings -Wformat-nonliteral -Wformat-security
+    -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return
+    -Wno-multichar])
+
+dnl define correct level for debugging messages
+AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
+
+dnl used in examples
+AG_GST_DEFAULT_ELEMENTS
+
+dnl these are all the gst plug-ins, compilable without additional libs
+AG_GST_CHECK_PLUGIN(asfdemux)
+AG_GST_CHECK_PLUGIN(dvdlpcmdec)
+AG_GST_CHECK_PLUGIN(dvdsub)
+AG_GST_CHECK_PLUGIN(iec958)
+AG_GST_CHECK_PLUGIN(mpegaudioparse)
+AG_GST_CHECK_PLUGIN(mpegstream)
+AG_GST_CHECK_PLUGIN(realmedia)
+AG_GST_CHECK_PLUGIN(synaesthesia)
+
+AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
+
+if test "x$HAVE_WINSOCK2_H" = "xyes"; then
+  WIN32_LIBS="-lws2_32"
+  AC_SUBST(WIN32_LIBS)
+fi
+
+dnl disable experimental plug-ins
+if test "x$BUILD_EXPERIMENTAL" != "xyes"; then
+  AG_GST_DISABLE_PLUGIN(synaesthesia)
+fi
+
+dnl *** ext plug-ins ***
+dnl keep this list sorted alphabetically !
+
+if test "x$BUILD_EXTERNAL" = "xyes"; then
+
+echo
+AC_MSG_NOTICE([Checking libraries for plugins in ext/])
+echo
+
+dnl *** a52dec ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_A52DEC, true)
+AG_GST_CHECK_FEATURE(A52DEC, [a52dec], a52dec, [
+  AC_CHECK_A52DEC(HAVE_A52DEC=yes, HAVE_A52DEC=no)
+])
+
+dnl *** amr-nb ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_AMRNB, true)
+AG_GST_CHECK_FEATURE(AMRNB, [amrnb library], amrnb, [
+  PKG_CHECK_MODULES(AMRNB, opencore-amrnb, HAVE_AMRNB="yes",
+      [ AG_GST_CHECK_LIBHEADER(AMRNB, opencore-amrnb,
+                          Decoder_Interface_init, $LIBM,
+                          opencore-amrnb/interf_dec.h,
+                          AMRNB_LIBS="-lopencore-amrnb")
+      ])
+  AC_SUBST(AMRNB_CFLAGS)
+  AC_SUBST(AMRNB_LIBS)
+])
+
+dnl *** amr-wb dec ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_AMRWB, true)
+AG_GST_CHECK_FEATURE(AMRWB, [amrwb library], amrwbdec, [
+  PKG_CHECK_MODULES(AMRWB, opencore-amrwb, HAVE_AMRWB="yes",
+      [ AG_GST_CHECK_LIBHEADER(AMRWB, opencore-amrwb,
+                          D_IF_decode, ,
+                          opencore-amrwb/dec_if.h,
+                          AMRWB_LIBS="-lopencore-amrwb")
+      ])
+  AC_SUBST(AMRWB_CFLAGS)
+  AC_SUBST(AMRWB_LIBS)
+])
+
+dnl *** cdio ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_CDIO, true)
+AG_GST_CHECK_FEATURE(CDIO, [cdio library], cdio, [
+  AG_GST_PKG_CHECK_MODULES(CDIO, libcdio >= 0.76)
+])
+
+dnl *** dvdread ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_DVDREAD, true)
+AG_GST_CHECK_FEATURE(DVDREAD, [dvdread library], dvdreadsrc, [
+  AG_GST_CHECK_LIBHEADER(DVDREAD, dvdread, DVDOpen, , dvdread/dvd_reader.h, DVDREAD_LIBS="-ldvdread")
+  AC_SUBST(DVDREAD_LIBS)
+])
+
+dnl *** lame ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true)
+AG_GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [
+  AG_GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, $LIBM, lame/lame.h,
+  [
+    HAVE_LAME="yes"
+    LAME_LIBS="-lmp3lame $LIBM"
+    dnl is lame presets available
+    LAME_CFLAGS=""
+    AC_TRY_COMPILE([#include <lame/lame.h>], [ int preset = MEDIUM ],
+      [LAME_CFLAGS="-DGSTLAME_PRESET"],
+      [LAME_CFLAGS=""]
+    )
+    AC_TRY_COMPILE([#include <lame/lame.h>], [
+        void *ptr = &lame_set_VBR_quality
+      ],
+      [LAME_CFLAGS="$LAME_CFLAGS -DHAVE_LAME_SET_VBR_QUALITY"],
+      [LAME_CFLAGS="$LAME_CFLAGS"]
+    )
+  AC_SUBST(LAME_CFLAGS)
+  AC_SUBST(LAME_LIBS)
+  ])
+])
+
+dnl *** mad ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_MAD, true)
+AG_GST_CHECK_FEATURE(MAD, [mad mp3 decoder], mad, [
+
+  dnl check with pkg-config first
+  AG_GST_PKG_CHECK_MODULES(MAD, mad >= 0.15)
+  MAD_LIBS="$MAD_LIBS"
+  if test "x$HAVE_MAD" = "xno"; then
+    dnl fall back to oldskool detection
+    AC_CHECK_HEADER(mad.h, [
+      AC_CHECK_LIB(mad, mad_decoder_finish,
+        HAVE_MAD="yes" MAD_LIBS="-lmad")
+    ])
+  fi
+])
+AC_SUBST(MAD_LIBS)
+
+dnl *** mpeg2dec ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2DEC, true)
+AG_GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
+  AG_GST_PKG_CHECK_MODULES(MPEG2DEC, libmpeg2 >= 0.4.0)
+])
+
+dnl *** sidplay : works with libsidplay 1.36.x (not 2.x.x) ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_SIDPLAY, true)
+AG_GST_CHECK_FEATURE(SIDPLAY, [libsidplay], sid, [
+  GST_PATH_SIDPLAY()
+])
+
+dnl *** twolame ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_TWOLAME, true)
+AG_GST_CHECK_FEATURE(TWOLAME, [twolame], twolame, [
+  PKG_CHECK_MODULES(TWOLAME, twolame >= 0.3.10, [
+      HAVE_TWOLAME="yes"], [
+      HAVE_TWOLAME="no"
+  ])
+  AC_SUBST(TWOLAME_CFLAGS)
+  AC_SUBST(TWOLAME_LIBS)
+])
+
+dnl *** x264 (MPEG-4 part 10/h.264/AVC encoder) ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_X264, true)
+AG_GST_CHECK_FEATURE(X264, [x264 plug-in], x264, [
+  AG_GST_PKG_CHECK_MODULES(X264, x264 >= 0.55.0)
+])
+
+else
+
+dnl not building plugins with external dependencies,
+dnl but we still need to set the conditionals
+
+AM_CONDITIONAL(USE_A52DEC, false)
+AM_CONDITIONAL(USE_AMRNB, false)
+AM_CONDITIONAL(USE_AMRWB, false)
+AM_CONDITIONAL(USE_CDIO, false)
+AM_CONDITIONAL(USE_DVDREAD, false)
+AM_CONDITIONAL(USE_LAME, false)
+AM_CONDITIONAL(USE_MAD, false)
+AM_CONDITIONAL(USE_MPEG2DEC, false)
+AM_CONDITIONAL(USE_SIDPLAY, false)
+AM_CONDITIONAL(USE_TWOLAME, false)
+AM_CONDITIONAL(USE_X264, false)
+
+fi dnl of EXT plugins
+
+dnl *** finalize CFLAGS, LDFLAGS, LIBS
+
+dnl Overview:
+dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
+dnl GST_*:              flags shared by built objects to link against GStreamer
+dnl GST_ALL_LDFLAGS:    linker flags shared by all
+dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
+dnl GST_LT_LDFLAGS:     library versioning of our libraries
+dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
+
+dnl GST_OPTION_CFLAGS
+if test "x$USE_DEBUG" = xyes; then
+   PROFILE_CFLAGS="-g"
+fi
+AC_SUBST(PROFILE_CFLAGS)
+
+if test "x$PACKAGE_VERSION_NANO" = "x1"; then
+  dnl Define _only_ during CVS (not pre-releases or releases)
+  DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
+else
+  DEPRECATED_CFLAGS=""
+fi
+AC_SUBST(DEPRECATED_CFLAGS)
+
+dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
+dnl at make time with e.g. make ERROR_CFLAGS=""
+GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
+GST_OPTION_CXXFLAGS="\$(WARNING_CXXFLAGS) \$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
+AC_SUBST(GST_OPTION_CFLAGS)
+AC_SUBST(GST_OPTION_CXXFLAGS)
+
+dnl FIXME: do we want to rename to GST_ALL_* ?
+dnl prefer internal headers to already installed ones
+dnl also add builddir include for enumtypes and marshal
+dnl add GST_OPTION_CFLAGS, but overridable
+GST_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
+GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
+AC_SUBST(GST_CFLAGS)
+AC_SUBST(GST_CXXFLAGS)
+AC_SUBST(GST_LIBS)
+
+dnl LDFLAGS really should only contain flags, not libs - they get added before
+dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
+GST_ALL_LDFLAGS="-no-undefined"
+AC_SUBST(GST_ALL_LDFLAGS)
+
+dnl this really should only contain flags, not libs - they get added before
+dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
+GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
+AC_SUBST(GST_PLUGIN_LDFLAGS)
+
+dnl *** output files ***
+
+AC_CONFIG_FILES(
+Makefile
+common/Makefile
+common/m4/Makefile
+gst-libs/Makefile
+gst-libs/gst/Makefile
+gst/Makefile
+gst/asfdemux/Makefile
+gst/dvdlpcmdec/Makefile
+gst/dvdsub/Makefile
+gst/iec958/Makefile
+gst/mpegaudioparse/Makefile
+gst/mpegstream/Makefile
+gst/realmedia/Makefile
+gst/synaesthesia/Makefile
+ext/Makefile
+ext/a52dec/Makefile
+ext/amrnb/Makefile
+ext/amrwbdec/Makefile
+ext/cdio/Makefile
+ext/dvdread/Makefile
+ext/lame/Makefile
+ext/mad/Makefile
+ext/mpeg2dec/Makefile
+ext/sidplay/Makefile
+ext/twolame/Makefile
+ext/x264/Makefile
+docs/Makefile
+docs/plugins/Makefile
+docs/version.entities
+tests/Makefile
+tests/check/Makefile
+m4/Makefile
+po/Makefile.in
+pkgconfig/Makefile
+pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
+gst-plugins-ugly.spec
+)
+
+dnl Create the config.h file for Visual Studio builds
+dnl Beware of spaces and /'s in some of the shell variable contents.
+sed \
+    -e 's/.*config.h.in.*autoheader.*/\/* Autogenerated config.h created for win32 Visual Studio builds *\/\n\n\/* PREFIX -- specifically added for Windows for easier moving *\/\n#define PREFIX "C:\\\\gstreamer"\n\n/' \
+    -e 's/.* GETTEXT_PACKAGE$/#define GETTEXT_PACKAGE "'$GETTEXT_PACKAGE'"/' \
+    -e 's/.* GST_DATADIR$/#define GST_DATADIR PREFIX "\\\\share"/' \
+    -e 's/.* GST_LEVEL_DEFAULT$/#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR/' \
+    -e 's/.* GST_LICENSE$/#define GST_LICENSE "'$GST_LICENSE'"/' \
+    -e 's/.* GST_MAJORMINOR$/#define GST_MAJORMINOR "'$GST_MAJORMINOR'"/' \
+    -e "s,.* GST_PACKAGE_NAME$,#define GST_PACKAGE_NAME \"${GST_PACKAGE_NAME}\"," \
+    -e 's/.* GST_PACKAGE_ORIGIN$/#define GST_PACKAGE_ORIGIN "Unknown package origin"/' \
+    -e "s,.* GST_PACKAGE_RELEASE_DATETIME$,#define GST_PACKAGE_RELEASE_DATETIME \"${GST_PACKAGE_RELEASE_DATETIME}\"," \
+    -e 's/.* HAVE_CPU_I386$/#define HAVE_CPU_I386 1/' \
+    -e 's/.* HAVE_FGETPOS$/#define HAVE_FGETPOS 1/' \
+    -e 's/.* HAVE_FSETPOS$/#define HAVE_FSETPOS 1/' \
+    -e 's/.* HAVE_LIBXML2$/#define HAVE_LIBXML2 1/' \
+    -e 's/.* HAVE_PROCESS_H$/#define HAVE_PROCESS_H 1/' \
+    -e 's/.* HAVE_STDLIB_H$/#define HAVE_STDLIB_H 1/' \
+    -e 's/.* HAVE_STRING_H$/#define HAVE_STRING_H 1/' \
+    -e 's/.* HAVE_SYS_STAT_H$/#define HAVE_SYS_STAT_H 1/' \
+    -e 's/.* HAVE_SYS_TYPES_H$/#define HAVE_SYS_TYPES_H 1/' \
+    -e 's/.* HAVE_WIN32$/#define HAVE_WIN32 1/' \
+    -e 's/.* HAVE_WINSOCK2_H$/#define HAVE_WINSOCK2_H 1/' \
+    -e 's/.* HOST_CPU$/#define HOST_CPU "i686"/' \
+    -e 's/.* LIBDIR$/#ifdef _DEBUG\n#  define LIBDIR PREFIX "\\\\debug\\\\lib"\n#else\n#  define LIBDIR PREFIX "\\\\lib"\n#endif/' \
+    -e 's/.* LOCALEDIR$/#define LOCALEDIR PREFIX "\\\\share\\\\locale"/' \
+    -e "s/.* PACKAGE$/#define PACKAGE \"$PACKAGE\"/" \
+    -e 's/.* PACKAGE_BUGREPORT$/#define PACKAGE_BUGREPORT "http:\/\/bugzilla.gnome.org\/enter_bug.cgi?product=GStreamer"/' \
+    -e "s/.* PACKAGE_NAME$/#define PACKAGE_NAME \"$PACKAGE_NAME\"/" \
+    -e "s/.* PACKAGE_STRING$/#define PACKAGE_STRING \"$PACKAGE_STRING\"/" \
+    -e 's/.* PACKAGE_TARNAME$/#define PACKAGE_TARNAME "'$PACKAGE_TARNAME'"/' \
+    -e 's/.* PACKAGE_VERSION$/#define PACKAGE_VERSION "'$PACKAGE_VERSION'"/' \
+    -e 's/.* PLUGINDIR$/#ifdef _DEBUG\n#  define PLUGINDIR PREFIX "\\\\debug\\\\lib\\\\gstreamer-0.10"\n#else\n#  define PLUGINDIR PREFIX "\\\\lib\\\\gstreamer-0.10"\n#endif/' \
+    -e 's/.* USE_BINARY_REGISTRY$/#define USE_BINARY_REGISTRY/' \
+    -e 's/.* VERSION$/#define VERSION "'$VERSION'"/' \
+    -e "s/.* DEFAULT_AUDIOSINK$/#define DEFAULT_AUDIOSINK \"directsoundsink\"/" \
+    -e "s/.* DEFAULT_AUDIOSRC$/#define DEFAULT_AUDIOSRC \"audiotestsrc\"/" \
+    -e "s/.* DEFAULT_VIDEOSRC$/#define DEFAULT_VIDEOSRC \"videotestsrc\"/" \
+    -e "s/.* DEFAULT_VISUALIZER$/#define DEFAULT_VISUALIZER \"goom\"/" \
+    config.h.in >win32/common/config.h-new
+
+AC_OUTPUT
+
+AG_GST_OUTPUT_PLUGINS
+
+ORC_OUTPUT
diff --git a/depcomp b/depcomp
new file mode 100755 (executable)
index 0000000..bd0ac08
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,688 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2011-12-04.11; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputting dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
+fi
+
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/      \1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/        /
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644 (file)
index 0000000..2b9075b
--- /dev/null
@@ -0,0 +1,12 @@
+if ENABLE_GTK_DOC
+GTK_DOC_DIRS = plugins
+else
+GTK_DOC_DIRS =
+endif
+
+SUBDIRS = $(GTK_DOC_DIRS)
+DIST_SUBDIRS = plugins
+
+EXTRA_DIST = \
+        random/ChangeLog-0.8 \
+        version.entities.in
diff --git a/docs/Makefile.in b/docs/Makefile.in
new file mode 100644 (file)
index 0000000..83aae6e
--- /dev/null
@@ -0,0 +1,732 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = docs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/version.entities.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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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 = version.entities
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+@ENABLE_GTK_DOC_FALSE@GTK_DOC_DIRS = 
+@ENABLE_GTK_DOC_TRUE@GTK_DOC_DIRS = plugins
+SUBDIRS = $(GTK_DOC_DIRS)
+DIST_SUBDIRS = plugins
+EXTRA_DIST = \
+        random/ChangeLog-0.8 \
+        version.entities.in
+
+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 docs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu docs/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):
+version.entities: $(top_builddir)/config.status $(srcdir)/version.entities.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
new file mode 100644 (file)
index 0000000..90ed4b5
--- /dev/null
@@ -0,0 +1,99 @@
+GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj
+
+## Process this file with automake to produce Makefile.in
+
+# The name of the module, e.g. 'glib'.
+#DOC_MODULE=gst-plugins-libs-@GST_MAJORMINOR@
+MODULE=gst-plugins-ugly
+DOC_MODULE=$(MODULE)-plugins
+
+# for upload-doc.mak
+DOC=$(MODULE)-plugins
+FORMATS=html
+html: html-build.stamp
+include $(top_srcdir)/common/upload-doc.mak
+
+# The top-level SGML file. Change it if you want.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(top_srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting functions and macros.
+DOC_SOURCE_DIR = $(top_srcdir)/gst $(top_srcdir)/ext
+
+# Extra options to supply to gtkdoc-scan.
+SCAN_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkdb.
+MKDB_OPTIONS=--sgml-mode --source-suffixes=c,h,cc,m
+
+# Extra options to supply to gtkdoc-fixref.
+FIXXREF_OPTIONS=--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
+       --extra-dir=$(GST_PREFIX)/share/gtk-doc/html \
+       --extra-dir=$(GSTPB_PREFIX)/share/gtk-doc/html
+
+# Used for dependencies.
+HFILE_GLOB= \
+  $(top_srcdir)/gst/*/*.h $(top_srcdir)/ext/*/*.h
+CFILE_GLOB= \
+  $(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $ $(top_srcdir)/ext/*/*.cc
+
+# Header files to ignore when scanning.
+IGNORE_HFILES = 
+IGNORE_CFILES =
+
+# we add all .h files of elements that have signals/args we want
+# sadly this also pulls in the private methods - maybe we should
+# move those around in the source ?
+# also, we should add some stuff here conditionally based on whether
+# or not the plugin will actually build
+# but I'm not sure about that - it might be this Just Works given that
+# the registry won't have the element
+
+# FIXME: not ported yet
+#      $(top_srcdir)/ext/gnomevfs/gstgnomevfssink.c 
+
+EXTRA_HFILES = \
+       $(top_srcdir)/ext/a52dec/gsta52dec.h \
+       $(top_srcdir)/ext/amrnb/amrnbdec.h \
+       $(top_srcdir)/ext/amrnb/amrnbenc.h \
+       $(top_srcdir)/ext/amrwbdec/amrwbdec.h \
+       $(top_srcdir)/ext/cdio/gstcdiocddasrc.h \
+       $(top_srcdir)/ext/lame/gstlame.h \
+       $(top_srcdir)/ext/lame/gstlamemp3enc.h \
+       $(top_srcdir)/ext/mad/gstmad.h \
+       $(top_srcdir)/ext/sidplay/gstsiddec.h \
+       $(top_srcdir)/ext/twolame/gsttwolame.h \
+       $(top_srcdir)/ext/x264/gstx264enc.h \
+       $(top_srcdir)/gst/asfdemux/gstrtspwms.h \
+       $(top_srcdir)/gst/mpegaudioparse/gstmpegaudioparse.h \
+       $(top_srcdir)/gst/mpegaudioparse/gstxingmux.h \
+       $(top_srcdir)/gst/realmedia/rademux.h \
+       $(top_srcdir)/gst/realmedia/rdtmanager.h \
+       $(top_srcdir)/gst/realmedia/rmdemux.h \
+       $(top_srcdir)/gst/realmedia/rtspreal.h \
+       $(top_srcdir)/gst/synaesthesia/gstsynaesthesia.h
+
+# Images to copy into HTML directory.
+HTML_IMAGES =
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+content_files =
+
+# Other files to distribute.
+extra_files =
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
+# contains GtkObjects/GObjects and you want to document signals and properties.
+GTKDOC_CFLAGS = $(GST_BASE_CFLAGS) -I$(top_builddir)
+GTKDOC_LIBS = $(GST_BASE_LIBS)
+
+GTKDOC_CC=$(LIBTOOL) --tag=CC --mode=compile $(CC)
+GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=link $(CC)
+
+# If you need to override some of the declarations, place them in this file
+# and uncomment this line.
+#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
+DOC_OVERRIDES =
+
+include $(top_srcdir)/common/gtk-doc-plugins.mak
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
new file mode 100644 (file)
index 0000000..9517753
--- /dev/null
@@ -0,0 +1,1072 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+
+# this snippet is to be included by both our docbook manuals
+# and gtk-doc API references
+
+# it adds an upload target to each of these dir's Makefiles
+
+# each Makefile.am should define the following variables:
+# - DOC: the base name of the documentation
+#        (faq, manual, pwg, gstreamer, gstreamer-libs)
+# - FORMATS: the formats in which DOC is output
+#            (html ps pdf)
+
+# if you want to use it, make sure your $HOME/.ssh/config file contains the
+# correct User entry for the Host entry for the DOC_SERVER
+
+# This is an include file specifically tuned for building documentation
+# for GStreamer plug-ins
+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@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/common/gtk-doc-plugins.mak \
+       $(top_srcdir)/common/upload-doc.mak
+subdir = docs/plugins
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj
+
+# The name of the module, e.g. 'glib'.
+#DOC_MODULE=gst-plugins-libs-@GST_MAJORMINOR@
+MODULE = gst-plugins-ugly
+DOC_MODULE = $(MODULE)-plugins
+
+# for upload-doc.mak
+DOC = $(MODULE)-plugins
+FORMATS = html
+
+# these variables define the location of the online docs
+DOC_SERVER = gstreamer.freedesktop.org
+DOC_BASE = /srv/gstreamer.freedesktop.org/www/data/doc
+DOC_URL = $(DOC_SERVER):$(DOC_BASE)
+
+# The top-level SGML file. Change it if you want.
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(top_srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting functions and macros.
+DOC_SOURCE_DIR = $(top_srcdir)/gst $(top_srcdir)/ext
+
+# Extra options to supply to gtkdoc-scan.
+SCAN_OPTIONS = 
+
+# Extra options to supply to gtkdoc-mkdb.
+MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc,m
+
+# Extra options to supply to gtkdoc-fixref.
+FIXXREF_OPTIONS = --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
+       --extra-dir=$(GST_PREFIX)/share/gtk-doc/html \
+       --extra-dir=$(GSTPB_PREFIX)/share/gtk-doc/html
+
+
+# Used for dependencies.
+HFILE_GLOB = \
+  $(top_srcdir)/gst/*/*.h $(top_srcdir)/ext/*/*.h
+
+CFILE_GLOB = \
+  $(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $ $(top_srcdir)/ext/*/*.cc
+
+
+# Header files to ignore when scanning.
+IGNORE_HFILES = 
+IGNORE_CFILES = 
+
+# we add all .h files of elements that have signals/args we want
+# sadly this also pulls in the private methods - maybe we should
+# move those around in the source ?
+# also, we should add some stuff here conditionally based on whether
+# or not the plugin will actually build
+# but I'm not sure about that - it might be this Just Works given that
+# the registry won't have the element
+
+# FIXME: not ported yet
+#      $(top_srcdir)/ext/gnomevfs/gstgnomevfssink.c 
+EXTRA_HFILES = \
+       $(top_srcdir)/ext/a52dec/gsta52dec.h \
+       $(top_srcdir)/ext/amrnb/amrnbdec.h \
+       $(top_srcdir)/ext/amrnb/amrnbenc.h \
+       $(top_srcdir)/ext/amrwbdec/amrwbdec.h \
+       $(top_srcdir)/ext/cdio/gstcdiocddasrc.h \
+       $(top_srcdir)/ext/lame/gstlame.h \
+       $(top_srcdir)/ext/lame/gstlamemp3enc.h \
+       $(top_srcdir)/ext/mad/gstmad.h \
+       $(top_srcdir)/ext/sidplay/gstsiddec.h \
+       $(top_srcdir)/ext/twolame/gsttwolame.h \
+       $(top_srcdir)/ext/x264/gstx264enc.h \
+       $(top_srcdir)/gst/asfdemux/gstrtspwms.h \
+       $(top_srcdir)/gst/mpegaudioparse/gstmpegaudioparse.h \
+       $(top_srcdir)/gst/mpegaudioparse/gstxingmux.h \
+       $(top_srcdir)/gst/realmedia/rademux.h \
+       $(top_srcdir)/gst/realmedia/rdtmanager.h \
+       $(top_srcdir)/gst/realmedia/rmdemux.h \
+       $(top_srcdir)/gst/realmedia/rtspreal.h \
+       $(top_srcdir)/gst/synaesthesia/gstsynaesthesia.h
+
+
+# Images to copy into HTML directory.
+HTML_IMAGES = 
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+content_files = 
+
+# Other files to distribute.
+extra_files = 
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
+# contains GtkObjects/GObjects and you want to document signals and properties.
+GTKDOC_CFLAGS = $(GST_BASE_CFLAGS) -I$(top_builddir)
+GTKDOC_LIBS = $(GST_BASE_LIBS)
+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC)
+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC)
+
+# If you need to override some of the declarations, place them in this file
+# and uncomment this line.
+#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
+DOC_OVERRIDES = 
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+# thomas: make docs parallel installable
+TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@
+MAINTAINER_DOC_STAMPS = \
+       scanobj-build.stamp
+
+EXTRA_DIST = \
+       $(MAINTAINER_DOC_STAMPS)                \
+       $(srcdir)/inspect/*.xml         \
+       $(SCANOBJ_FILES)                \
+       $(content_files)                \
+       $(extra_files)                  \
+       $(HTML_IMAGES)                  \
+       $(DOC_MAIN_SGML_FILE)   \
+       $(DOC_OVERRIDES)                \
+       $(DOC_MODULE)-sections.txt
+
+
+# we don't add scanobj-build.stamp here since they are built manually by docs
+# maintainers and result is commited to git
+DOC_STAMPS = \
+       scan-build.stamp                \
+       tmpl-build.stamp                \
+       sgml-build.stamp                \
+       html-build.stamp                \
+       scan.stamp                      \
+       tmpl.stamp                      \
+       sgml.stamp                      \
+       html.stamp
+
+
+# files generated/updated by gtkdoc-scangobj
+SCANOBJ_FILES = \
+       $(DOC_MODULE).args              \
+       $(DOC_MODULE).hierarchy         \
+       $(DOC_MODULE).interfaces        \
+       $(DOC_MODULE).prerequisites     \
+       $(DOC_MODULE).signals           \
+       $(DOC_MODULE).types
+
+SCANOBJ_FILES_O = \
+       .libs/$(DOC_MODULE)-scan.o
+
+
+# files generated/updated by gtkdoc-scan
+SCAN_FILES = \
+       $(DOC_MODULE)-sections.txt      \
+       $(DOC_MODULE)-overrides.txt     \
+       $(DOC_MODULE)-decl.txt          \
+       $(DOC_MODULE)-decl-list.txt
+
+REPORT_FILES = \
+       $(DOC_MODULE)-undocumented.txt \
+       $(DOC_MODULE)-undeclared.txt \
+       $(DOC_MODULE)-unused.txt
+
+CLEANFILES = \
+       $(SCANOBJ_FILES_O) \
+       $(REPORT_FILES) \
+       $(DOC_STAMPS) \
+       inspect-registry.xml
+
+INSPECT_DIR = inspect
+
+### inspect GStreamer plug-ins; done by documentation maintainer ###
+
+# only look at the plugins in this module when building inspect .xml stuff
+@ENABLE_GTK_DOC_TRUE@INSPECT_REGISTRY = $(top_builddir)/docs/plugins/inspect-registry.xml
+@ENABLE_GTK_DOC_TRUE@INSPECT_ENVIRONMENT = \
+@ENABLE_GTK_DOC_TRUE@  LC_ALL=C \
+@ENABLE_GTK_DOC_TRUE@  GST_PLUGIN_SYSTEM_PATH= \
+@ENABLE_GTK_DOC_TRUE@  GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \
+@ENABLE_GTK_DOC_TRUE@  GST_REGISTRY=$(INSPECT_REGISTRY) \
+@ENABLE_GTK_DOC_TRUE@  PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@ENABLE_GTK_DOC_TRUE@  $(INSPECT_EXTRA_ENVIRONMENT)
+
+MAINTAINERCLEANFILES = $(MAINTAINER_DOC_STAMPS)
+
+# wildcard is apparently not portable to other makes, hence the use of find
+inspect_files = $(shell find $(srcdir)/$(INSPECT_DIR) -name '*.xml')
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak $(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 docs/plugins/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu docs/plugins/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_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak:
+
+$(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
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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
+       $(MAKE) $(AM_MAKEFLAGS) \
+         top_distdir="$(top_distdir)" distdir="$(distdir)" \
+         dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile all-local
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+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."
+       -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool clean-local dist-hook distclean \
+       distclean-generic distclean-libtool distclean-local distdir \
+       dvi dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-data-local 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 \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am uninstall-local
+
+html: html-build.stamp
+
+upload: $(FORMATS)
+       @if echo $(FORMATS) | grep html > /dev/null; then \
+         echo "Preparing docs for upload (rebasing cross-references) ..." ; \
+         if test x$(builddir) != x$(srcdir); then \
+           echo "make upload can only be used if srcdir == builddir"; \
+           exit 1; \
+         fi; \
+         # gtkdoc-rebase sometimes gets confused, so reset everything to \
+         # local links before rebasing to online links                   \
+         gtkdoc-rebase --html-dir=$(builddir)/html 2>/dev/null 2>/dev/null ; \
+         rebase=`gtkdoc-rebase --verbose --online --html-dir=$(builddir)/html` ; \
+         echo "$$rebase" | grep -e "On-*line"; \
+         for req in glib gobject gstreamer gstreamer-libs gst-plugins-base-libs; do \
+           if ! ( echo "$$rebase" | grep -i -e "On-*line.*/$$req/" ); then \
+             echo "===============================================================================" ; \
+             echo " Could not determine online location for $$req docs. Cross-referencing will be " ; \
+             echo " broken, so not uploading. Make sure the library's gtk-doc documentation is    " ; \
+             echo " installed somewhere in /usr/share/gtk-doc.                                    " ; \
+             echo "===============================================================================" ; \
+             exit 1; \
+           fi; \
+         done; \
+         export SRC="$$SRC html"; \
+       fi; \
+       if echo $(FORMATS) | grep ps > /dev/null; then export SRC="$$SRC $(DOC).ps"; fi; \
+       if echo $(FORMATS) | grep pdf > /dev/null; then export SRC="$$SRC $(DOC).pdf"; fi; \
+       \
+       # upload releases to both 0.10.X/ and head/ subdirectories \
+       if test "x$(PACKAGE_VERSION_NANO)" = x0; then \
+         export DIR=$(DOC_BASE)/gstreamer/$(VERSION)/$(DOC); \
+         echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
+         ssh $(DOC_SERVER) mkdir -p $$DIR; \
+         rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
+         ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
+       fi; \
+       \
+       export DIR=$(DOC_BASE)/gstreamer/head/$(DOC); \
+       echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
+       ssh $(DOC_SERVER) mkdir -p $$DIR; \
+       rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
+       ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
+       \
+       if echo $(FORMATS) | grep html > /dev/null; then \
+         echo "Un-preparing docs for upload (rebasing cross-references) ..." ; \
+         gtkdoc-rebase --html-dir=$(builddir)/html ; \
+       fi; \
+       echo Done
+
+help:
+       @echo
+       @echo "If you are a doc maintainer, run 'make update' to update"
+       @echo "the documentation files maintained in git"
+       @echo
+       @echo Other useful make targets:
+       @echo
+       @echo  check-inspected-versions: make sure the inspected plugin info
+       @echo                            is up to date before a release
+       @echo
+
+# update the stuff maintained by doc maintainers
+update:
+       $(MAKE) scanobj-update
+       $(MAKE) check-outdated-docs
+
+@ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp
+
+#### scan gobjects; done by documentation maintainer ####
+@ENABLE_GTK_DOC_TRUE@scanobj-update:
+@ENABLE_GTK_DOC_TRUE@  -rm scanobj-build.stamp
+@ENABLE_GTK_DOC_TRUE@  $(MAKE) scanobj-build.stamp
+
+# gstdoc-scanobj produces 5 output files (.new)
+# scangobj-merge.py merges them into the file which we commit later
+# TODO: also merge the hierarchy
+@ENABLE_GTK_DOC_TRUE@scanobj-build.stamp: $(SCANOBJ_DEPS) $(basefiles)
+@ENABLE_GTK_DOC_TRUE@  @echo "  DOC   Introspecting gobjects"
+@ENABLE_GTK_DOC_TRUE@  @if test x"$(srcdir)" != x. ; then                              \
+@ENABLE_GTK_DOC_TRUE@      for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+@ENABLE_GTK_DOC_TRUE@      do                                                          \
+@ENABLE_GTK_DOC_TRUE@          if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+@ENABLE_GTK_DOC_TRUE@      done;                                                       \
+@ENABLE_GTK_DOC_TRUE@  fi;                                                             \
+@ENABLE_GTK_DOC_TRUE@  mkdir -p $(INSPECT_DIR); \
+@ENABLE_GTK_DOC_TRUE@  scanobj_options=""; \
+@ENABLE_GTK_DOC_TRUE@  if test "x$(V)" = "x1"; then \
+@ENABLE_GTK_DOC_TRUE@      scanobj_options="--verbose"; \
+@ENABLE_GTK_DOC_TRUE@  fi; \
+@ENABLE_GTK_DOC_TRUE@  $(INSPECT_ENVIRONMENT)                                  \
+@ENABLE_GTK_DOC_TRUE@  CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"                             \
+@ENABLE_GTK_DOC_TRUE@  CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)"   \
+@ENABLE_GTK_DOC_TRUE@  LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"                             \
+@ENABLE_GTK_DOC_TRUE@  $(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)"     \
+@ENABLE_GTK_DOC_TRUE@      --module=$(DOC_MODULE) --source=$(PACKAGE) --inspect-dir=$(INSPECT_DIR) &&          \
+@ENABLE_GTK_DOC_TRUE@      echo "  DOC   Merging introspection data" && \
+@ENABLE_GTK_DOC_TRUE@      $(PYTHON)                                           \
+@ENABLE_GTK_DOC_TRUE@      $(top_srcdir)/common/scangobj-merge.py $(DOC_MODULE);       \
+@ENABLE_GTK_DOC_TRUE@  if test x"$(srcdir)" != x. ; then                               \
+@ENABLE_GTK_DOC_TRUE@      for f in $(SCANOBJ_FILES);                                  \
+@ENABLE_GTK_DOC_TRUE@      do                                                          \
+@ENABLE_GTK_DOC_TRUE@          cmp -s ./$$f $(srcdir)/$$f || cp ./$$f $(srcdir)/ ;             \
+@ENABLE_GTK_DOC_TRUE@      done;                                                       \
+@ENABLE_GTK_DOC_TRUE@  fi;                                                             \
+@ENABLE_GTK_DOC_TRUE@  touch scanobj-build.stamp
+
+@ENABLE_GTK_DOC_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(SCANOBJ_FILES_O): scan-build.stamp
+@ENABLE_GTK_DOC_TRUE@  @true
+
+### scan headers; done on every build ###
+@ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(EXTRA_HFILES) $(basefiles) scanobj-build.stamp
+@ENABLE_GTK_DOC_TRUE@  @echo '  DOC   Scanning header files'
+@ENABLE_GTK_DOC_TRUE@  @if test x"$(srcdir)" != x. ; then                              \
+@ENABLE_GTK_DOC_TRUE@      for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+@ENABLE_GTK_DOC_TRUE@      do                                                          \
+@ENABLE_GTK_DOC_TRUE@          if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+@ENABLE_GTK_DOC_TRUE@      done;                                                       \
+@ENABLE_GTK_DOC_TRUE@  fi
+@ENABLE_GTK_DOC_TRUE@  @_source_dir='' ;                                               \
+@ENABLE_GTK_DOC_TRUE@  for i in $(DOC_SOURCE_DIR) ; do                                 \
+@ENABLE_GTK_DOC_TRUE@      _source_dir="$${_source_dir} --source-dir=$$i" ;            \
+@ENABLE_GTK_DOC_TRUE@  done ;                                                          \
+@ENABLE_GTK_DOC_TRUE@  gtkdoc-scan                                                     \
+@ENABLE_GTK_DOC_TRUE@      $(SCAN_OPTIONS) $(EXTRA_HFILES)                             \
+@ENABLE_GTK_DOC_TRUE@      --module=$(DOC_MODULE)                                      \
+@ENABLE_GTK_DOC_TRUE@      $${_source_dir}                                             \
+@ENABLE_GTK_DOC_TRUE@      --ignore-headers="$(IGNORE_HFILES)";                        \
+@ENABLE_GTK_DOC_TRUE@  touch scan-build.stamp
+
+#### update templates; done on every build ####
+
+# in a non-srcdir build, we need to copy files from the previous step
+# and the files from previous runs of this step
+@ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
+@ENABLE_GTK_DOC_TRUE@  @echo '  DOC   Rebuilding template files'
+@ENABLE_GTK_DOC_TRUE@  @if test x"$(srcdir)" != x. ; then                              \
+@ENABLE_GTK_DOC_TRUE@      for f in $(SCANOBJ_FILES) $(SCAN_FILES);                    \
+@ENABLE_GTK_DOC_TRUE@      do                                                          \
+@ENABLE_GTK_DOC_TRUE@          if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;      \
+@ENABLE_GTK_DOC_TRUE@      done;                                                       \
+@ENABLE_GTK_DOC_TRUE@  fi
+@ENABLE_GTK_DOC_TRUE@  @gtkdoc-mktmpl --module=$(DOC_MODULE)
+@ENABLE_GTK_DOC_TRUE@  @$(PYTHON) \
+@ENABLE_GTK_DOC_TRUE@          $(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl
+@ENABLE_GTK_DOC_TRUE@  @touch tmpl-build.stamp
+
+@ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
+@ENABLE_GTK_DOC_TRUE@  @true
+
+#### xml ####
+
+@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
+@ENABLE_GTK_DOC_TRUE@  @echo '  DOC   Building XML'
+@ENABLE_GTK_DOC_TRUE@  @-mkdir -p xml
+@ENABLE_GTK_DOC_TRUE@  @for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \
+@ENABLE_GTK_DOC_TRUE@      xsltproc --stringparam module $(MODULE) \
+@ENABLE_GTK_DOC_TRUE@          $(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
+@ENABLE_GTK_DOC_TRUE@  @for f in $(EXAMPLE_CFILES); do \
+@ENABLE_GTK_DOC_TRUE@          $(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
+@ENABLE_GTK_DOC_TRUE@  @gtkdoc-mkdb \
+@ENABLE_GTK_DOC_TRUE@          --module=$(DOC_MODULE) \
+@ENABLE_GTK_DOC_TRUE@          --source-dir=$(DOC_SOURCE_DIR) \
+@ENABLE_GTK_DOC_TRUE@           --expand-content-files="$(expand_content_files)" \
+@ENABLE_GTK_DOC_TRUE@          --main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
+@ENABLE_GTK_DOC_TRUE@          --output-format=xml \
+@ENABLE_GTK_DOC_TRUE@          --ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \
+@ENABLE_GTK_DOC_TRUE@          $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@  @cp ../version.entities xml
+@ENABLE_GTK_DOC_TRUE@  @touch sgml-build.stamp
+
+@ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp
+@ENABLE_GTK_DOC_TRUE@  @true
+
+#### html ####
+
+@ENABLE_GTK_DOC_TRUE@html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+@ENABLE_GTK_DOC_TRUE@  @echo '  DOC   Building HTML'
+@ENABLE_GTK_DOC_TRUE@  @rm -rf html
+@ENABLE_GTK_DOC_TRUE@  @mkdir html
+@ENABLE_GTK_DOC_TRUE@  @cp $(srcdir)/$(DOC_MAIN_SGML_FILE) html
+@ENABLE_GTK_DOC_TRUE@  @for f in $(content_files); do cp $(srcdir)/$$f html; done
+@ENABLE_GTK_DOC_TRUE@  @cp -pr xml html
+@ENABLE_GTK_DOC_TRUE@  @cp ../version.entities html
+@ENABLE_GTK_DOC_TRUE@  @mkhtml_options=""; \
+@ENABLE_GTK_DOC_TRUE@  gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
+@ENABLE_GTK_DOC_TRUE@  if test "$(?)" = "0"; then \
+@ENABLE_GTK_DOC_TRUE@    if test "x$(V)" = "x1"; then \
+@ENABLE_GTK_DOC_TRUE@      mkhtml_options="$$mkhtml_options --verbose"; \
+@ENABLE_GTK_DOC_TRUE@    fi; \
+@ENABLE_GTK_DOC_TRUE@  fi; \
+@ENABLE_GTK_DOC_TRUE@  cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE)
+@ENABLE_GTK_DOC_TRUE@  @mv html/index.sgml html/index.sgml.bak
+@ENABLE_GTK_DOC_TRUE@  @$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_MAJORMINOR@\//g" html/index.sgml.bak >html/index.sgml
+@ENABLE_GTK_DOC_TRUE@  @rm -f html/index.sgml.bak
+@ENABLE_GTK_DOC_TRUE@  @rm -f html/$(DOC_MAIN_SGML_FILE)
+@ENABLE_GTK_DOC_TRUE@  @rm -rf html/xml
+@ENABLE_GTK_DOC_TRUE@  @rm -f html/version.entities
+@ENABLE_GTK_DOC_TRUE@  @test "x$(HTML_IMAGES)" = "x" || for i in "" $(HTML_IMAGES) ; do \
+@ENABLE_GTK_DOC_TRUE@      if test "$$i" != ""; then cp $(srcdir)/$$i html ; fi; done
+@ENABLE_GTK_DOC_TRUE@  @echo '  DOC   Fixing cross-references'
+@ENABLE_GTK_DOC_TRUE@  @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@  @touch html-build.stamp
+
+@ENABLE_GTK_DOC_TRUE@clean-local-gtkdoc:
+@ENABLE_GTK_DOC_TRUE@  @rm -rf xml tmpl html
+# clean files copied for nonsrcdir templates build
+@ENABLE_GTK_DOC_TRUE@  @if test x"$(srcdir)" != x. ; then \
+@ENABLE_GTK_DOC_TRUE@      rm -rf $(SCANOBJ_FILES) $(SCAN_FILES) $(REPORT_FILES) \
+@ENABLE_GTK_DOC_TRUE@          $(MAINTAINER_DOC_STAMPS); \
+@ENABLE_GTK_DOC_TRUE@  fi
+@ENABLE_GTK_DOC_FALSE@all-local:
+@ENABLE_GTK_DOC_FALSE@clean-local-gtkdoc:
+
+clean-local: clean-local-gtkdoc
+       @rm -f *~ *.bak
+       @rm -rf .libs
+
+distclean-local:
+       @rm -f $(REPORT_FILES) \
+               $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+       @rm -rf tmpl/*.sgml.bak
+       @rm -f $(DOC_MODULE).hierarchy
+       @rm -f *.stamp || true
+       @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
+           rm -f $(DOC_MODULE)-docs.sgml ; \
+           rm -f $(DOC_MODULE).types ; \
+           rm -f $(DOC_MODULE).interfaces ; \
+           rm -f $(DOC_MODULE)-overrides.txt ; \
+           rm -f $(DOC_MODULE).prerequisites ; \
+           rm -f $(DOC_MODULE)-sections.txt ; \
+           rm -rf tmpl/*.sgml ; \
+           rm -rf $(INSPECT_DIR); \
+       fi
+       @rm -rf *.o
+
+# thomas: make docs parallel installable; devhelp requires majorminor too
+install-data-local:
+       (installfiles=`echo $(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css`; \
+       if test "$$installfiles" = '$(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css'; \
+       then echo '-- Nothing to install' ; \
+       else \
+         $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+         for i in $$installfiles; do \
+           echo '-- Installing '$$i ; \
+           $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+         done; \
+         pngfiles=`echo ./html/*.png`; \
+         if test "$$pngfiles" != './html/*.png'; then \
+           for i in $$pngfiles; do \
+             echo '-- Installing '$$i ; \
+             $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+           done; \
+         fi; \
+         echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \
+         if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \
+                   $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \
+                   $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_MAJORMINOR@.devhelp2; \
+         fi; \
+         (which gtkdoc-rebase >/dev/null && \
+           gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR)) || true ; \
+       fi)
+uninstall-local:
+       if test -d $(DESTDIR)$(TARGET_DIR); then \
+         rm -rf $(DESTDIR)$(TARGET_DIR)/*; \
+         rmdir -p $(DESTDIR)$(TARGET_DIR) 2>/dev/null || true; \
+       else \
+         echo '-- Nothing to uninstall' ; \
+       fi;
+
+#
+# Checks
+#
+@ENABLE_GTK_DOC_TRUE@check-hierarchy: $(DOC_MODULE).hierarchy
+@ENABLE_GTK_DOC_TRUE@  @if grep '      ' $(DOC_MODULE).hierarchy; then \
+@ENABLE_GTK_DOC_TRUE@      echo "$(DOC_MODULE).hierarchy contains tabs, please fix"; \
+@ENABLE_GTK_DOC_TRUE@      /bin/false; \
+@ENABLE_GTK_DOC_TRUE@  fi
+
+@ENABLE_GTK_DOC_TRUE@check: check-hierarchy
+
+check-inspected-versions:
+       @echo Checking plugin versions of inspected plugin data ...; \
+       fail=0 ; \
+       for each in $(inspect_files) ; do \
+         if (grep -H '<version>' $$each | grep -v '<version>$(VERSION)'); then \
+           echo $$each should be fixed to say version $(VERSION) or be removed ; \
+           echo "sed -i -e 's/<version.*version>/<version>$(VERSION)<\/version>/'" $$each; \
+           echo ; \
+           fail=1; \
+         fi ; \
+       done ; \
+       exit $$fail
+
+check-outdated-docs:
+       $(AM_V_GEN)echo Checking for outdated plugin inspect data ...; \
+       fail=0 ; \
+       if [ -d $(top_srcdir)/.git/ ]; then \
+         files=`find $(srcdir)/inspect/ -name '*xml'`; \
+         for f in $$files; do \
+           ver=`grep '<version>$(PACKAGE_VERSION)</version>' $$f`; \
+           if test "x$$ver" = "x"; then \
+             plugin=`echo $$f | sed -e 's/^.*plugin-//' -e 's/.xml//'`; \
+             # echo "Checking $$plugin $$f"; \
+             pushd "$(top_srcdir)" >/dev/null; \
+             pinit=`git grep -A3 GST_PLUGIN_DEFINE -- ext/ gst/ sys/ | grep "\"$$plugin\""`; \
+             popd >/dev/null; \
+             # echo "[$$pinit]"; \
+             if test "x$$pinit" = "x"; then \
+               printf " **** outdated docs for plugin %-15s: %s\n" $$plugin $$f; \
+               fail=1; \
+             fi; \
+           fi; \
+         done; \
+       fi ; \
+       exit $$fail
+
+#
+# Require gtk-doc when making dist
+#
+@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
+@ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+@ENABLE_GTK_DOC_FALSE@ @false
+
+# FIXME: decide whether we want to dist generated html or not
+# also this only works, if the project has been build before
+# we could dist html only if its there, but that might lead to missing html in
+# tarballs
+dist-hook: dist-check-gtkdoc dist-hook-local
+       mkdir $(distdir)/html
+       cp html/* $(distdir)/html
+       -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+       -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+       cd $(distdir) && rm -f $(DISTCLEANFILES)
+       -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs check-outdated-docs inspect
+
+# avoid spurious build errors when distchecking with -jN
+.NOTPARALLEL:
+
+# 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 --git a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
new file mode 100644 (file)
index 0000000..c5ce321
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY % version-entities SYSTEM "version.entities">
+%version-entities;
+]>
+
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+  <bookinfo>
+    <title>GStreamer Ugly Plugins &GST_MAJORMINOR; Plugins Reference Manual</title>
+    <releaseinfo>
+      for GStreamer Ugly Plugins &GST_MAJORMINOR; (&GST_VERSION;)
+      The latest version of this documentation can be found on-line at
+      <ulink role="online-location" url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/</ulink>.
+    </releaseinfo>
+  </bookinfo>
+
+  <chapter>
+    <title>gst-plugins-ugly Elements</title>
+    <xi:include href="xml/element-a52dec.xml" />
+    <xi:include href="xml/element-amrnbdec.xml" />
+    <xi:include href="xml/element-amrnbenc.xml" />
+    <xi:include href="xml/element-amrwbdec.xml" />
+    <xi:include href="xml/element-cdiocddasrc.xml" />
+    <xi:include href="xml/element-lame.xml" />
+    <xi:include href="xml/element-lamemp3enc.xml" />
+    <xi:include href="xml/element-mad.xml" />
+    <xi:include href="xml/element-mp3parse.xml" />
+    <xi:include href="xml/element-rademux.xml" />
+    <xi:include href="xml/element-rmdemux.xml" />
+    <xi:include href="xml/element-rdtmanager.xml" />
+    <xi:include href="xml/element-rtspreal.xml" />
+    <xi:include href="xml/element-rtspwms.xml" />
+    <xi:include href="xml/element-siddec.xml" />
+    <xi:include href="xml/element-twolame.xml" />
+    <xi:include href="xml/element-synaesthesia.xml" />
+    <xi:include href="xml/element-x264enc.xml" />
+    <xi:include href="xml/element-xingmux.xml" />
+  </chapter>
+
+  <chapter>
+    <title>gst-plugins-ugly Plugins</title>
+    <xi:include href="xml/plugin-a52dec.xml" />
+    <xi:include href="xml/plugin-amrnb.xml" />
+    <xi:include href="xml/plugin-amrwbdec.xml" />
+    <xi:include href="xml/plugin-asf.xml" />
+    <xi:include href="xml/plugin-cdio.xml" />
+    <xi:include href="xml/plugin-dvdlpcmdec.xml" />
+    <xi:include href="xml/plugin-dvdread.xml" />
+    <xi:include href="xml/plugin-dvdsub.xml" />
+    <xi:include href="xml/plugin-iec958.xml" />
+    <xi:include href="xml/plugin-lame.xml" />
+    <xi:include href="xml/plugin-mad.xml" />
+    <xi:include href="xml/plugin-mpeg2dec.xml" />
+    <xi:include href="xml/plugin-mpegaudioparse.xml" />
+    <xi:include href="xml/plugin-mpegstream.xml" />
+    <xi:include href="xml/plugin-realmedia.xml" />
+    <xi:include href="xml/plugin-siddec.xml" />
+    <xi:include href="xml/plugin-synaesthesia.xml" />
+    <xi:include href="xml/plugin-twolame.xml" />
+    <xi:include href="xml/plugin-x264.xml" />
+  </chapter>
+</book>
diff --git a/docs/plugins/gst-plugins-ugly-plugins-sections.txt b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
new file mode 100644 (file)
index 0000000..55f5650
--- /dev/null
@@ -0,0 +1,306 @@
+<SECTION>
+<FILE>element-a52dec</FILE>
+<TITLE>a52dec</TITLE>
+GstA52Dec
+<SUBSECTION Standard>
+A52_2F1R
+A52_2F2R
+A52_3F
+A52_3F1R
+A52_3F2R
+A52_DOLBY
+A52_MONO
+A52_STEREO
+GstA52DecClass
+GST_A52DEC
+GST_A52DEC_CLASS
+GST_IS_A52DEC
+GST_IS_A52DEC_CLASS
+GST_TYPE_A52DEC
+gst_a52dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-amrnbdec</FILE>
+<TITLE>amrnbdec</TITLE>
+GstAmrnbDec
+<SUBSECTION Standard>
+GstAmrnbDecClass
+GstAmrnbVariant
+GST_AMRNBDEC
+GST_AMRNBDEC_CLASS
+GST_IS_AMRNBDEC
+GST_IS_AMRNBDEC_CLASS
+GST_TYPE_AMRNBDEC
+gst_amrnbdec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-amrnbenc</FILE>
+<TITLE>amrnbenc</TITLE>
+GstAmrnbEnc
+<SUBSECTION Standard>
+GstAmrnbEncClass
+GST_AMRNBENC
+GST_AMRNBENC_CLASS
+GST_IS_AMRNBENC
+GST_IS_AMRNBENC_CLASS
+GST_TYPE_AMRNBENC
+gst_amrnbenc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-amrwbdec</FILE>
+<TITLE>amrwbdec</TITLE>
+GstAmrwbDec
+<SUBSECTION Standard>
+GstAmrwbDecClass
+GST_AMRWBDEC
+GST_AMRWBDEC_CLASS
+GST_IS_AMRWBDEC
+GST_IS_AMRWBDEC_CLASS
+GST_TYPE_AMRWBDEC
+gst_amrwbdec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-cdiocddasrc</FILE>
+<TITLE>cdiocddasrc</TITLE>
+GstCdioCddaSrc
+<SUBSECTION Standard>
+GstCdioCddaSrcClass
+GST_TYPE_CDIO_CDDA_SRC
+GST_CDIO_CDDA_SRC
+GST_CDIO_CDDA_SRC_CLASS
+GST_IS_CDIO_CDDA_SRC
+GST_IS_CDIO_CDDA_SRC_CLASS
+gst_cdio_cdda_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-lame</FILE>
+<TITLE>lame</TITLE>
+GstLame
+<SUBSECTION Standard>
+GstLameClass
+GST_LAME
+GST_LAME_CLASS
+GST_IS_LAME
+GST_IS_LAME_CLASS
+GST_TYPE_LAME
+gst_lame_get_type
+gst_lame_register
+</SECTION>
+
+<SECTION>
+<FILE>element-lamemp3enc</FILE>
+<TITLE>lamemp3enc</TITLE>
+GstLameMP3Enc
+<SUBSECTION Standard>
+GstLameMP3EncClass
+GST_LAMEMP3ENC
+GST_LAMEMP3ENC_CLASS
+GST_IS_LAMEMP3ENC
+GST_IS_LAMEMP3ENC_CLASS
+GST_TYPE_LAMEMP3ENC
+gst_lamemp3enc_get_type
+gst_lamemp3enc_register
+</SECTION>
+
+<SECTION>
+<FILE>element-mad</FILE>
+<TITLE>mad</TITLE>
+GstMad
+<SUBSECTION Standard>
+GstMadClass
+GST_MAD
+GST_MAD_CLASS
+GST_IS_MAD
+GST_IS_MAD_CLASS
+GST_TYPE_MAD
+gst_mad_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mp3parse</FILE>
+<TITLE>mp3parse</TITLE>
+GstMPEGAudioParse
+<SUBSECTION Standard>
+GstMPEGAudioParseClass
+MPEGAudioPendingAccurateSeek
+MPEGAudioSeekEntry
+GST_MP3PARSE
+GST_MP3PARSE_CLASS
+GST_IS_MP3PARSE
+GST_IS_MP3PARSE_CLASS
+GST_TYPE_MP3PARSE
+gst_mp3parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rademux</FILE>
+<TITLE>rademux</TITLE>
+GstRealAudioDemux
+<SUBSECTION Standard>
+GstRealAudioDemuxClass
+GstRealAudioDemuxState
+GST_REAL_AUDIO_DEMUX
+GST_REAL_AUDIO_DEMUX_CLASS
+GST_IS_REAL_AUDIO_DEMUX
+GST_IS_REAL_AUDIO_DEMUX_CLASS
+GST_TYPE_REAL_AUDIO_DEMUX
+gst_real_audio_demux_get_type
+gst_rademux_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-rdtmanager</FILE>
+<TITLE>rdtmanager</TITLE>
+GstRDTManager
+<SUBSECTION Standard>
+GstRDTManagerClass
+GstRDTManagerSession
+GST_RDT_MANAGER
+GST_RDT_MANAGER_CLASS
+GST_IS_RDT_MANAGER
+GST_IS_RDT_MANAGER_CLASS
+GST_TYPE_RDT_MANAGER
+gst_rdt_manager_get_type
+gst_rdt_manager_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-rmdemux</FILE>
+<TITLE>rmdemux</TITLE>
+GstRMDemux
+<SUBSECTION Standard>
+GstRMDemuxClass
+GstRMDemuxState
+GST_RMDEMUX
+GST_RMDEMUX_CLASS
+GST_IS_RMDEMUX
+GST_IS_RMDEMUX_CLASS
+GST_TYPE_RMDEMUX
+gst_rmdemux_plugin_init
+GST_CAT_DEFAULT
+GST_RM_AUD_14_4
+GST_RM_AUD_28_8
+GST_RM_AUD_ATRC
+GST_RM_AUD_COOK
+GST_RM_AUD_DNET
+GST_RM_AUD_RAAC
+GST_RM_AUD_RACP
+GST_RM_AUD_RALF
+GST_RM_AUD_SIPR
+GST_RM_AUD_xRA4
+GST_RM_AUD_xRA5
+GST_RM_VDO_RV10
+GST_RM_VDO_RV20
+GST_RM_VDO_RV30
+GST_RM_VDO_RV40
+GstRMDemuxLoopState
+GstRMDemuxStream
+GstRMDemuxStreamType
+</SECTION>
+
+<SECTION>
+<FILE>element-rtspreal</FILE>
+<TITLE>rtspreal</TITLE>
+GstRTSPReal
+<SUBSECTION Standard>
+GstRTSPRealClass
+GstRTSPRealStream
+GST_RTSP_REAL
+GST_RTSP_REAL_CLASS
+GST_IS_RTSP_REAL
+GST_IS_RTSP_REAL_CLASS
+GST_TYPE_RTSP_REAL
+gst_rtsp_real_get_type
+gst_rtsp_real_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-rtspwms</FILE>
+<TITLE>rtspwms</TITLE>
+GstRTSPWMS
+<SUBSECTION Standard>
+GstRTSPWMSClass
+GST_RTSP_WMS
+GST_RTSP_WMS_CLASS
+GST_IS_RTSP_WMS
+GST_IS_RTSP_WMS_CLASS
+GST_TYPE_RTSP_WMS
+gst_rtsp_wms_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-siddec</FILE>
+<TITLE>siddec</TITLE>
+GstSidDec
+<SUBSECTION Standard>
+GstSidDecClass
+GST_SIDDEC
+GST_SIDDEC_CLASS
+GST_IS_SIDDEC
+GST_IS_SIDDEC_CLASS
+GST_TYPE_SIDDEC
+gst_siddec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-synaesthesia</FILE>
+<TITLE>synaesthesia</TITLE>
+GstSynaesthesia
+<SUBSECTION Standard>
+GstSynaesthesiaClass
+GST_SYNAESTHESIA
+GST_SYNAESTHESIA_CLASS
+GST_IS_SYNAESTHESIA
+GST_IS_SYNAESTHESIA_CLASS
+GST_TYPE_SYNAESTHESIA
+gst_synaesthesia_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-twolame</FILE>
+<TITLE>twolame</TITLE>
+GstTwoLame
+<SUBSECTION Standard>
+GstTwoLameClass
+GST_TWO_LAME
+GST_TWO_LAME_CLASS
+GST_IS_TWO_LAME
+GST_IS_TWO_LAME_CLASS
+GST_TYPE_TWO_LAME
+gst_two_lame_get_type
+</SECTION>
+
+
+<SECTION>
+<FILE>element-x264enc</FILE>
+<TITLE>x264enc</TITLE>
+GstX264Enc
+<SUBSECTION Standard>
+GstX264EncClass
+GST_X264_ENC
+GST_X264_ENC_CLASS
+GST_IS_X264_ENC
+GST_IS_X264_ENC_CLASS
+GST_TYPE_X264_ENC
+gst_x264_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-xingmux</FILE>
+<TITLE>xingmux</TITLE>
+GstXingMux
+<SUBSECTION Standard>
+GstXingMuxClass
+GST_XING_MUX
+GST_XING_MUX_CLASS
+GST_IS_XING_MUX
+GST_IS_XING_MUX_CLASS
+GST_TYPE_XING_MUX
+gst_xing_mux_get_type
+</SECTION>
+
diff --git a/docs/plugins/gst-plugins-ugly-plugins.args b/docs/plugins/gst-plugins-ugly-plugins.args
new file mode 100644 (file)
index 0000000..9853ba3
--- /dev/null
@@ -0,0 +1,1220 @@
+<ARG>
+<NAME>GstPNMSrc::location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>PNM Location</NICK>
+<BLURB>Location of the PNM url to read.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRDTManager::latency</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Buffer latency in ms</NICK>
+<BLURB>Amount of ms to buffer.</BLURB>
+<DEFAULT>200</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMPEGParse::byte-offset</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Byte Offset</NICK>
+<BLURB>Emit reached-offset signal when the byte offset is reached.</BLURB>
+<DEFAULT>18446744073709551615</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMPEGParse::max-scr-gap</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= -1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max SCR gap</NICK>
+<BLURB>Maximum allowed gap between expected and actual SCR values. -1 means never adjust.</BLURB>
+<DEFAULT>120000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMPEGParse::time-offset</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Time Offset</NICK>
+<BLURB>Time offset in the stream.</BLURB>
+<DEFAULT>18446744073709551615</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMPEGAudioParse::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Bitrate</NICK>
+<BLURB>Bit Rate.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMPEGAudioParse::skip</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>skip</NICK>
+<BLURB>skip.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>AC3IEC::raw-audio</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>raw-audio</NICK>
+<BLURB>If true, source pad caps are set to raw audio.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstCdioCddaSrc::read-speed</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Read speed</NICK>
+<BLURB>Read from device at the specified speed (-1 = default).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAmrnbEnc::band-mode</NAME>
+<TYPE>GstAmrnbEncBandMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Band Mode</NICK>
+<BLURB>Encoding Band Mode (Kbps).</BLURB>
+<DEFAULT>MR122</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstAmrnbDec::variant</NAME>
+<TYPE>GstAmrnbVariant</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Variant</NICK>
+<BLURB>The decoder variant.</BLURB>
+<DEFAULT>IF1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstA52Dec::drc</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Dynamic Range Compression</NICK>
+<BLURB>Use Dynamic Range Compression.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstA52Dec::lfe</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>LFE</NICK>
+<BLURB>LFE.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstA52Dec::mode</NAME>
+<TYPE>GstA52DecMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Decoder Mode</NICK>
+<BLURB>Decoding Mode (default 3f2r).</BLURB>
+<DEFAULT>3 Front, 2 Rear</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::allow-diff-short</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Allow diff short</NICK>
+<BLURB>Allow diff short.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::ath-lower</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ATH lower</NICK>
+<BLURB>lowers ATH by x dB.</BLURB>
+<DEFAULT>3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::ath-only</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ATH only</NICK>
+<BLURB>Ignore GPSYCHO completely, use ATH only.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::ath-short</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ATH short</NICK>
+<BLURB>Ignore GPSYCHO for short blocks, use ATH only.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,320]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bitrate (kb/s)</NICK>
+<BLURB>Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</BLURB>
+<DEFAULT>128</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::compression-ratio</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,200]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Compression Ratio</NICK>
+<BLURB>let lame choose bitrate to achieve selected compression ratio.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::copyright</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Copyright</NICK>
+<BLURB>Mark as copyright.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::cwlimit</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,50000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Cwlimit</NICK>
+<BLURB>Compute tonality up to freq (in kHz) default 8.8717 (DEPRECATED: this setting has no effect).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::disable-reservoir</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Disable reservoir</NICK>
+<BLURB>Disable the bit reservoir.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::emphasis</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Emphasis</NICK>
+<BLURB>Emphasis.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::error-protection</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Error protection</NICK>
+<BLURB>Adds 16 bit checksum to every frame.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::extension</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Extension</NICK>
+<BLURB>Extension.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::force-ms</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Force ms</NICK>
+<BLURB>Force ms_stereo on all frames.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::free-format</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Free format</NICK>
+<BLURB>Produce a free format bitstream.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::highpass-freq</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,50000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Highpass freq</NICK>
+<BLURB>frequency(kHz), highpass filter cutoff below freq.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::highpass-width</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= -1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Highpass width</NICK>
+<BLURB>frequency(kHz) - default 15% of highpass freq.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::lowpass-freq</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,50000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Lowpass freq</NICK>
+<BLURB>frequency(kHz), lowpass filter cutoff above freq.</BLURB>
+<DEFAULT>17000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::lowpass-width</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= -1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Lowpass width</NICK>
+<BLURB>frequency(kHz) - default 15% of lowpass freq.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::mode</NAME>
+<TYPE>GstLameMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mode</NICK>
+<BLURB>Encoding mode.</BLURB>
+<DEFAULT>Joint Stereo</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::no-ath</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>No ath</NICK>
+<BLURB>turns ATH down to a flat noise floor.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::no-short-blocks</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>No short blocks</NICK>
+<BLURB>Do not use short blocks.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::original</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Original</NICK>
+<BLURB>Mark as original.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::padding-type</NAME>
+<TYPE>GstLamePadding</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Padding type</NICK>
+<BLURB>Padding type (DEPRECATED: this setting has no effect).</BLURB>
+<DEFAULT>No Padding</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::preset</NAME>
+<TYPE>GstLamePreset</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Lame Preset</NICK>
+<BLURB>Lame Preset.</BLURB>
+<DEFAULT>None</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::quality</NAME>
+<TYPE>GstLameQuality</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Quality</NICK>
+<BLURB>Quality of algorithm used for encoding.</BLURB>
+<DEFAULT>3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::strict-iso</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Strict ISO</NICK>
+<BLURB>Comply as much as possible to ISO MPEG spec.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr</NAME>
+<TYPE>GstLameVbrmode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR</NICK>
+<BLURB>Specify bitrate mode.</BLURB>
+<DEFAULT>No VBR (Constant Bitrate)</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr-hard-min</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR hard min</NICK>
+<BLURB>Specify whether min VBR bitrate is a hard limit. Normally, it can be violated for silence.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr-max-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,320]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR max bitrate</NICK>
+<BLURB>Specify maximum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr-mean-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,320]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR mean bitrate</NICK>
+<BLURB>Specify mean VBR bitrate.</BLURB>
+<DEFAULT>128</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr-min-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,320]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR min bitrate</NICK>
+<BLURB>Specify minimum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::vbr-quality</NAME>
+<TYPE>GstLameQuality</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR Quality</NICK>
+<BLURB>VBR Quality.</BLURB>
+<DEFAULT>4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLame::xingheader</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Output Xing Header</NICK>
+<BLURB>Output Xing Header (BROKEN, use xingmux instead).</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[8,320]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Bitrate (kb/s)</NICK>
+<BLURB>Bitrate in kbit/sec (Only valid if target is bitrate, for CBR one of 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</BLURB>
+<DEFAULT>128</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::cbr</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>CBR</NICK>
+<BLURB>Enforce constant bitrate encoding (Only valid if target is bitrate).</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::encoding-engine-quality</NAME>
+<TYPE>GstLameMP3EncEncodingEngineQuality</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Encoding Engine Quality</NICK>
+<BLURB>Quality/speed of the encoding engine, this does not affect the bitrate!.</BLURB>
+<DEFAULT>Standard</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::mono</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Mono</NICK>
+<BLURB>Enforce mono encoding.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::quality</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,9.999]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Quality</NICK>
+<BLURB>VBR Quality from 0 to 10, 0 being the best (Only valid if target is quality).</BLURB>
+<DEFAULT>4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstLameMP3Enc::target</NAME>
+<TYPE>GstLameMP3EncTarget</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Target</NICK>
+<BLURB>Optimize for quality or bitrate.</BLURB>
+<DEFAULT>Quality</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::blocksize</NAME>
+<TYPE>gulong</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block size</NICK>
+<BLURB>Size in bytes to output per buffer.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::clock</NAME>
+<TYPE>GstSidClock</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>clock</NICK>
+<BLURB>clock.</BLURB>
+<DEFAULT>PAL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::filter</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>filter</NICK>
+<BLURB>filter.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::force-speed</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>force_speed</NICK>
+<BLURB>force_speed.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::measured-volume</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>measured_volume</NICK>
+<BLURB>measured_volume.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::memory</NAME>
+<TYPE>GstSidMemory</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>memory</NICK>
+<BLURB>memory.</BLURB>
+<DEFAULT>Bank Switching</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::metadata</NAME>
+<TYPE>GstCaps*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Metadata</NICK>
+<BLURB>Metadata.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::mos8580</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>mos8580</NICK>
+<BLURB>mos8580.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSidDec::tune</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,100]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>tune</NICK>
+<BLURB>tune.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::ath-level</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ATH Level</NICK>
+<BLURB>ATH Level in dB.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[8,384]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bitrate (kb/s)</NICK>
+<BLURB>Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320, 384).</BLURB>
+<DEFAULT>192</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::copyright</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Copyright</NICK>
+<BLURB>Mark as copyright.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::emphasis</NAME>
+<TYPE>GstTwoLameEmphasis</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Emphasis</NICK>
+<BLURB>Pre-emphasis to apply to the decoded audio.</BLURB>
+<DEFAULT>No emphasis</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::energy-level-extension</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Energy Level Extension</NICK>
+<BLURB>Write peak PCM level to each frame.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::error-protection</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Error protection</NICK>
+<BLURB>Adds checksum to every frame.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::mode</NAME>
+<TYPE>GstTwoLameMode</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mode</NICK>
+<BLURB>Encoding mode.</BLURB>
+<DEFAULT>Joint Stereo</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::original</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Original</NICK>
+<BLURB>Mark as original.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::padding</NAME>
+<TYPE>GstTwoLamePadding</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Padding</NICK>
+<BLURB>Padding type.</BLURB>
+<DEFAULT>No Padding</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::psymodel</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1,4]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Psychoacoustic Model</NICK>
+<BLURB>Psychoacoustic model used to encode the audio.</BLURB>
+<DEFAULT>3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::quick-mode</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Quick mode</NICK>
+<BLURB>Calculate Psymodel every frames.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::quick-mode-count</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Quick mode count</NICK>
+<BLURB>Calculate Psymodel every n frames.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::vbr</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR</NICK>
+<BLURB>Enable variable bitrate mode.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::vbr-level</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[-10,10]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR Level</NICK>
+<BLURB>VBR Level.</BLURB>
+<DEFAULT>5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTwoLame::vbr-max-bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,384]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBR max bitrate</NICK>
+<BLURB>Specify maximum VBR bitrate (0=off, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320, 384).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::analyse</NAME>
+<TYPE>GstX264EncAnalyse</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Analyse</NICK>
+<BLURB>Partitions to consider.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::aud</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>AUD</NICK>
+<BLURB>Use AU (Access Unit) delimiter.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::b-adapt</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B-Adapt</NICK>
+<BLURB>Automatically decide how many B-frames to use.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::b-pyramid</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B-Pyramid</NICK>
+<BLURB>Keep some B-frames as references.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::bframes</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 4</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B-Frames</NICK>
+<BLURB>Number of B-frames between I and P.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::bitrate</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,102400]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bitrate</NICK>
+<BLURB>Bitrate in kbit/sec.</BLURB>
+<DEFAULT>2048</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::byte-stream</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Byte Stream</NICK>
+<BLURB>Generate byte stream format of NALU.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::cabac</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Use CABAC</NICK>
+<BLURB>Enable CABAC entropy coding.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::dct8x8</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>DCT8x8</NICK>
+<BLURB>Adaptive spatial transform size.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::interlaced</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interlaced</NICK>
+<BLURB>Interlaced material.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::ip-factor</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>IP-Factor</NICK>
+<BLURB>Quantizer factor between I- and P-frames.</BLURB>
+<DEFAULT>1.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::key-int-max</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= G_MAXINT</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key-frame maximal interval</NICK>
+<BLURB>Maximal distance between two key-frames (0 for automatic).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::me</NAME>
+<TYPE>GstX264EncMe</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Motion Estimation</NICK>
+<BLURB>Integer pixel motion estimation method.</BLURB>
+<DEFAULT>hex</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::multipass-cache-file</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Multipass Cache File</NICK>
+<BLURB>Filename for multipass cache file.</BLURB>
+<DEFAULT>"x264.log"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::noise-reduction</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 100000</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Noise Reduction</NICK>
+<BLURB>Noise reduction strength.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::pass</NAME>
+<TYPE>GstX264EncPass</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Encoding pass/type</NICK>
+<BLURB>Encoding pass/type.</BLURB>
+<DEFAULT>Constant Bitrate Encoding</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::pb-factor</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>PB-Factor</NICK>
+<BLURB>Quantizer factor between P- and B-frames.</BLURB>
+<DEFAULT>1.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::qp-max</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,51]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Maximum Quantizer</NICK>
+<BLURB>Maximum quantizer.</BLURB>
+<DEFAULT>51</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::qp-min</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,51]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Minimum Quantizer</NICK>
+<BLURB>Minimum quantizer.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::qp-step</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,50]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Maximum Quantizer Difference</NICK>
+<BLURB>Maximum quantizer difference between frames.</BLURB>
+<DEFAULT>4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::quantizer</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,50]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Constant Quantizer</NICK>
+<BLURB>Constant quantizer or quality to apply.</BLURB>
+<DEFAULT>21</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::ref</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,12]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Reference Frames</NICK>
+<BLURB>Number of reference frames.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::sps-id</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 31</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>SPS ID</NICK>
+<BLURB>SPS and PPS ID number.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::stats-file</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stats File</NICK>
+<BLURB>Filename for multipass statistics (deprecated, use multipass-cache-file).</BLURB>
+<DEFAULT>"x264.log"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::subme</NAME>
+<TYPE>guint</TYPE>
+<RANGE>[1,10]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Subpixel Motion Estimation</NICK>
+<BLURB>Subpixel motion estimation and partition decision quality: 1=fast, 10=best.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::threads</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 4</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Threads</NICK>
+<BLURB>Number of threads used by the codec (0 for automatic).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::trellis</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Trellis quantization</NICK>
+<BLURB>Enable trellis searched quantization.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::vbv-buf-capacity</NAME>
+<TYPE>guint</TYPE>
+<RANGE><= 10000</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VBV buffer capacity</NICK>
+<BLURB>Size of the VBV buffer in milliseconds.</BLURB>
+<DEFAULT>600</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::weightb</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Weighted B-Frames</NICK>
+<BLURB>Weighted prediction for B-frames.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::intra-refresh</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Intra Refresh</NICK>
+<BLURB>Use Periodic Intra Refresh instead of IDR frames.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::mb-tree</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Macroblock Tree</NICK>
+<BLURB>Macroblock-Tree ratecontrol.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::rc-lookahead</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,250]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Rate Control Lookahead</NICK>
+<BLURB>Number of frames for frametype lookahead.</BLURB>
+<DEFAULT>40</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::sliced-threads</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sliced Threads</NICK>
+<BLURB>Low latency but lower efficiency threading.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::sync-lookahead</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-1,250]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sync Lookahead</NICK>
+<BLURB>Number of buffer frames for threaded lookahead (-1 for automatic).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::option-string</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Option string</NICK>
+<BLURB>String of x264 options (overridden by element properties).</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::profile</NAME>
+<TYPE>GstX264EncProfile</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>H.264 profile</NICK>
+<BLURB>Apply restrictions to meet H.264 Profile constraints. This will override other properties if necessary. This will only be used if downstream elements do not specify a profile in their caps (DEPRECATED).</BLURB>
+<DEFAULT>main</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::psy-tune</NAME>
+<TYPE>GstX264EncPsyTune</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Psychovisual tuning preset</NICK>
+<BLURB>Preset name for psychovisual tuning options.</BLURB>
+<DEFAULT>No tuning</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::speed-preset</NAME>
+<TYPE>GstX264EncPreset</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Speed/quality preset</NICK>
+<BLURB>Preset name for speed/quality tradeoff options (can affect decode compatibility - impose restrictions separately for your target decoder).</BLURB>
+<DEFAULT>medium</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstX264Enc::tune</NAME>
+<TYPE>GstX264EncTune</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Content tuning preset</NICK>
+<BLURB>Preset name for non-psychovisual tuning options.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMad::half</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Half</NICK>
+<BLURB>Generate PCM at 1/2 sample rate.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMad::ignore-crc</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Ignore CRC</NICK>
+<BLURB>Ignore CRC errors.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDvdReadSrc::angle</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[1,999]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>angle</NICK>
+<BLURB>angle.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDvdReadSrc::chapter</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[1,999]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>chapter</NICK>
+<BLURB>chapter.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDvdReadSrc::device</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Device</NICK>
+<BLURB>DVD device location.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDvdReadSrc::title</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[1,999]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>title</NICK>
+<BLURB>title.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gst-plugins-ugly-plugins.hierarchy b/docs/plugins/gst-plugins-ugly-plugins.hierarchy
new file mode 100644 (file)
index 0000000..b7c19a2
--- /dev/null
@@ -0,0 +1,62 @@
+GObject
+  GstObject
+    GstBus
+    GstClock
+    GstElement
+      AC3IEC
+      GstA52Dec
+      GstASFDemux
+      GstAudioDecoder
+        GstAmrnbDec
+        GstAmrwbDec
+      GstAudioEncoder
+        GstAmrnbEnc
+        GstLame
+        GstLameMP3Enc
+        GstTwoLame
+      GstBaseRTPDepayload
+        GstRtpAsfDepay
+      GstBaseSrc
+        GstPushSrc
+          GstCddaBaseSrc
+            GstCdioCddaSrc
+          GstDvdReadSrc
+          GstPNMSrc
+      GstBin
+        GstPipeline
+      GstDvdLpcmDec
+      GstDvdSubDec
+      GstDvdSubParse
+      GstMPEGAudioParse
+      GstMPEGParse
+        GstMPEGDemux
+          GstDVDDemux
+      GstMad
+      GstMpeg2dec
+      GstRDTDepay
+      GstRDTManager
+      GstRMDemux
+      GstRTSPReal
+      GstRTSPWMS
+      GstRealAudioDemux
+      GstSidDec
+      GstX264Enc
+      GstXingMux
+    GstPad
+    GstPadTemplate
+    GstPlugin
+    GstPluginFeature
+      GstElementFactory
+      GstIndexFactory
+      GstTypeFindFactory
+    GstRegistry
+    GstTask
+    GstTaskPool
+  GstSignalObject
+GInterface
+  GTypePlugin
+  GstChildProxy
+  GstPreset
+  GstRTSPExtension
+  GstTagSetter
+  GstURIHandler
diff --git a/docs/plugins/gst-plugins-ugly-plugins.interfaces b/docs/plugins/gst-plugins-ugly-plugins.interfaces
new file mode 100644 (file)
index 0000000..998f04c
--- /dev/null
@@ -0,0 +1,15 @@
+GstAmrnbEnc GstPreset
+GstAudioEncoder GstPreset
+GstBin GstChildProxy
+GstCddaBaseSrc GstURIHandler
+GstCdioCddaSrc GstURIHandler
+GstDvdReadSrc GstURIHandler
+GstLame GstPreset GstTagSetter
+GstLame GstTagSetter GstPreset
+GstLameMP3Enc GstPreset
+GstPNMSrc GstURIHandler
+GstPipeline GstChildProxy
+GstRTSPReal GstRTSPExtension
+GstRTSPWMS GstRTSPExtension
+GstTwoLame GstPreset
+GstX264Enc GstPreset
diff --git a/docs/plugins/gst-plugins-ugly-plugins.prerequisites b/docs/plugins/gst-plugins-ugly-plugins.prerequisites
new file mode 100644 (file)
index 0000000..2bf0edd
--- /dev/null
@@ -0,0 +1,2 @@
+GstChildProxy GstObject
+GstTagSetter GstElement
diff --git a/docs/plugins/gst-plugins-ugly-plugins.signals b/docs/plugins/gst-plugins-ugly-plugins.signals
new file mode 100644 (file)
index 0000000..8155190
--- /dev/null
@@ -0,0 +1,50 @@
+<SIGNAL>
+<NAME>GstRDTManager::clear-pt-map</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstRDTManager *gstrdtmanager
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstRDTManager::on-bye-ssrc</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstRDTManager *gstrdtmanager
+guint  arg1
+guint  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstRDTManager::on-bye-timeout</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstRDTManager *gstrdtmanager
+guint  arg1
+guint  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstRDTManager::on-timeout</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>l</FLAGS>
+GstRDTManager *gstrdtmanager
+guint  arg1
+guint  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstRDTManager::request-pt-map</NAME>
+<RETURNS>GstCaps*</RETURNS>
+<FLAGS>l</FLAGS>
+GstRDTManager *gstrdtmanager
+guint  arg1
+guint  arg2
+</SIGNAL>
+
+<SIGNAL>
+<NAME>GstMPEGParse::reached-offset</NAME>
+<RETURNS>void</RETURNS>
+<FLAGS>f</FLAGS>
+GstMPEGParse *gstmpegparse
+</SIGNAL>
+
diff --git a/docs/plugins/gst-plugins-ugly-plugins.types b/docs/plugins/gst-plugins-ugly-plugins.types
new file mode 100644 (file)
index 0000000..9f4950e
--- /dev/null
@@ -0,0 +1 @@
+#include <gst/gst.h>
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
new file mode 100644 (file)
index 0000000..9d43845
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gst-plugins-ugly Elements</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="prev" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="next" href="gst-plugins-ugly-plugins-a52dec.html" title="a52dec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-a52dec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="idp154560"></a>gst-plugins-ugly Elements</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-a52dec.html">a52dec</a></span><span class="refpurpose"> — Decodes ATSC A/52 encoded audio streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrnbdec.html">amrnbdec</a></span><span class="refpurpose"> — Adaptive Multi-Rate Narrow-Band audio decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrnbenc.html">amrnbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Narrow-Band audio encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrwbdec.html">amrwbdec</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wideband audio decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-cdiocddasrc.html">cdiocddasrc</a></span><span class="refpurpose"> — Read audio from CD using libcdio</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lame.html">lame</a></span><span class="refpurpose"> — High-quality free MP3 encoder (deprecated)</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lamemp3enc.html">lamemp3enc</a></span><span class="refpurpose"> — High-quality free MP3 encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mad.html">mad</a></span><span class="refpurpose"> — Uses mad code to decode mp3 streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mp3parse.html">mp3parse</a></span><span class="refpurpose"> — Parses and frames mpeg1 audio streams (levels 1-3), provides seek</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rademux.html">rademux</a></span><span class="refpurpose"> — Demultiplex a RealAudio file</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rmdemux.html">rmdemux</a></span><span class="refpurpose"> — Demultiplex a RealMedia file into audio and video streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rdtmanager.html">rdtmanager</a></span><span class="refpurpose"> — Accepts raw RTP and RTCP packets and sends them forward</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rtspreal.html">rtspreal</a></span><span class="refpurpose"> — Extends RTSP so that it can handle RealMedia setup</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rtspwms.html">rtspwms</a></span><span class="refpurpose"> — Extends RTSP so that it can handle WMS setup</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-siddec.html">siddec</a></span><span class="refpurpose"> — Use libsidplay to decode SID audio tunes</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-twolame.html">twolame</a></span><span class="refpurpose"> — High-quality free MP2 encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-synaesthesia.html">synaesthesia</a></span><span class="refpurpose"> — Creates video visualizations of audio input, using stereo and pitch information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-x264enc.html">x264enc</a></span><span class="refpurpose"> — H264 Encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-xingmux.html">xingmux</a></span><span class="refpurpose"> — Adds a Xing header to the beginning of a VBR MP3 file</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
new file mode 100644 (file)
index 0000000..7a4847a
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gst-plugins-ugly Plugins</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="prev" href="gst-plugins-ugly-plugins-xingmux.html" title="xingmux">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-a52dec.html" title="a52dec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-xingmux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td> </td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-a52dec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="idp3751920"></a>gst-plugins-ugly Plugins</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-a52dec.html">a52dec</a></span><span class="refpurpose"> — <a name="plugin-a52dec"></a>Decodes ATSC A/52 encoded audio streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-amrnb.html">amrnb</a></span><span class="refpurpose"> — <a name="plugin-amrnb"></a>Adaptive Multi-Rate Narrow-Band</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-amrwbdec.html">amrwbdec</a></span><span class="refpurpose"> — <a name="plugin-amrwbdec"></a>Adaptive Multi-Rate Wide-Band Decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-asf.html">asf</a></span><span class="refpurpose"> — <a name="plugin-asf"></a>Demuxes and muxes audio and video in Microsofts ASF format</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-cdio.html">cdio</a></span><span class="refpurpose"> — <a name="plugin-cdio"></a>Read audio from audio CDs</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html">dvdlpcmdec</a></span><span class="refpurpose"> — <a name="plugin-dvdlpcmdec"></a>Decode DVD LPCM frames into standard PCM</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdread.html">dvdread</a></span><span class="refpurpose"> — <a name="plugin-dvdread"></a>Access a DVD with dvdread</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdsub.html">dvdsub</a></span><span class="refpurpose"> — <a name="plugin-dvdsub"></a>DVD subtitle parser and decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-iec958.html">iec958</a></span><span class="refpurpose"> — <a name="plugin-iec958"></a>Convert raw AC3 into IEC958 (S/PDIF) frames</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-lame.html">lame</a></span><span class="refpurpose"> — <a name="plugin-lame"></a>Encode MP3s with LAME</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mad.html">mad</a></span><span class="refpurpose"> — <a name="plugin-mad"></a>mp3 decoding based on the mad library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html">mpeg2dec</a></span><span class="refpurpose"> — <a name="plugin-mpeg2dec"></a>LibMpeg2 decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html">mpegaudioparse</a></span><span class="refpurpose"> — <a name="plugin-mpegaudioparse"></a>MPEG-1 layer 1/2/3 audio stream elements</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpegstream.html">mpegstream</a></span><span class="refpurpose"> — <a name="plugin-mpegstream"></a>MPEG system stream parser</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-realmedia.html">realmedia</a></span><span class="refpurpose"> — <a name="plugin-realmedia"></a>RealMedia support plugins</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-siddec.html">siddec</a></span><span class="refpurpose"> — <a name="plugin-siddec"></a>Uses libsidplay to decode .sid files</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-synaesthesia.html">synaesthesia</a></span><span class="refpurpose"> — <a name="plugin-synaesthesia"></a>Creates video visualizations of audio input, using stereo and pitch information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-twolame.html">twolame</a></span><span class="refpurpose"> — <a name="plugin-twolame"></a>Encode MP2s with TwoLAME</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-x264.html">x264</a></span><span class="refpurpose"> — <a name="plugin-x264"></a>libx264-based H264 plugins</span>
+</dt>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
new file mode 100644 (file)
index 0000000..f23e51e
--- /dev/null
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>a52dec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="next" href="gst-plugins-ugly-plugins-amrnbdec.html" title="amrnbdec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-amrnbdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-a52dec.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-a52dec.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-a52dec.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-a52dec.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-a52dec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-a52dec.top_of_page"></a>a52dec</span></h2>
+<p>a52dec — Decodes ATSC A/52 encoded audio streams</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-a52dec.synopsis"></a><h2>Synopsis</h2>
+<a name="GstA52Dec"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec-struct" title="struct GstA52Dec">GstA52Dec</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-a52dec.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstA52Dec
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-a52dec.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--drc" title='The "drc" property'>drc</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--lfe" title='The "lfe" property'>lfe</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--mode" title='The "mode" property'>mode</a>"                     <span class="type">GstA52DecMode</span>         : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-a52dec.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp7955024"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-a52dec.html#plugin-a52dec">a52dec</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>David I. Lehn &lt;dlehn@users.sourceforge.net&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Decoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp6726784"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-ac3</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/ac3</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-private1-ac3</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)[ 4000, 96000 ], channels=(int)[ 1, 6 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-a52dec.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstA52Dec-struct"></a><h3>struct GstA52Dec</h3>
+<pre class="programlisting">struct GstA52Dec;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-a52dec.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstA52Dec--drc"></a><h3>The <code class="literal">"drc"</code> property</h3>
+<pre class="programlisting">  "drc"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Use Dynamic Range Compression.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstA52Dec--lfe"></a><h3>The <code class="literal">"lfe"</code> property</h3>
+<pre class="programlisting">  "lfe"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>LFE.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstA52Dec--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
+<pre class="programlisting">  "mode"                     <span class="type">GstA52DecMode</span>         : Read / Write</pre>
+<p>Decoding Mode (default 3f2r).</p>
+<p>Default value: 3 Front, 2 Rear</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
new file mode 100644 (file)
index 0000000..c9cab78
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>amrnbdec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-a52dec.html" title="a52dec">
+<link rel="next" href="gst-plugins-ugly-plugins-amrnbenc.html" title="amrnbenc">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-a52dec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-amrnbenc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-amrnbdec.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbdec.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbdec.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbdec.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-amrnbdec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-amrnbdec.top_of_page"></a>amrnbdec</span></h2>
+<p>amrnbdec — Adaptive Multi-Rate Narrow-Band audio decoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-amrnbdec.synopsis"></a><h2>Synopsis</h2>
+<a name="GstAmrnbDec"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec-struct" title="struct GstAmrnbDec">GstAmrnbDec</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbdec.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioDecoder
+                     +----GstAmrnbDec
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbdec.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec--variant" title='The "variant" property'>variant</a>"                  <span class="type">GstAmrnbVariant</span>       : Read / Write / Construct
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbdec.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp6211712"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-amrnb.html#plugin-amrnb">amrnb</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>GStreamer maintainers &lt;gstreamer-devel@lists.sourceforge.net&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Decoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp4779120"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/AMR, rate=(int)8000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)8000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbdec.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstAmrnbDec-struct"></a><h3>struct GstAmrnbDec</h3>
+<pre class="programlisting">struct GstAmrnbDec;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbdec.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstAmrnbDec--variant"></a><h3>The <code class="literal">"variant"</code> property</h3>
+<pre class="programlisting">  "variant"                  <span class="type">GstAmrnbVariant</span>       : Read / Write / Construct</pre>
+<p>The decoder variant.</p>
+<p>Default value: IF1</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
new file mode 100644 (file)
index 0000000..96ef4e6
--- /dev/null
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>amrnbenc</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-amrnbdec.html" title="amrnbdec">
+<link rel="next" href="gst-plugins-ugly-plugins-amrwbdec.html" title="amrwbdec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-amrnbdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-amrwbdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-amrnbenc.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbenc.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbenc.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbenc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrnbenc.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-amrnbenc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-amrnbenc.top_of_page"></a>amrnbenc</span></h2>
+<p>amrnbenc — Adaptive Multi-Rate Narrow-Band audio encoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-amrnbenc.synopsis"></a><h2>Synopsis</h2>
+<a name="GstAmrnbEnc"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc-struct" title="struct GstAmrnbEnc">GstAmrnbEnc</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioEncoder
+                     +----GstAmrnbEnc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstAmrnbEnc implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc--band-mode" title='The "band-mode" property'>band-mode</a>"                <span class="type">GstAmrnbEncBandMode</span>   : Read / Write / Construct
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp5436768"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-amrnb.html#plugin-amrnb">amrnb</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim.taymans@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Encoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp81184"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)8000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/AMR, rate=(int)8000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstAmrnbEnc-struct"></a><h3>struct GstAmrnbEnc</h3>
+<pre class="programlisting">struct GstAmrnbEnc;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrnbenc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstAmrnbEnc--band-mode"></a><h3>The <code class="literal">"band-mode"</code> property</h3>
+<pre class="programlisting">  "band-mode"                <span class="type">GstAmrnbEncBandMode</span>   : Read / Write / Construct</pre>
+<p>Encoding Band Mode (Kbps).</p>
+<p>Default value: MR122</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
new file mode 100644 (file)
index 0000000..019a79a
--- /dev/null
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>amrwbdec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-amrnbenc.html" title="amrnbenc">
+<link rel="next" href="gst-plugins-ugly-plugins-cdiocddasrc.html" title="cdiocddasrc">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-amrnbenc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-cdiocddasrc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-amrwbdec.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrwbdec.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-amrwbdec.object-hierarchy" class="shortcut">Object Hierarchy</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-amrwbdec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-amrwbdec.top_of_page"></a>amrwbdec</span></h2>
+<p>amrwbdec — Adaptive Multi-Rate Wideband audio decoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-amrwbdec.synopsis"></a><h2>Synopsis</h2>
+<a name="GstAmrwbDec"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-amrwbdec.html#GstAmrwbDec-struct" title="struct GstAmrwbDec">GstAmrwbDec</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrwbdec.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioDecoder
+                     +----GstAmrwbDec
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrwbdec.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp7838288"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-amrwbdec.html#plugin-amrwbdec">amrwbdec</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Renato Araujo &lt;renato.filho@indt.org.br&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Decoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp6287392"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/AMR-WB, rate=(int)16000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)16000, channels=(int)1</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-amrwbdec.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstAmrwbDec-struct"></a><h3>struct GstAmrwbDec</h3>
+<pre class="programlisting">struct GstAmrwbDec;</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html b/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
new file mode 100644 (file)
index 0000000..a776531
--- /dev/null
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>cdiocddasrc</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-amrwbdec.html" title="amrwbdec">
+<link rel="next" href="gst-plugins-ugly-plugins-lame.html" title="lame">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-amrwbdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-lame.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-cdiocddasrc.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-cdiocddasrc.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-cdiocddasrc.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-cdiocddasrc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-cdiocddasrc.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-cdiocddasrc.top_of_page"></a>cdiocddasrc</span></h2>
+<p>cdiocddasrc — Read audio from CD using libcdio</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.synopsis"></a><h2>Synopsis</h2>
+<a name="GstCdioCddaSrc"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc-struct" title="struct GstCdioCddaSrc">GstCdioCddaSrc</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a>
+                     +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstPushSrc.html">GstPushSrc</a>
+                           +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc">GstCddaBaseSrc</a>
+                                 +----GstCdioCddaSrc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstCdioCddaSrc implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc--read-speed" title='The "read-speed" property'>read-speed</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp4906016"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-cdio.html#plugin-cdio">cdio</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Tim-Philipp Müller &lt;tim centricular net&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Source/File</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp4913424"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstCdioCddaSrc-struct"></a><h3>struct GstCdioCddaSrc</h3>
+<pre class="programlisting">struct GstCdioCddaSrc;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-cdiocddasrc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstCdioCddaSrc--read-speed"></a><h3>The <code class="literal">"read-speed"</code> property</h3>
+<pre class="programlisting">  "read-speed"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Read from device at the specified speed (-1 = default).</p>
+<p>Allowed values: [G_MAXULONG,100]</p>
+<p>Default value: -1</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-lame.html b/docs/plugins/html/gst-plugins-ugly-plugins-lame.html
new file mode 100644 (file)
index 0000000..7cb8712
--- /dev/null
@@ -0,0 +1,437 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>lame</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-cdiocddasrc.html" title="cdiocddasrc">
+<link rel="next" href="gst-plugins-ugly-plugins-lamemp3enc.html" title="lamemp3enc">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-cdiocddasrc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-lamemp3enc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-lame.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lame.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lame.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lame.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lame.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-lame"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-lame.top_of_page"></a>lame</span></h2>
+<p>lame — High-quality free MP3 encoder (deprecated)</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-lame.synopsis"></a><h2>Synopsis</h2>
+<a name="GstLame"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame-struct" title="struct GstLame">GstLame</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioEncoder
+                     +----GstLame
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstLame implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstTagSetter.html">GstTagSetter</a> and  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--allow-diff-short" title='The "allow-diff-short" property'>allow-diff-short</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--ath-lower" title='The "ath-lower" property'>ath-lower</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--ath-only" title='The "ath-only" property'>ath-only</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--ath-short" title='The "ath-short" property'>ath-short</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--bitrate" title='The "bitrate" property'>bitrate</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--compression-ratio" title='The "compression-ratio" property'>compression-ratio</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--copyright" title='The "copyright" property'>copyright</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--cwlimit" title='The "cwlimit" property'>cwlimit</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--disable-reservoir" title='The "disable-reservoir" property'>disable-reservoir</a>"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--emphasis" title='The "emphasis" property'>emphasis</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--error-protection" title='The "error-protection" property'>error-protection</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--extension" title='The "extension" property'>extension</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--force-ms" title='The "force-ms" property'>force-ms</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--free-format" title='The "free-format" property'>free-format</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--highpass-freq" title='The "highpass-freq" property'>highpass-freq</a>"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--highpass-width" title='The "highpass-width" property'>highpass-width</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-freq" title='The "lowpass-freq" property'>lowpass-freq</a>"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-width" title='The "lowpass-width" property'>lowpass-width</a>"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--mode" title='The "mode" property'>mode</a>"                     <span class="type">GstLameMode</span>           : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--no-ath" title='The "no-ath" property'>no-ath</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--no-short-blocks" title='The "no-short-blocks" property'>no-short-blocks</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--original" title='The "original" property'>original</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--padding-type" title='The "padding-type" property'>padding-type</a>"             <span class="type">GstLamePadding</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--preset" title='The "preset" property'>preset</a>"                   <span class="type">GstLamePreset</span>         : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--quality" title='The "quality" property'>quality</a>"                  <span class="type">GstLameQuality</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--strict-iso" title='The "strict-iso" property'>strict-iso</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr" title='The "vbr" property'>vbr</a>"                      <span class="type">GstLameVbrmode</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-hard-min" title='The "vbr-hard-min" property'>vbr-hard-min</a>"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-max-bitrate" title='The "vbr-max-bitrate" property'>vbr-max-bitrate</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-mean-bitrate" title='The "vbr-mean-bitrate" property'>vbr-mean-bitrate</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-min-bitrate" title='The "vbr-min-bitrate" property'>vbr-min-bitrate</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-quality" title='The "vbr-quality" property'>vbr-quality</a>"              <span class="type">GstLameQuality</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-lame.html#GstLame--xingheader" title='The "xingheader" property'>xingheader</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp9568016"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-lame.html#plugin-lame">lame</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Erik Walthinsen &lt;omega@cse.ogi.edu&gt;, Wim Taymans &lt;wim@fluendo.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Encoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp9575424"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstLame-struct"></a><h3>struct GstLame</h3>
+<pre class="programlisting">struct GstLame;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lame.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstLame--allow-diff-short"></a><h3>The <code class="literal">"allow-diff-short"</code> property</h3>
+<pre class="programlisting">  "allow-diff-short"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Allow diff short.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--ath-lower"></a><h3>The <code class="literal">"ath-lower"</code> property</h3>
+<pre class="programlisting">  "ath-lower"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>lowers ATH by x dB.</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--ath-only"></a><h3>The <code class="literal">"ath-only"</code> property</h3>
+<pre class="programlisting">  "ath-only"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Ignore GPSYCHO completely, use ATH only.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--ath-short"></a><h3>The <code class="literal">"ath-short"</code> property</h3>
+<pre class="programlisting">  "ath-short"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Ignore GPSYCHO for short blocks, use ATH only.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--bitrate"></a><h3>The <code class="literal">"bitrate"</code> property</h3>
+<pre class="programlisting">  "bitrate"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</p>
+<p>Allowed values: [0,320]</p>
+<p>Default value: 128</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--compression-ratio"></a><h3>The <code class="literal">"compression-ratio"</code> property</h3>
+<pre class="programlisting">  "compression-ratio"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write</pre>
+<p>let lame choose bitrate to achieve selected compression ratio.</p>
+<p>Allowed values: [0,200]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--copyright"></a><h3>The <code class="literal">"copyright"</code> property</h3>
+<pre class="programlisting">  "copyright"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Mark as copyright.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--cwlimit"></a><h3>The <code class="literal">"cwlimit"</code> property</h3>
+<pre class="programlisting">  "cwlimit"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Compute tonality up to freq (in kHz) default 8.8717 (DEPRECATED: this setting has no effect).</p>
+<p>Allowed values: [0,50000]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--disable-reservoir"></a><h3>The <code class="literal">"disable-reservoir"</code> property</h3>
+<pre class="programlisting">  "disable-reservoir"        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Disable the bit reservoir.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--emphasis"></a><h3>The <code class="literal">"emphasis"</code> property</h3>
+<pre class="programlisting">  "emphasis"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Emphasis.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--error-protection"></a><h3>The <code class="literal">"error-protection"</code> property</h3>
+<pre class="programlisting">  "error-protection"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Adds 16 bit checksum to every frame.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--extension"></a><h3>The <code class="literal">"extension"</code> property</h3>
+<pre class="programlisting">  "extension"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Extension.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--force-ms"></a><h3>The <code class="literal">"force-ms"</code> property</h3>
+<pre class="programlisting">  "force-ms"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Force ms_stereo on all frames.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--free-format"></a><h3>The <code class="literal">"free-format"</code> property</h3>
+<pre class="programlisting">  "free-format"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Produce a free format bitstream.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--highpass-freq"></a><h3>The <code class="literal">"highpass-freq"</code> property</h3>
+<pre class="programlisting">  "highpass-freq"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>frequency(kHz), highpass filter cutoff below freq.</p>
+<p>Allowed values: [0,50000]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--highpass-width"></a><h3>The <code class="literal">"highpass-width"</code> property</h3>
+<pre class="programlisting">  "highpass-width"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>frequency(kHz) - default 15% of highpass freq.</p>
+<p>Allowed values: &gt;= G_MAXULONG</p>
+<p>Default value: -1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--lowpass-freq"></a><h3>The <code class="literal">"lowpass-freq"</code> property</h3>
+<pre class="programlisting">  "lowpass-freq"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>frequency(kHz), lowpass filter cutoff above freq.</p>
+<p>Allowed values: [0,50000]</p>
+<p>Default value: 17000</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--lowpass-width"></a><h3>The <code class="literal">"lowpass-width"</code> property</h3>
+<pre class="programlisting">  "lowpass-width"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>frequency(kHz) - default 15% of lowpass freq.</p>
+<p>Allowed values: &gt;= G_MAXULONG</p>
+<p>Default value: -1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
+<pre class="programlisting">  "mode"                     <span class="type">GstLameMode</span>           : Read / Write</pre>
+<p>Encoding mode.</p>
+<p>Default value: Joint Stereo</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--no-ath"></a><h3>The <code class="literal">"no-ath"</code> property</h3>
+<pre class="programlisting">  "no-ath"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>turns ATH down to a flat noise floor.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--no-short-blocks"></a><h3>The <code class="literal">"no-short-blocks"</code> property</h3>
+<pre class="programlisting">  "no-short-blocks"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Do not use short blocks.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--original"></a><h3>The <code class="literal">"original"</code> property</h3>
+<pre class="programlisting">  "original"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Mark as original.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--padding-type"></a><h3>The <code class="literal">"padding-type"</code> property</h3>
+<pre class="programlisting">  "padding-type"             <span class="type">GstLamePadding</span>        : Read / Write</pre>
+<p>Padding type (DEPRECATED: this setting has no effect).</p>
+<p>Default value: No Padding</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--preset"></a><h3>The <code class="literal">"preset"</code> property</h3>
+<pre class="programlisting">  "preset"                   <span class="type">GstLamePreset</span>         : Read / Write</pre>
+<p>Lame Preset.</p>
+<p>Default value: None</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--quality"></a><h3>The <code class="literal">"quality"</code> property</h3>
+<pre class="programlisting">  "quality"                  <span class="type">GstLameQuality</span>        : Read / Write</pre>
+<p>Quality of algorithm used for encoding.</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--strict-iso"></a><h3>The <code class="literal">"strict-iso"</code> property</h3>
+<pre class="programlisting">  "strict-iso"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Comply as much as possible to ISO MPEG spec.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr"></a><h3>The <code class="literal">"vbr"</code> property</h3>
+<pre class="programlisting">  "vbr"                      <span class="type">GstLameVbrmode</span>        : Read / Write</pre>
+<p>Specify bitrate mode.</p>
+<p>Default value: No VBR (Constant Bitrate)</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr-hard-min"></a><h3>The <code class="literal">"vbr-hard-min"</code> property</h3>
+<pre class="programlisting">  "vbr-hard-min"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Specify whether min VBR bitrate is a hard limit. Normally, it can be violated for silence.</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr-max-bitrate"></a><h3>The <code class="literal">"vbr-max-bitrate"</code> property</h3>
+<pre class="programlisting">  "vbr-max-bitrate"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Specify maximum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</p>
+<p>Allowed values: [0,320]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr-mean-bitrate"></a><h3>The <code class="literal">"vbr-mean-bitrate"</code> property</h3>
+<pre class="programlisting">  "vbr-mean-bitrate"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Specify mean VBR bitrate.</p>
+<p>Allowed values: [0,320]</p>
+<p>Default value: 128</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr-min-bitrate"></a><h3>The <code class="literal">"vbr-min-bitrate"</code> property</h3>
+<pre class="programlisting">  "vbr-min-bitrate"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Specify minimum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</p>
+<p>Allowed values: [0,320]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--vbr-quality"></a><h3>The <code class="literal">"vbr-quality"</code> property</h3>
+<pre class="programlisting">  "vbr-quality"              <span class="type">GstLameQuality</span>        : Read / Write</pre>
+<p>VBR Quality.</p>
+<p>Default value: 4</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLame--xingheader"></a><h3>The <code class="literal">"xingheader"</code> property</h3>
+<pre class="programlisting">  "xingheader"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Output Xing Header (BROKEN, use xingmux instead).</p>
+<p>Default value: FALSE</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
new file mode 100644 (file)
index 0000000..bd729b9
--- /dev/null
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>lamemp3enc</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-lame.html" title="lame">
+<link rel="next" href="gst-plugins-ugly-plugins-mad.html" title="mad">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-lame.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-mad.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-lamemp3enc.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lamemp3enc.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lamemp3enc.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lamemp3enc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-lamemp3enc.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-lamemp3enc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-lamemp3enc.top_of_page"></a>lamemp3enc</span></h2>
+<p>lamemp3enc — High-quality free MP3 encoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.synopsis"></a><h2>Synopsis</h2>
+<a name="GstLameMP3Enc"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc-struct" title="struct GstLameMP3Enc">GstLameMP3Enc</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioEncoder
+                     +----GstLameMP3Enc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstLameMP3Enc implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--bitrate" title='The "bitrate" property'>bitrate</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write / Construct
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--cbr" title='The "cbr" property'>cbr</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--encoding-engine-quality" title='The "encoding-engine-quality" property'>encoding-engine-quality</a>"  <span class="type">GstLameMP3EncEncodingEngineQuality</span>  : Read / Write / Construct
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--mono" title='The "mono" property'>mono</a>"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--quality" title='The "quality" property'>quality</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write / Construct
+  "<a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--target" title='The "target" property'>target</a>"                   <span class="type">GstLameMP3EncTarget</span>   : Read / Write / Construct
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp5936800"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-lame.html#plugin-lame">lame</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Encoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp9828416"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstLameMP3Enc-struct"></a><h3>struct GstLameMP3Enc</h3>
+<pre class="programlisting">struct GstLameMP3Enc;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-lamemp3enc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstLameMP3Enc--bitrate"></a><h3>The <code class="literal">"bitrate"</code> property</h3>
+<pre class="programlisting">  "bitrate"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write / Construct</pre>
+<p>Bitrate in kbit/sec (Only valid if target is bitrate, for CBR one of 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320).</p>
+<p>Allowed values: [8,320]</p>
+<p>Default value: 128</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLameMP3Enc--cbr"></a><h3>The <code class="literal">"cbr"</code> property</h3>
+<pre class="programlisting">  "cbr"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct</pre>
+<p>Enforce constant bitrate encoding (Only valid if target is bitrate).</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLameMP3Enc--encoding-engine-quality"></a><h3>The <code class="literal">"encoding-engine-quality"</code> property</h3>
+<pre class="programlisting">  "encoding-engine-quality"  <span class="type">GstLameMP3EncEncodingEngineQuality</span>  : Read / Write / Construct</pre>
+<p>Quality/speed of the encoding engine, this does not affect the bitrate!.</p>
+<p>Default value: Standard</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLameMP3Enc--mono"></a><h3>The <code class="literal">"mono"</code> property</h3>
+<pre class="programlisting">  "mono"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write / Construct</pre>
+<p>Enforce mono encoding.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLameMP3Enc--quality"></a><h3>The <code class="literal">"quality"</code> property</h3>
+<pre class="programlisting">  "quality"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write / Construct</pre>
+<p>VBR Quality from 0 to 10, 0 being the best (Only valid if target is quality).</p>
+<p>Allowed values: [0,9.999]</p>
+<p>Default value: 4</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstLameMP3Enc--target"></a><h3>The <code class="literal">"target"</code> property</h3>
+<pre class="programlisting">  "target"                   <span class="type">GstLameMP3EncTarget</span>   : Read / Write / Construct</pre>
+<p>Optimize for quality or bitrate.</p>
+<p>Default value: Quality</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
new file mode 100644 (file)
index 0000000..9e165e0
--- /dev/null
@@ -0,0 +1,169 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mad</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-lamemp3enc.html" title="lamemp3enc">
+<link rel="next" href="gst-plugins-ugly-plugins-mp3parse.html" title="mp3parse">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-lamemp3enc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-mp3parse.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-mad.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mad.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mad.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mad.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-mad"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-mad.top_of_page"></a>mad</span></h2>
+<p>mad — Uses mad code to decode mp3 streams</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-mad.synopsis"></a><h2>Synopsis</h2>
+<a name="GstMad"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad-struct" title="struct GstMad">GstMad</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mad.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstMad
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mad.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad--half" title='The "half" property'>half</a>"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-mad.html#GstMad--ignore-crc" title='The "ignore-crc" property'>ignore-crc</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mad.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp7340640"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-mad.html#plugin-mad">mad</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim@fluendo.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Decoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp8276480"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mad.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstMad-struct"></a><h3>struct GstMad</h3>
+<pre class="programlisting">struct GstMad;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mad.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstMad--half"></a><h3>The <code class="literal">"half"</code> property</h3>
+<pre class="programlisting">  "half"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Generate PCM at 1/2 sample rate.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMad--ignore-crc"></a><h3>The <code class="literal">"ignore-crc"</code> property</h3>
+<pre class="programlisting">  "ignore-crc"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Ignore CRC errors.</p>
+<p>Default value: TRUE</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-mp3parse.html b/docs/plugins/html/gst-plugins-ugly-plugins-mp3parse.html
new file mode 100644 (file)
index 0000000..1432714
--- /dev/null
@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mp3parse</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-mad.html" title="mad">
+<link rel="next" href="gst-plugins-ugly-plugins-rademux.html" title="rademux">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-mad.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-rademux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-mp3parse.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mp3parse.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mp3parse.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-mp3parse.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-mp3parse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-mp3parse.top_of_page"></a>mp3parse</span></h2>
+<p>mp3parse — Parses and frames mpeg1 audio streams (levels 1-3), provides seek</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-mp3parse.synopsis"></a><h2>Synopsis</h2>
+<a name="GstMPEGAudioParse"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse-struct" title="struct GstMPEGAudioParse">GstMPEGAudioParse</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mp3parse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstMPEGAudioParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mp3parse.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--bitrate" title='The "bitrate" property'>bitrate</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read
+  "<a class="link" href="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--skip" title='The "skip" property'>skip</a>"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mp3parse.description"></a><h2>Description</h2>
+<p>
+Parses and frames mpeg1 audio streams. Provides seeking.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="idp8365488"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mp3 <span class="gtkdoc opt">!</span> mp3parse <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<p>
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp9084896"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html#plugin-mpegaudioparse">mpegaudioparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Jan Schmidt &lt;thaytan@mad.scientist.com&gt;,Erik Walthinsen &lt;omega@cse.ogi.edu&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp5254992"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, parsed=(boolean)false</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ], parsed=(boolean)true</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mp3parse.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstMPEGAudioParse-struct"></a><h3>struct GstMPEGAudioParse</h3>
+<pre class="programlisting">struct GstMPEGAudioParse;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-mp3parse.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstMPEGAudioParse--bitrate"></a><h3>The <code class="literal">"bitrate"</code> property</h3>
+<pre class="programlisting">  "bitrate"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read</pre>
+<p>Bit Rate.</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMPEGAudioParse--skip"></a><h3>The <code class="literal">"skip"</code> property</h3>
+<pre class="programlisting">  "skip"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>skip.</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
new file mode 100644 (file)
index 0000000..c0fe090
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>a52dec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-amrnb.html" title="amrnb">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="ch02.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-amrnb.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-a52dec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">a52dec</span></h2>
+<p>a52dec — <a name="plugin-a52dec"></a>Decodes ATSC A/52 encoded audio streams</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp7659696"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgsta52dec.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp4867552"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-a52dec.html" title="a52dec">a52dec</a></span></p></td>
+<td>Decodes ATSC A/52 encoded audio streams</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
new file mode 100644 (file)
index 0000000..e2632e7
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>amrnb</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-a52dec.html" title="a52dec">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-amrwbdec.html" title="amrwbdec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-a52dec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-amrwbdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-amrnb"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">amrnb</span></h2>
+<p>amrnb — <a name="plugin-amrnb"></a>Adaptive Multi-Rate Narrow-Band</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6783744"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstamrnb.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>unknown</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8646192"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-amrnbdec.html" title="amrnbdec">amrnbdec</a></span></p></td>
+<td>Adaptive Multi-Rate Narrow-Band audio decoder</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-amrnbenc.html" title="amrnbenc">amrnbenc</a></span></p></td>
+<td>Adaptive Multi-Rate Narrow-Band audio encoder</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
new file mode 100644 (file)
index 0000000..f79861c
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>amrwbdec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-amrnb.html" title="amrnb">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-asf.html" title="asf">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-amrnb.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-asf.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-amrwbdec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">amrwbdec</span></h2>
+<p>amrwbdec — <a name="plugin-amrwbdec"></a>Adaptive Multi-Rate Wide-Band Decoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8247888"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstamrwbdec.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>unknown</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp9258992"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-amrwbdec.html" title="amrwbdec">amrwbdec</a></span></p></td>
+<td>Adaptive Multi-Rate Wideband audio decoder</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
new file mode 100644 (file)
index 0000000..8e91d7d
--- /dev/null
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>asf</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-amrwbdec.html" title="amrwbdec">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-cdio.html" title="cdio">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-amrwbdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-cdio.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-asf"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">asf</span></h2>
+<p>asf — <a name="plugin-asf"></a>Demuxes and muxes audio and video in Microsofts ASF format</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp5632208"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstasf.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp7882720"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">asfdemux</span></p></td>
+<td>Demultiplexes ASF Streams</td>
+</tr>
+<tr>
+<td><p><span class="term">rtpasfdepay</span></p></td>
+<td>Extracts ASF streams from RTP</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-rtspwms.html" title="rtspwms">rtspwms</a></span></p></td>
+<td>Extends RTSP so that it can handle WMS setup</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
new file mode 100644 (file)
index 0000000..ca9e0b4
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>cdio</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-asf.html" title="asf">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html" title="dvdlpcmdec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-asf.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-cdio"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">cdio</span></h2>
+<p>cdio — <a name="plugin-cdio"></a>Read audio from audio CDs</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8468816"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstcdio.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp5667472"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-cdiocddasrc.html" title="cdiocddasrc">cdiocddasrc</a></span></p></td>
+<td>Read audio from CD using libcdio</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
new file mode 100644 (file)
index 0000000..5d338f7
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>dvdlpcmdec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-cdio.html" title="cdio">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-dvdread.html" title="dvdread">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-cdio.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-dvdread.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-dvdlpcmdec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">dvdlpcmdec</span></h2>
+<p>dvdlpcmdec — <a name="plugin-dvdlpcmdec"></a>Decode DVD LPCM frames into standard PCM</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp7546544"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstdvdlpcmdec.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp5581200"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">dvdlpcmdec</span></p></td>
+<td>Decode DVD LPCM frames into standard PCM audio</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
new file mode 100644 (file)
index 0000000..dd52e47
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>dvdread</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html" title="dvdlpcmdec">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-dvdsub.html" title="dvdsub">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-dvdsub.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-dvdread"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">dvdread</span></h2>
+<p>dvdread — <a name="plugin-dvdread"></a>Access a DVD with dvdread</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6517760"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstdvdread.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8250512"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">dvdreadsrc</span></p></td>
+<td>Access a DVD title/chapter/angle using libdvdread</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
new file mode 100644 (file)
index 0000000..62335a4
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>dvdsub</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-dvdread.html" title="dvdread">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-iec958.html" title="iec958">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-dvdread.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-iec958.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-dvdsub"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">dvdsub</span></h2>
+<p>dvdsub — <a name="plugin-dvdsub"></a>DVD subtitle parser and decoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6136304"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstdvdsub.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8521344"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">dvdsubdec</span></p></td>
+<td>Decodes DVD subtitles into AYUV video frames</td>
+</tr>
+<tr>
+<td><p><span class="term">dvdsubparse</span></p></td>
+<td>Parses and packetizes DVD subtitle streams</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-iec958.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-iec958.html
new file mode 100644 (file)
index 0000000..1c07dbf
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>iec958</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-dvdsub.html" title="dvdsub">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-lame.html" title="lame">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-dvdsub.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-lame.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-iec958"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">iec958</span></h2>
+<p>iec958 — <a name="plugin-iec958"></a>Convert raw AC3 into IEC958 (S/PDIF) frames</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8080800"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstiec958.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp9487904"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">ac3iec958</span></p></td>
+<td>Pads AC3 frames into IEC958 frames suitable for a raw S/PDIF interface</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
new file mode 100644 (file)
index 0000000..7a684c9
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>lame</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-iec958.html" title="iec958">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-mad.html" title="mad">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-iec958.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mad.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-lame"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">lame</span></h2>
+<p>lame — <a name="plugin-lame"></a>Encode MP3s with LAME</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp4953456"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstlame.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp7525792"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-lame.html" title="lame">lame</a></span></p></td>
+<td>High-quality free MP3 encoder (deprecated)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-lamemp3enc.html" title="lamemp3enc">lamemp3enc</a></span></p></td>
+<td>High-quality free MP3 encoder</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
new file mode 100644 (file)
index 0000000..19d1ca0
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mad</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-lame.html" title="lame">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html" title="mpeg2dec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-lame.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-mad"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">mad</span></h2>
+<p>mad — <a name="plugin-mad"></a>mp3 decoding based on the mad library</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8426880"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstmad.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8079888"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-mad.html" title="mad">mad</a></span></p></td>
+<td>Uses mad code to decode mp3 streams</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
new file mode 100644 (file)
index 0000000..b7c4342
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mpeg2dec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-mad.html" title="mad">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html" title="mpegaudioparse">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-mad.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-mpeg2dec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">mpeg2dec</span></h2>
+<p>mpeg2dec — <a name="plugin-mpeg2dec"></a>LibMpeg2 decoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6115312"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstmpeg2dec.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8846208"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term">mpeg2dec</span></p></td>
+<td>Uses libmpeg2 to decode MPEG video streams</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegaudioparse.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegaudioparse.html
new file mode 100644 (file)
index 0000000..c9b48eb
--- /dev/null
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mpegaudioparse</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html" title="mpeg2dec">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-mpegstream.html" title="mpegstream">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-mpegstream.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-mpegaudioparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">mpegaudioparse</span></h2>
+<p>mpegaudioparse — <a name="plugin-mpegaudioparse"></a>MPEG-1 layer 1/2/3 audio stream elements</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp5888064"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstmpegaudioparse.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp7408016"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-mp3parse.html" title="mp3parse">mp3parse</a></span></p></td>
+<td>Parses and frames mpeg1 audio streams (levels 1-3), provides seek</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-xingmux.html" title="xingmux">xingmux</a></span></p></td>
+<td>Adds a Xing header to the beginning of a VBR MP3 file</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegstream.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpegstream.html
new file mode 100644 (file)
index 0000000..21769ff
--- /dev/null
@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>mpegstream</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html" title="mpegaudioparse">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-realmedia.html" title="realmedia">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-realmedia.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-mpegstream"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">mpegstream</span></h2>
+<p>mpegstream — <a name="plugin-mpegstream"></a>MPEG system stream parser</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp10085440"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstmpegstream.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp5222304"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">dvddemux</span></p></td>
+<td>Demultiplexes DVD (VOB) MPEG2 streams</td>
+</tr>
+<tr>
+<td><p><span class="term">mpegdemux</span></p></td>
+<td>Demultiplexes MPEG1 and MPEG2 System Streams</td>
+</tr>
+<tr>
+<td><p><span class="term">mpegparse</span></p></td>
+<td>Parses MPEG1 and MPEG2 System Streams</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
new file mode 100644 (file)
index 0000000..9124106
--- /dev/null
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>realmedia</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-mpegstream.html" title="mpegstream">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-siddec.html" title="siddec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-mpegstream.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-siddec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-realmedia"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">realmedia</span></h2>
+<p>realmedia — <a name="plugin-realmedia"></a>RealMedia support plugins</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp9059792"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstrmdemux.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8998688"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">pnmsrc</span></p></td>
+<td>Receive data over the network via PNM</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-rademux.html" title="rademux">rademux</a></span></p></td>
+<td>Demultiplex a RealAudio file</td>
+</tr>
+<tr>
+<td><p><span class="term">rdtdepay</span></p></td>
+<td>Extracts RealMedia from RDT packets</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html" title="rdtmanager">rdtmanager</a></span></p></td>
+<td>Accepts raw RTP and RTCP packets and sends them forward</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-rmdemux.html" title="rmdemux">rmdemux</a></span></p></td>
+<td>Demultiplex a RealMedia file into audio and video streams</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-rtspreal.html" title="rtspreal">rtspreal</a></span></p></td>
+<td>Extends RTSP so that it can handle RealMedia setup</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
new file mode 100644 (file)
index 0000000..4fec4c3
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>siddec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-realmedia.html" title="realmedia">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-synaesthesia.html" title="synaesthesia">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-realmedia.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-synaesthesia.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-siddec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">siddec</span></h2>
+<p>siddec — <a name="plugin-siddec"></a>Uses libsidplay to decode .sid files</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8896240"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstsid.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8301488"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-siddec.html" title="siddec">siddec</a></span></p></td>
+<td>Use libsidplay to decode SID audio tunes</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html
new file mode 100644 (file)
index 0000000..05ffb86
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>synaesthesia</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-siddec.html" title="siddec">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-twolame.html" title="twolame">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-siddec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-twolame.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-synaesthesia"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">synaesthesia</span></h2>
+<p>synaesthesia — <a name="plugin-synaesthesia"></a>Creates video visualizations of audio input, using stereo and pitch information</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6385120"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstsynaesthesia.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.17.4</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins prerelease</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp6254448"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-synaesthesia.html" title="synaesthesia">synaesthesia</a></span></p></td>
+<td>Creates video visualizations of audio input, using stereo and pitch information</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
new file mode 100644 (file)
index 0000000..31c962f
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>twolame</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-synaesthesia.html" title="synaesthesia">
+<link rel="next" href="gst-plugins-ugly-plugins-plugin-x264.html" title="x264">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-synaesthesia.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-plugin-x264.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-twolame"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">twolame</span></h2>
+<p>twolame — <a name="plugin-twolame"></a>Encode MP2s with TwoLAME</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp6340256"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgsttwolame.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8409632"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-twolame.html" title="twolame">twolame</a></span></p></td>
+<td>High-quality free MP2 encoder</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
new file mode 100644 (file)
index 0000000..285e27d
--- /dev/null
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x264</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-ugly Plugins">
+<link rel="prev" href="gst-plugins-ugly-plugins-plugin-twolame.html" title="twolame">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-plugin-twolame.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td> </td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-plugin-x264"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">x264</span></h2>
+<p>x264 — <a name="plugin-x264"></a>libx264-based H264 plugins</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="idp8143776"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstx264.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>0.10.19</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>GPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Ugly Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="idp8132800"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-ugly-plugins-x264enc.html" title="x264enc">x264enc</a></span></p></td>
+<td>H264 Encoder</td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
new file mode 100644 (file)
index 0000000..0101215
--- /dev/null
@@ -0,0 +1,181 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rademux</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-mp3parse.html" title="mp3parse">
+<link rel="next" href="gst-plugins-ugly-plugins-rmdemux.html" title="rmdemux">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-mp3parse.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-rmdemux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-rademux.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rademux.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rademux.object-hierarchy" class="shortcut">Object Hierarchy</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-rademux"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-rademux.top_of_page"></a>rademux</span></h2>
+<p>rademux — Demultiplex a RealAudio file</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-rademux.synopsis"></a><h2>Synopsis</h2>
+<a name="GstRealAudioDemux"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-rademux.html#GstRealAudioDemux-struct" title="struct GstRealAudioDemux">GstRealAudioDemux</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rademux.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstRealAudioDemux
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rademux.description"></a><h2>Description</h2>
+<p>
+Demuxes/parses a RealAudio (.ra) file or stream into compressed audio.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="idp6282496"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>interview<span class="gtkdoc opt">.</span>ra <span class="gtkdoc opt">!</span> rademux <span class="gtkdoc opt">!</span> ffdec_real_288 <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Read a RealAudio file and decode it and output it to the soundcard using
+the ALSA element. The .ra file is assumed to contain RealAudio version 2.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch gnomevfssrc location<span class="gtkdoc opt">=</span>http<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//www.example.org/interview.ra ! rademux ! a52dec ! audioconvert ! audioresample ! alsasink</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Stream RealAudio data containing AC3 (dnet) compressed audio and decode it
+and output it to the soundcard using the ALSA element.
+</div>
+<p>
+</p>
+<p>
+Last reviewed on 2006-10-24 (0.10.5)
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp8915440"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">realmedia</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Tim-Philipp Müller &lt;tim centricular net&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Demuxer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp5275184"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/x-pn-realaudio</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>sometimes</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rademux.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstRealAudioDemux-struct"></a><h3>struct GstRealAudioDemux</h3>
+<pre class="programlisting">struct GstRealAudioDemux;</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html b/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
new file mode 100644 (file)
index 0000000..76db9be
--- /dev/null
@@ -0,0 +1,378 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rdtmanager</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-rmdemux.html" title="rmdemux">
+<link rel="next" href="gst-plugins-ugly-plugins-rtspreal.html" title="rtspreal">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-rmdemux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-rtspreal.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-rdtmanager.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rdtmanager.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rdtmanager.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rdtmanager.properties" class="shortcut">Properties</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rdtmanager.signals" class="shortcut">Signals</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-rdtmanager"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-rdtmanager.top_of_page"></a>rdtmanager</span></h2>
+<p>rdtmanager — Accepts raw RTP and RTCP packets and sends them forward</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-rdtmanager.synopsis"></a><h2>Synopsis</h2>
+<a name="GstRDTManager"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-struct" title="struct GstRDTManager">GstRDTManager</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstRDTManager
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager--latency" title='The "latency" property'>latency</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.signals"></a><h2>Signals</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-clear-pt-map" title='The "clear-pt-map" signal'>clear-pt-map</a>"                                   : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-ssrc" title='The "on-bye-ssrc" signal'>on-bye-ssrc</a>"                                    : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-timeout" title='The "on-bye-timeout" signal'>on-bye-timeout</a>"                                 : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-timeout" title='The "on-timeout" signal'>on-timeout</a>"                                     : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
+  "<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-request-pt-map" title='The "request-pt-map" signal'>request-pt-map</a>"                                 : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.description"></a><h2>Description</h2>
+<p>
+A simple RTP session manager used internally by rtspsrc.
+</p>
+<p>
+Last reviewed on 2006-06-20 (0.10.4)
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp10233328"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">realmedia</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim@fluendo.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Network</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp8574560"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>recv_rtcp_sink_%d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/x-rtcp</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>recv_rtp_sink_%d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/x-rdt</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>recv_rtp_src_%d_%d_%d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>sometimes</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/x-rdt</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>rtcp_src_%d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/x-rtcp</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstRDTManager-struct"></a><h3>struct GstRDTManager</h3>
+<pre class="programlisting">struct GstRDTManager;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstRDTManager--latency"></a><h3>The <code class="literal">"latency"</code> property</h3>
+<pre class="programlisting">  "latency"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Amount of ms to buffer.</p>
+<p>Default value: 200</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstRDTManager-clear-pt-map"></a><h3>The <code class="literal">"clear-pt-map"</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager"><span class="type">GstRDTManager</span></a> *rtpbin,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)      : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
+<p>
+Clear all previously cached pt-mapping obtained with
+GstRDTManager::request-pt-map.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td>
+<td>the object which received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRDTManager-on-bye-ssrc"></a><h3>The <code class="literal">"on-bye-ssrc"</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager"><span class="type">GstRDTManager</span></a> *rtpbin,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          session,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          ssrc,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)      : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
+<p>
+Notify of an SSRC that became inactive because of a BYE packet.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td>
+<td>the object which received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
+<td>the session</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ssrc</code></em> :</span></p></td>
+<td>the SSRC</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRDTManager-on-bye-timeout"></a><h3>The <code class="literal">"on-bye-timeout"</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager"><span class="type">GstRDTManager</span></a> *rtpbin,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          session,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          ssrc,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)      : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
+<p>
+Notify of an SSRC that has timed out because of BYE
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td>
+<td>the object which received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
+<td>the session</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ssrc</code></em> :</span></p></td>
+<td>the SSRC</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRDTManager-on-timeout"></a><h3>The <code class="literal">"on-timeout"</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>                user_function                      (<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager"><span class="type">GstRDTManager</span></a> *rtpbin,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          session,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          ssrc,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)      : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
+<p>
+Notify of an SSRC that has timed out
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rtpbin</code></em> :</span></p></td>
+<td>the object which received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
+<td>the session</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ssrc</code></em> :</span></p></td>
+<td>the SSRC</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRDTManager-request-pt-map"></a><h3>The <code class="literal">"request-pt-map"</code> signal</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="returnvalue">GstCaps</span></a>*            user_function                      (<a class="link" href="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager"><span class="type">GstRDTManager</span></a> *rdtmanager,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          session,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>          pt,
+                                                        <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)       : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
+<p>
+Request the payload type as <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>pt</code></em> in <em class="parameter"><code>session</code></em>.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>rdtmanager</code></em> :</span></p></td>
+<td>the object which received the signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session</code></em> :</span></p></td>
+<td>the session</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>pt</code></em> :</span></p></td>
+<td>the pt</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
+<td>user data set when the signal handler was connected.</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rdtmanager.see-also"></a><h2>See Also</h2>
+GstRtspSrc
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
new file mode 100644 (file)
index 0000000..1fd2a29
--- /dev/null
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rmdemux</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-rademux.html" title="rademux">
+<link rel="next" href="gst-plugins-ugly-plugins-rdtmanager.html" title="rdtmanager">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-rademux.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-rdtmanager.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-rmdemux.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rmdemux.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rmdemux.object-hierarchy" class="shortcut">Object Hierarchy</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-rmdemux"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-rmdemux.top_of_page"></a>rmdemux</span></h2>
+<p>rmdemux — Demultiplex a RealMedia file into audio and video streams</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-rmdemux.synopsis"></a><h2>Synopsis</h2>
+<a name="GstRMDemux"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-rmdemux.html#GstRMDemux-struct" title="struct GstRMDemux">GstRMDemux</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rmdemux.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstRMDemux
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rmdemux.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp4797648"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">realmedia</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>David Schleef &lt;ds@schleef.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Demuxer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp5582160"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>application/vnd.rn-realmedia</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>audio_%02d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>sometimes</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>video_%02d</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>sometimes</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rmdemux.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstRMDemux-struct"></a><h3>struct GstRMDemux</h3>
+<pre class="programlisting">struct GstRMDemux;</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
new file mode 100644 (file)
index 0000000..da06d31
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rtspreal</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-rdtmanager.html" title="rdtmanager">
+<link rel="next" href="gst-plugins-ugly-plugins-rtspwms.html" title="rtspwms">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-rdtmanager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-rtspwms.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-rtspreal.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspreal.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspreal.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspreal.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-rtspreal"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-rtspreal.top_of_page"></a>rtspreal</span></h2>
+<p>rtspreal — Extends RTSP so that it can handle RealMedia setup</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-rtspreal.synopsis"></a><h2>Synopsis</h2>
+<a name="GstRTSPReal"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-rtspreal.html#GstRTSPReal-struct" title="struct GstRTSPReal">GstRTSPReal</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspreal.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstRTSPReal
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspreal.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstRTSPReal implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtspextension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspreal.description"></a><h2>Description</h2>
+<p>
+A RealMedia RTSP extension
+</p>
+<p>
+Last reviewed on 2007-07-25 (0.10.14)
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp6966384"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">realmedia</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim.taymans@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Network/Extension/Protocol</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp6973808"></a><h3>Element Pads</h3>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspreal.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstRTSPReal-struct"></a><h3>struct GstRTSPReal</h3>
+<pre class="programlisting">struct GstRTSPReal;</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
new file mode 100644 (file)
index 0000000..67e54ea
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rtspwms</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-rtspreal.html" title="rtspreal">
+<link rel="next" href="gst-plugins-ugly-plugins-siddec.html" title="siddec">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-rtspreal.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-siddec.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-rtspwms.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspwms.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspwms.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-rtspwms.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-rtspwms"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-rtspwms.top_of_page"></a>rtspwms</span></h2>
+<p>rtspwms — Extends RTSP so that it can handle WMS setup</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-rtspwms.synopsis"></a><h2>Synopsis</h2>
+<a name="GstRTSPWMS"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-rtspwms.html#GstRTSPWMS-struct" title="struct GstRTSPWMS">GstRTSPWMS</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspwms.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstRTSPWMS
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspwms.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstRTSPWMS implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstrtspextension.html#GstRTSPExtension">GstRTSPExtension</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspwms.description"></a><h2>Description</h2>
+<p>
+A WMS RTSP extension
+</p>
+<p>
+Last reviewed on 2007-07-25 (0.10.14)
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp7112144"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-asf.html#plugin-asf">asf</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim.taymans@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Network/Extension/Protocol</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp9193584"></a><h3>Element Pads</h3>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-rtspwms.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstRTSPWMS-struct"></a><h3>struct GstRTSPWMS</h3>
+<pre class="programlisting">struct GstRTSPWMS;</pre>
+<p>
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
new file mode 100644 (file)
index 0000000..c5e4257
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>siddec</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-rtspwms.html" title="rtspwms">
+<link rel="next" href="gst-plugins-ugly-plugins-twolame.html" title="twolame">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-rtspwms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-twolame.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-siddec.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-siddec.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-siddec.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-siddec.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-siddec"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-siddec.top_of_page"></a>siddec</span></h2>
+<p>siddec — Use libsidplay to decode SID audio tunes</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-siddec.synopsis"></a><h2>Synopsis</h2>
+<a name="GstSidDec"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec-struct" title="struct GstSidDec">GstSidDec</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-siddec.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstSidDec
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-siddec.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--blocksize" title='The "blocksize" property'>blocksize</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--clock" title='The "clock" property'>clock</a>"                    <span class="type">GstSidClock</span>           : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--filter" title='The "filter" property'>filter</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--force-speed" title='The "force-speed" property'>force-speed</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--measured-volume" title='The "measured-volume" property'>measured-volume</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--memory" title='The "memory" property'>memory</a>"                   <span class="type">GstSidMemory</span>          : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--metadata" title='The "metadata" property'>metadata</a>"                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>*              : Read
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--mos8580" title='The "mos8580" property'>mos8580</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-siddec.html#GstSidDec--tune" title='The "tune" property'>tune</a>"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-siddec.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp9946320"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-siddec.html#plugin-siddec">siddec</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Wim Taymans &lt;wim.taymans@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Decoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp10393200"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-sid</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, endianness=(int)1234, signed=(boolean){ true, false }, width=(int){ 8, 16 }, depth=(int){ 8, 16 }, rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-siddec.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstSidDec-struct"></a><h3>struct GstSidDec</h3>
+<pre class="programlisting">struct GstSidDec;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-siddec.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstSidDec--blocksize"></a><h3>The <code class="literal">"blocksize"</code> property</h3>
+<pre class="programlisting">  "blocksize"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gulong"><span class="type">gulong</span></a>                : Read / Write</pre>
+<p>Size in bytes to output per buffer.</p>
+<p>Allowed values: &gt;= 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--clock"></a><h3>The <code class="literal">"clock"</code> property</h3>
+<pre class="programlisting">  "clock"                    <span class="type">GstSidClock</span>           : Read / Write</pre>
+<p>clock.</p>
+<p>Default value: PAL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--filter"></a><h3>The <code class="literal">"filter"</code> property</h3>
+<pre class="programlisting">  "filter"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>filter.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--force-speed"></a><h3>The <code class="literal">"force-speed"</code> property</h3>
+<pre class="programlisting">  "force-speed"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>force_speed.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--measured-volume"></a><h3>The <code class="literal">"measured-volume"</code> property</h3>
+<pre class="programlisting">  "measured-volume"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>measured_volume.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--memory"></a><h3>The <code class="literal">"memory"</code> property</h3>
+<pre class="programlisting">  "memory"                   <span class="type">GstSidMemory</span>          : Read / Write</pre>
+<p>memory.</p>
+<p>Default value: Bank Switching</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--metadata"></a><h3>The <code class="literal">"metadata"</code> property</h3>
+<pre class="programlisting">  "metadata"                 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#GstCaps"><span class="type">GstCaps</span></a>*              : Read</pre>
+<p>Metadata.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--mos8580"></a><h3>The <code class="literal">"mos8580"</code> property</h3>
+<pre class="programlisting">  "mos8580"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>mos8580.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstSidDec--tune"></a><h3>The <code class="literal">"tune"</code> property</h3>
+<pre class="programlisting">  "tune"                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>tune.</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html b/docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html
new file mode 100644 (file)
index 0000000..2eadc99
--- /dev/null
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>synaesthesia</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-twolame.html" title="twolame">
+<link rel="next" href="gst-plugins-ugly-plugins-x264enc.html" title="x264enc">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-twolame.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-x264enc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-synaesthesia.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-synaesthesia.description" class="shortcut">Description</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-synaesthesia"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-synaesthesia.top_of_page"></a>synaesthesia</span></h2>
+<p>synaesthesia — Creates video visualizations of audio input, using stereo and pitch information</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-synaesthesia.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-synaesthesia.html#GstSynaesthesia" title="struct GstSynaesthesia">GstSynaesthesia</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-synaesthesia.description"></a><h2>Description</h2>
+<p>
+Synaesthesia is an audio visualisation element. It creates glitter and
+pulsating fog based on the incomming audio signal.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="idp7264000"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v audiotestsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> synaesthesia <span class="gtkdoc opt">!</span> ximagesink
+gst<span class="gtkdoc opt">-</span>launch <span class="gtkdoc opt">-</span>v audiotestsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> synaesthesia <span class="gtkdoc opt">!</span> ffmpegcolorspace <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<p>
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp10206544"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-synaesthesia.html#plugin-synaesthesia">synaesthesia</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Richard Boulton &lt;richard@tartarus.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Visualization</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp7162976"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-int, rate=(int)[ 1, 2147483647 ], channels=(int)2, endianness=(int)1234, width=(int)16, depth=(int)16, signed=(boolean)true</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-synaesthesia.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstSynaesthesia"></a><h3>struct GstSynaesthesia</h3>
+<pre class="programlisting">struct GstSynaesthesia {
+  GstElement element;
+
+  /* pads */
+  GstPad *sinkpad, *srcpad;
+  GstAdapter *adapter;
+
+  guint64 next_ts;              /* the timestamp of the next frame */
+  guint64 frame_duration;
+  guint bps;                    /* bytes per sample        */
+  guint spf;                    /* samples per video frame */
+
+  gint16 datain[2][FFT_BUFFER_SIZE];
+
+  /* video state */
+  gint fps_n, fps_d;
+  gint width;
+  gint height;
+  gint channels;
+
+  /* Audio state */
+  gint sample_rate;
+  gint rate;
+
+  /* Synaesthesia instance */
+  syn_instance *si;
+};
+</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-synaesthesia.see-also"></a><h2>See Also</h2>
+goom
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html b/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
new file mode 100644 (file)
index 0000000..45a6abf
--- /dev/null
@@ -0,0 +1,291 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>twolame</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-siddec.html" title="siddec">
+<link rel="next" href="gst-plugins-ugly-plugins-synaesthesia.html" title="synaesthesia">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-siddec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-synaesthesia.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-twolame.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-twolame.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-twolame.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-twolame.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-twolame.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-twolame"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-twolame.top_of_page"></a>twolame</span></h2>
+<p>twolame — High-quality free MP2 encoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-twolame.synopsis"></a><h2>Synopsis</h2>
+<a name="GstTwoLame"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame-struct" title="struct GstTwoLame">GstTwoLame</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstAudioEncoder
+                     +----GstTwoLame
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstTwoLame implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--ath-level" title='The "ath-level" property'>ath-level</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--bitrate" title='The "bitrate" property'>bitrate</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--copyright" title='The "copyright" property'>copyright</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--emphasis" title='The "emphasis" property'>emphasis</a>"                 <span class="type">GstTwoLameEmphasis</span>    : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--energy-level-extension" title='The "energy-level-extension" property'>energy-level-extension</a>"   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--error-protection" title='The "error-protection" property'>error-protection</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--mode" title='The "mode" property'>mode</a>"                     <span class="type">GstTwoLameMode</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--original" title='The "original" property'>original</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--padding" title='The "padding" property'>padding</a>"                  <span class="type">GstTwoLamePadding</span>     : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--psymodel" title='The "psymodel" property'>psymodel</a>"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode" title='The "quick-mode" property'>quick-mode</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode-count" title='The "quick-mode-count" property'>quick-mode-count</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr" title='The "vbr" property'>vbr</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-level" title='The "vbr-level" property'>vbr-level</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-max-bitrate" title='The "vbr-max-bitrate" property'>vbr-max-bitrate</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp10490800"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-twolame.html#plugin-twolame">twolame</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Encoder/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp10498208"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)2, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstTwoLame-struct"></a><h3>struct GstTwoLame</h3>
+<pre class="programlisting">struct GstTwoLame;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-twolame.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstTwoLame--ath-level"></a><h3>The <code class="literal">"ath-level"</code> property</h3>
+<pre class="programlisting">  "ath-level"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write</pre>
+<p>ATH Level in dB.</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--bitrate"></a><h3>The <code class="literal">"bitrate"</code> property</h3>
+<pre class="programlisting">  "bitrate"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320, 384).</p>
+<p>Allowed values: [8,384]</p>
+<p>Default value: 192</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--copyright"></a><h3>The <code class="literal">"copyright"</code> property</h3>
+<pre class="programlisting">  "copyright"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Mark as copyright.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--emphasis"></a><h3>The <code class="literal">"emphasis"</code> property</h3>
+<pre class="programlisting">  "emphasis"                 <span class="type">GstTwoLameEmphasis</span>    : Read / Write</pre>
+<p>Pre-emphasis to apply to the decoded audio.</p>
+<p>Default value: No emphasis</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--energy-level-extension"></a><h3>The <code class="literal">"energy-level-extension"</code> property</h3>
+<pre class="programlisting">  "energy-level-extension"   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Write peak PCM level to each frame.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--error-protection"></a><h3>The <code class="literal">"error-protection"</code> property</h3>
+<pre class="programlisting">  "error-protection"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Adds checksum to every frame.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
+<pre class="programlisting">  "mode"                     <span class="type">GstTwoLameMode</span>        : Read / Write</pre>
+<p>Encoding mode.</p>
+<p>Default value: Joint Stereo</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--original"></a><h3>The <code class="literal">"original"</code> property</h3>
+<pre class="programlisting">  "original"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Mark as original.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--padding"></a><h3>The <code class="literal">"padding"</code> property</h3>
+<pre class="programlisting">  "padding"                  <span class="type">GstTwoLamePadding</span>     : Read / Write</pre>
+<p>Padding type.</p>
+<p>Default value: No Padding</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--psymodel"></a><h3>The <code class="literal">"psymodel"</code> property</h3>
+<pre class="programlisting">  "psymodel"                 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Psychoacoustic model used to encode the audio.</p>
+<p>Allowed values: [G_MAXULONG,4]</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--quick-mode"></a><h3>The <code class="literal">"quick-mode"</code> property</h3>
+<pre class="programlisting">  "quick-mode"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Calculate Psymodel every frames.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--quick-mode-count"></a><h3>The <code class="literal">"quick-mode-count"</code> property</h3>
+<pre class="programlisting">  "quick-mode-count"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Calculate Psymodel every n frames.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--vbr"></a><h3>The <code class="literal">"vbr"</code> property</h3>
+<pre class="programlisting">  "vbr"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Enable variable bitrate mode.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--vbr-level"></a><h3>The <code class="literal">"vbr-level"</code> property</h3>
+<pre class="programlisting">  "vbr-level"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write</pre>
+<p>VBR Level.</p>
+<p>Allowed values: [-10,10]</p>
+<p>Default value: 5</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstTwoLame--vbr-max-bitrate"></a><h3>The <code class="literal">"vbr-max-bitrate"</code> property</h3>
+<pre class="programlisting">  "vbr-max-bitrate"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Specify maximum VBR bitrate (0=off, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320, 384).</p>
+<p>Allowed values: [0,384]</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
new file mode 100644 (file)
index 0000000..697a525
--- /dev/null
@@ -0,0 +1,488 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>x264enc</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-synaesthesia.html" title="synaesthesia">
+<link rel="next" href="gst-plugins-ugly-plugins-xingmux.html" title="xingmux">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-synaesthesia.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="gst-plugins-ugly-plugins-xingmux.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-x264enc.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-x264enc.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-x264enc.object-hierarchy" class="shortcut">Object Hierarchy</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-x264enc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-x264enc.properties" class="shortcut">Properties</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-x264enc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-x264enc.top_of_page"></a>x264enc</span></h2>
+<p>x264enc — H264 Encoder</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-x264enc.synopsis"></a><h2>Synopsis</h2>
+<a name="GstX264Enc"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc-struct" title="struct GstX264Enc">GstX264Enc</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstX264Enc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstX264Enc implements
+ <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPreset.html">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.properties"></a><h2>Properties</h2>
+<pre class="synopsis">
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--analyse" title='The "analyse" property'>analyse</a>"                  <span class="type">GstX264EncAnalyse</span>     : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--aud" title='The "aud" property'>aud</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-adapt" title='The "b-adapt" property'>b-adapt</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-pyramid" title='The "b-pyramid" property'>b-pyramid</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bframes" title='The "bframes" property'>bframes</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bitrate" title='The "bitrate" property'>bitrate</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--byte-stream" title='The "byte-stream" property'>byte-stream</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--cabac" title='The "cabac" property'>cabac</a>"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--dct8x8" title='The "dct8x8" property'>dct8x8</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--interlaced" title='The "interlaced" property'>interlaced</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ip-factor" title='The "ip-factor" property'>ip-factor</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--key-int-max" title='The "key-int-max" property'>key-int-max</a>"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--me" title='The "me" property'>me</a>"                       <span class="type">GstX264EncMe</span>          : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--multipass-cache-file" title='The "multipass-cache-file" property'>multipass-cache-file</a>"     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--noise-reduction" title='The "noise-reduction" property'>noise-reduction</a>"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pass" title='The "pass" property'>pass</a>"                     <span class="type">GstX264EncPass</span>        : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pb-factor" title='The "pb-factor" property'>pb-factor</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-max" title='The "qp-max" property'>qp-max</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-min" title='The "qp-min" property'>qp-min</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-step" title='The "qp-step" property'>qp-step</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--quantizer" title='The "quantizer" property'>quantizer</a>"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ref" title='The "ref" property'>ref</a>"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sps-id" title='The "sps-id" property'>sps-id</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--stats-file" title='The "stats-file" property'>stats-file</a>"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--subme" title='The "subme" property'>subme</a>"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--threads" title='The "threads" property'>threads</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--trellis" title='The "trellis" property'>trellis</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--vbv-buf-capacity" title='The "vbv-buf-capacity" property'>vbv-buf-capacity</a>"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--weightb" title='The "weightb" property'>weightb</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--intra-refresh" title='The "intra-refresh" property'>intra-refresh</a>"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--mb-tree" title='The "mb-tree" property'>mb-tree</a>"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--rc-lookahead" title='The "rc-lookahead" property'>rc-lookahead</a>"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sliced-threads" title='The "sliced-threads" property'>sliced-threads</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sync-lookahead" title='The "sync-lookahead" property'>sync-lookahead</a>"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--option-string" title='The "option-string" property'>option-string</a>"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--profile" title='The "profile" property'>profile</a>"                  <span class="type">GstX264EncProfile</span>     : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--psy-tune" title='The "psy-tune" property'>psy-tune</a>"                 <span class="type">GstX264EncPsyTune</span>     : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--speed-preset" title='The "speed-preset" property'>speed-preset</a>"             <span class="type">GstX264EncPreset</span>      : Read / Write
+  "<a class="link" href="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--tune" title='The "tune" property'>tune</a>"                     <span class="type">GstX264EncTune</span>        : Read / Write
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp10784896"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-x264.html#plugin-x264">x264</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Josef Zlomek &lt;josef.zlomek@itonis.tv&gt;, Mark Nauwelaerts &lt;mnauw@users.sf.net&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Encoder/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp10792304"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw-yuv, format=(fourcc){ I420, YV12 }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-h264, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], stream-format=(string){ byte-stream, avc }, alignment=(string){ au }, profile=(string){ high-10, high, main, constrained-baseline, high-10-intra }</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstX264Enc-struct"></a><h3>struct GstX264Enc</h3>
+<pre class="programlisting">struct GstX264Enc;</pre>
+<p>
+</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-x264enc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstX264Enc--analyse"></a><h3>The <code class="literal">"analyse"</code> property</h3>
+<pre class="programlisting">  "analyse"                  <span class="type">GstX264EncAnalyse</span>     : Read / Write</pre>
+<p>Partitions to consider.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--aud"></a><h3>The <code class="literal">"aud"</code> property</h3>
+<pre class="programlisting">  "aud"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Use AU (Access Unit) delimiter.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--b-adapt"></a><h3>The <code class="literal">"b-adapt"</code> property</h3>
+<pre class="programlisting">  "b-adapt"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Automatically decide how many B-frames to use.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--b-pyramid"></a><h3>The <code class="literal">"b-pyramid"</code> property</h3>
+<pre class="programlisting">  "b-pyramid"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Keep some B-frames as references.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--bframes"></a><h3>The <code class="literal">"bframes"</code> property</h3>
+<pre class="programlisting">  "bframes"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Number of B-frames between I and P.</p>
+<p>Allowed values: &lt;= 4</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--bitrate"></a><h3>The <code class="literal">"bitrate"</code> property</h3>
+<pre class="programlisting">  "bitrate"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Bitrate in kbit/sec.</p>
+<p>Allowed values: [1,102400]</p>
+<p>Default value: 2048</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--byte-stream"></a><h3>The <code class="literal">"byte-stream"</code> property</h3>
+<pre class="programlisting">  "byte-stream"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Generate byte stream format of NALU.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--cabac"></a><h3>The <code class="literal">"cabac"</code> property</h3>
+<pre class="programlisting">  "cabac"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Enable CABAC entropy coding.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--dct8x8"></a><h3>The <code class="literal">"dct8x8"</code> property</h3>
+<pre class="programlisting">  "dct8x8"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Adaptive spatial transform size.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--interlaced"></a><h3>The <code class="literal">"interlaced"</code> property</h3>
+<pre class="programlisting">  "interlaced"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Interlaced material.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--ip-factor"></a><h3>The <code class="literal">"ip-factor"</code> property</h3>
+<pre class="programlisting">  "ip-factor"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write</pre>
+<p>Quantizer factor between I- and P-frames.</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1.4</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--key-int-max"></a><h3>The <code class="literal">"key-int-max"</code> property</h3>
+<pre class="programlisting">  "key-int-max"              <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Maximal distance between two key-frames (0 for automatic).</p>
+<p>Allowed values: &lt;= G_MAXINT</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--me"></a><h3>The <code class="literal">"me"</code> property</h3>
+<pre class="programlisting">  "me"                       <span class="type">GstX264EncMe</span>          : Read / Write</pre>
+<p>Integer pixel motion estimation method.</p>
+<p>Default value: hex</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--multipass-cache-file"></a><h3>The <code class="literal">"multipass-cache-file"</code> property</h3>
+<pre class="programlisting">  "multipass-cache-file"     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
+<p>Filename for multipass cache file.</p>
+<p>Default value: "x264.log"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--noise-reduction"></a><h3>The <code class="literal">"noise-reduction"</code> property</h3>
+<pre class="programlisting">  "noise-reduction"          <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Noise reduction strength.</p>
+<p>Allowed values: &lt;= 100000</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--pass"></a><h3>The <code class="literal">"pass"</code> property</h3>
+<pre class="programlisting">  "pass"                     <span class="type">GstX264EncPass</span>        : Read / Write</pre>
+<p>Encoding pass/type.</p>
+<p>Default value: Constant Bitrate Encoding</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--pb-factor"></a><h3>The <code class="literal">"pb-factor"</code> property</h3>
+<pre class="programlisting">  "pb-factor"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a>                : Read / Write</pre>
+<p>Quantizer factor between P- and B-frames.</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1.3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--qp-max"></a><h3>The <code class="literal">"qp-max"</code> property</h3>
+<pre class="programlisting">  "qp-max"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Maximum quantizer.</p>
+<p>Allowed values: [1,51]</p>
+<p>Default value: 51</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--qp-min"></a><h3>The <code class="literal">"qp-min"</code> property</h3>
+<pre class="programlisting">  "qp-min"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Minimum quantizer.</p>
+<p>Allowed values: [1,51]</p>
+<p>Default value: 10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--qp-step"></a><h3>The <code class="literal">"qp-step"</code> property</h3>
+<pre class="programlisting">  "qp-step"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Maximum quantizer difference between frames.</p>
+<p>Allowed values: [1,50]</p>
+<p>Default value: 4</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--quantizer"></a><h3>The <code class="literal">"quantizer"</code> property</h3>
+<pre class="programlisting">  "quantizer"                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Constant quantizer or quality to apply.</p>
+<p>Allowed values: [1,50]</p>
+<p>Default value: 21</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--ref"></a><h3>The <code class="literal">"ref"</code> property</h3>
+<pre class="programlisting">  "ref"                      <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Number of reference frames.</p>
+<p>Allowed values: [1,12]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--sps-id"></a><h3>The <code class="literal">"sps-id"</code> property</h3>
+<pre class="programlisting">  "sps-id"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>SPS and PPS ID number.</p>
+<p>Allowed values: &lt;= 31</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--stats-file"></a><h3>The <code class="literal">"stats-file"</code> property</h3>
+<pre class="programlisting">  "stats-file"               <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
+<p>Filename for multipass statistics (deprecated, use multipass-cache-file).</p>
+<p>Default value: "x264.log"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--subme"></a><h3>The <code class="literal">"subme"</code> property</h3>
+<pre class="programlisting">  "subme"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Subpixel motion estimation and partition decision quality: 1=fast, 10=best.</p>
+<p>Allowed values: [1,10]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--threads"></a><h3>The <code class="literal">"threads"</code> property</h3>
+<pre class="programlisting">  "threads"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Number of threads used by the codec (0 for automatic).</p>
+<p>Allowed values: &lt;= 4</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--trellis"></a><h3>The <code class="literal">"trellis"</code> property</h3>
+<pre class="programlisting">  "trellis"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Enable trellis searched quantization.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--vbv-buf-capacity"></a><h3>The <code class="literal">"vbv-buf-capacity"</code> property</h3>
+<pre class="programlisting">  "vbv-buf-capacity"         <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
+<p>Size of the VBV buffer in milliseconds.</p>
+<p>Allowed values: &lt;= 10000</p>
+<p>Default value: 600</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--weightb"></a><h3>The <code class="literal">"weightb"</code> property</h3>
+<pre class="programlisting">  "weightb"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Weighted prediction for B-frames.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--intra-refresh"></a><h3>The <code class="literal">"intra-refresh"</code> property</h3>
+<pre class="programlisting">  "intra-refresh"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Use Periodic Intra Refresh instead of IDR frames.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--mb-tree"></a><h3>The <code class="literal">"mb-tree"</code> property</h3>
+<pre class="programlisting">  "mb-tree"                  <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Macroblock-Tree ratecontrol.</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--rc-lookahead"></a><h3>The <code class="literal">"rc-lookahead"</code> property</h3>
+<pre class="programlisting">  "rc-lookahead"             <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Number of frames for frametype lookahead.</p>
+<p>Allowed values: [0,250]</p>
+<p>Default value: 40</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--sliced-threads"></a><h3>The <code class="literal">"sliced-threads"</code> property</h3>
+<pre class="programlisting">  "sliced-threads"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read / Write</pre>
+<p>Low latency but lower efficiency threading.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--sync-lookahead"></a><h3>The <code class="literal">"sync-lookahead"</code> property</h3>
+<pre class="programlisting">  "sync-lookahead"           <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a>                  : Read / Write</pre>
+<p>Number of buffer frames for threaded lookahead (-1 for automatic).</p>
+<p>Allowed values: [G_MAXULONG,250]</p>
+<p>Default value: -1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--option-string"></a><h3>The <code class="literal">"option-string"</code> property</h3>
+<pre class="programlisting">  "option-string"            <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
+<p>String of x264 options (overridden by element properties).</p>
+<p>Default value: ""</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--profile"></a><h3>The <code class="literal">"profile"</code> property</h3>
+<pre class="programlisting">  "profile"                  <span class="type">GstX264EncProfile</span>     : Read / Write</pre>
+<p>Apply restrictions to meet H.264 Profile constraints. This will override other properties if necessary. This will only be used if downstream elements do not specify a profile in their caps (DEPRECATED).</p>
+<p>Default value: main</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--psy-tune"></a><h3>The <code class="literal">"psy-tune"</code> property</h3>
+<pre class="programlisting">  "psy-tune"                 <span class="type">GstX264EncPsyTune</span>     : Read / Write</pre>
+<p>Preset name for psychovisual tuning options.</p>
+<p>Default value: No tuning</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--speed-preset"></a><h3>The <code class="literal">"speed-preset"</code> property</h3>
+<pre class="programlisting">  "speed-preset"             <span class="type">GstX264EncPreset</span>      : Read / Write</pre>
+<p>Preset name for speed/quality tradeoff options (can affect decode compatibility - impose restrictions separately for your target decoder).</p>
+<p>Default value: medium</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstX264Enc--tune"></a><h3>The <code class="literal">"tune"</code> property</h3>
+<pre class="programlisting">  "tune"                     <span class="type">GstX264EncTune</span>        : Read / Write</pre>
+<p>Preset name for non-psychovisual tuning options.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html b/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
new file mode 100644 (file)
index 0000000..cfa5571
--- /dev/null
@@ -0,0 +1,175 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>xingmux</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-ugly Elements">
+<link rel="prev" href="gst-plugins-ugly-plugins-x264enc.html" title="x264enc">
+<link rel="next" href="ch02.html" title="gst-plugins-ugly Plugins">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
+<tr valign="middle">
+<td><a accesskey="p" href="gst-plugins-ugly-plugins-x264enc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</th>
+<td><a accesskey="n" href="ch02.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr>
+<tr><td colspan="5" class="shortcuts">
+<a href="#gst-plugins-ugly-plugins-xingmux.synopsis" class="shortcut">Top</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-xingmux.description" class="shortcut">Description</a>
+                   | 
+                  <a href="#gst-plugins-ugly-plugins-xingmux.object-hierarchy" class="shortcut">Object Hierarchy</a>
+</td></tr>
+</table>
+<div class="refentry">
+<a name="gst-plugins-ugly-plugins-xingmux"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-ugly-plugins-xingmux.top_of_page"></a>xingmux</span></h2>
+<p>xingmux — Adds a Xing header to the beginning of a VBR MP3 file</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gst-plugins-ugly-plugins-xingmux.synopsis"></a><h2>Synopsis</h2>
+<a name="GstXingMux"></a><pre class="synopsis">struct              <a class="link" href="gst-plugins-ugly-plugins-xingmux.html#GstXingMux-struct" title="struct GstXingMux">GstXingMux</a>;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-xingmux.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+  <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+   +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+         +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+               +----GstXingMux
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-xingmux.description"></a><h2>Description</h2>
+<p>
+xingmux adds a Xing header to MP3 files. This contains information about the duration and size
+of the file and a seek table and is very useful for getting an almost correct duration and better
+seeking on VBR MP3 files.
+</p>
+<p>
+This element will remove any existing Xing, LAME or VBRI headers from the beginning of the file.
+</p>
+<p>
+</p>
+<div class="refsect2">
+<a name="idp8008064"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch audiotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> lame <span class="gtkdoc opt">!</span> xingmux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mp3
+gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mp3 <span class="gtkdoc opt">!</span> xingmux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>test2<span class="gtkdoc opt">.</span>mp3
+gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>test<span class="gtkdoc opt">.</span>mp3 <span class="gtkdoc opt">!</span> mp3parse <span class="gtkdoc opt">!</span> xingmux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>test2<span class="gtkdoc opt">.</span>mp3</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<p>
+</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="idp8746240"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html#plugin-mpegaudioparse">mpegaudioparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Christophe Fergeau &lt;teuf@gnome.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Formatter/Metadata</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="idp5131440"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<p>
+</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-ugly-plugins-xingmux.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GstXingMux-struct"></a><h3>struct GstXingMux</h3>
+<pre class="programlisting">struct GstXingMux;</pre>
+<p>
+Opaque data structure.
+</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2 b/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2
new file mode 100644 (file)
index 0000000..b0f1886
--- /dev/null
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
+<book xmlns="http://www.devhelp.net/book" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual" link="index.html" author="" name="gst-plugins-ugly-plugins" version="2" language="c">
+  <chapters>
+    <sub name="gst-plugins-ugly Elements" link="ch01.html">
+      <sub name="a52dec" link="gst-plugins-ugly-plugins-a52dec.html"/>
+      <sub name="amrnbdec" link="gst-plugins-ugly-plugins-amrnbdec.html"/>
+      <sub name="amrnbenc" link="gst-plugins-ugly-plugins-amrnbenc.html"/>
+      <sub name="amrwbdec" link="gst-plugins-ugly-plugins-amrwbdec.html"/>
+      <sub name="cdiocddasrc" link="gst-plugins-ugly-plugins-cdiocddasrc.html"/>
+      <sub name="lame" link="gst-plugins-ugly-plugins-lame.html"/>
+      <sub name="lamemp3enc" link="gst-plugins-ugly-plugins-lamemp3enc.html"/>
+      <sub name="mad" link="gst-plugins-ugly-plugins-mad.html"/>
+      <sub name="mp3parse" link="gst-plugins-ugly-plugins-mp3parse.html"/>
+      <sub name="rademux" link="gst-plugins-ugly-plugins-rademux.html"/>
+      <sub name="rmdemux" link="gst-plugins-ugly-plugins-rmdemux.html"/>
+      <sub name="rdtmanager" link="gst-plugins-ugly-plugins-rdtmanager.html"/>
+      <sub name="rtspreal" link="gst-plugins-ugly-plugins-rtspreal.html"/>
+      <sub name="rtspwms" link="gst-plugins-ugly-plugins-rtspwms.html"/>
+      <sub name="siddec" link="gst-plugins-ugly-plugins-siddec.html"/>
+      <sub name="twolame" link="gst-plugins-ugly-plugins-twolame.html"/>
+      <sub name="synaesthesia" link="gst-plugins-ugly-plugins-synaesthesia.html"/>
+      <sub name="x264enc" link="gst-plugins-ugly-plugins-x264enc.html"/>
+      <sub name="xingmux" link="gst-plugins-ugly-plugins-xingmux.html"/>
+    </sub>
+    <sub name="gst-plugins-ugly Plugins" link="ch02.html">
+      <sub name="a52dec" link="gst-plugins-ugly-plugins-plugin-a52dec.html"/>
+      <sub name="amrnb" link="gst-plugins-ugly-plugins-plugin-amrnb.html"/>
+      <sub name="amrwbdec" link="gst-plugins-ugly-plugins-plugin-amrwbdec.html"/>
+      <sub name="asf" link="gst-plugins-ugly-plugins-plugin-asf.html"/>
+      <sub name="cdio" link="gst-plugins-ugly-plugins-plugin-cdio.html"/>
+      <sub name="dvdlpcmdec" link="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html"/>
+      <sub name="dvdread" link="gst-plugins-ugly-plugins-plugin-dvdread.html"/>
+      <sub name="dvdsub" link="gst-plugins-ugly-plugins-plugin-dvdsub.html"/>
+      <sub name="iec958" link="gst-plugins-ugly-plugins-plugin-iec958.html"/>
+      <sub name="lame" link="gst-plugins-ugly-plugins-plugin-lame.html"/>
+      <sub name="mad" link="gst-plugins-ugly-plugins-plugin-mad.html"/>
+      <sub name="mpeg2dec" link="gst-plugins-ugly-plugins-plugin-mpeg2dec.html"/>
+      <sub name="mpegaudioparse" link="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html"/>
+      <sub name="mpegstream" link="gst-plugins-ugly-plugins-plugin-mpegstream.html"/>
+      <sub name="realmedia" link="gst-plugins-ugly-plugins-plugin-realmedia.html"/>
+      <sub name="siddec" link="gst-plugins-ugly-plugins-plugin-siddec.html"/>
+      <sub name="synaesthesia" link="gst-plugins-ugly-plugins-plugin-synaesthesia.html"/>
+      <sub name="twolame" link="gst-plugins-ugly-plugins-plugin-twolame.html"/>
+      <sub name="x264" link="gst-plugins-ugly-plugins-plugin-x264.html"/>
+    </sub>
+  </chapters>
+  <functions>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-a52dec.html#idp7955024"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-a52dec.html#idp6726784"/>
+    <keyword type="struct" name="struct GstA52Dec" link="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec-struct"/>
+    <keyword type="property" name="The &quot;drc&quot; property" link="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--drc"/>
+    <keyword type="property" name="The &quot;lfe&quot; property" link="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--lfe"/>
+    <keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--mode"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrnbdec.html#idp6211712"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbdec.html#idp4779120"/>
+    <keyword type="struct" name="struct GstAmrnbDec" link="gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec-struct"/>
+    <keyword type="property" name="The &quot;variant&quot; property" link="gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec--variant"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrnbenc.html#idp5436768"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbenc.html#idp81184"/>
+    <keyword type="struct" name="struct GstAmrnbEnc" link="gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc-struct"/>
+    <keyword type="property" name="The &quot;band-mode&quot; property" link="gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc--band-mode"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrwbdec.html#idp7838288"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrwbdec.html#idp6287392"/>
+    <keyword type="struct" name="struct GstAmrwbDec" link="gst-plugins-ugly-plugins-amrwbdec.html#GstAmrwbDec-struct"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-cdiocddasrc.html#idp4906016"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-cdiocddasrc.html#idp4913424"/>
+    <keyword type="struct" name="struct GstCdioCddaSrc" link="gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc-struct"/>
+    <keyword type="property" name="The &quot;read-speed&quot; property" link="gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc--read-speed"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-lame.html#idp9568016"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-lame.html#idp9575424"/>
+    <keyword type="struct" name="struct GstLame" link="gst-plugins-ugly-plugins-lame.html#GstLame-struct"/>
+    <keyword type="property" name="The &quot;allow-diff-short&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--allow-diff-short"/>
+    <keyword type="property" name="The &quot;ath-lower&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--ath-lower"/>
+    <keyword type="property" name="The &quot;ath-only&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--ath-only"/>
+    <keyword type="property" name="The &quot;ath-short&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--ath-short"/>
+    <keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--bitrate"/>
+    <keyword type="property" name="The &quot;compression-ratio&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--compression-ratio"/>
+    <keyword type="property" name="The &quot;copyright&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--copyright"/>
+    <keyword type="property" name="The &quot;cwlimit&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--cwlimit"/>
+    <keyword type="property" name="The &quot;disable-reservoir&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--disable-reservoir"/>
+    <keyword type="property" name="The &quot;emphasis&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--emphasis"/>
+    <keyword type="property" name="The &quot;error-protection&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--error-protection"/>
+    <keyword type="property" name="The &quot;extension&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--extension"/>
+    <keyword type="property" name="The &quot;force-ms&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--force-ms"/>
+    <keyword type="property" name="The &quot;free-format&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--free-format"/>
+    <keyword type="property" name="The &quot;highpass-freq&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--highpass-freq"/>
+    <keyword type="property" name="The &quot;highpass-width&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--highpass-width"/>
+    <keyword type="property" name="The &quot;lowpass-freq&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-freq"/>
+    <keyword type="property" name="The &quot;lowpass-width&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-width"/>
+    <keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--mode"/>
+    <keyword type="property" name="The &quot;no-ath&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--no-ath"/>
+    <keyword type="property" name="The &quot;no-short-blocks&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--no-short-blocks"/>
+    <keyword type="property" name="The &quot;original&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--original"/>
+    <keyword type="property" name="The &quot;padding-type&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--padding-type"/>
+    <keyword type="property" name="The &quot;preset&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--preset"/>
+    <keyword type="property" name="The &quot;quality&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--quality"/>
+    <keyword type="property" name="The &quot;strict-iso&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--strict-iso"/>
+    <keyword type="property" name="The &quot;vbr&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr"/>
+    <keyword type="property" name="The &quot;vbr-hard-min&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-hard-min"/>
+    <keyword type="property" name="The &quot;vbr-max-bitrate&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-max-bitrate"/>
+    <keyword type="property" name="The &quot;vbr-mean-bitrate&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-mean-bitrate"/>
+    <keyword type="property" name="The &quot;vbr-min-bitrate&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-min-bitrate"/>
+    <keyword type="property" name="The &quot;vbr-quality&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--vbr-quality"/>
+    <keyword type="property" name="The &quot;xingheader&quot; property" link="gst-plugins-ugly-plugins-lame.html#GstLame--xingheader"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-lamemp3enc.html#idp5936800"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-lamemp3enc.html#idp9828416"/>
+    <keyword type="struct" name="struct GstLameMP3Enc" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc-struct"/>
+    <keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--bitrate"/>
+    <keyword type="property" name="The &quot;cbr&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--cbr"/>
+    <keyword type="property" name="The &quot;encoding-engine-quality&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--encoding-engine-quality"/>
+    <keyword type="property" name="The &quot;mono&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--mono"/>
+    <keyword type="property" name="The &quot;quality&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--quality"/>
+    <keyword type="property" name="The &quot;target&quot; property" link="gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--target"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-mad.html#idp7340640"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-mad.html#idp8276480"/>
+    <keyword type="struct" name="struct GstMad" link="gst-plugins-ugly-plugins-mad.html#GstMad-struct"/>
+    <keyword type="property" name="The &quot;half&quot; property" link="gst-plugins-ugly-plugins-mad.html#GstMad--half"/>
+    <keyword type="property" name="The &quot;ignore-crc&quot; property" link="gst-plugins-ugly-plugins-mad.html#GstMad--ignore-crc"/>
+    <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-mp3parse.html#idp8365488"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-mp3parse.html#idp9084896"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-mp3parse.html#idp5254992"/>
+    <keyword type="struct" name="struct GstMPEGAudioParse" link="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse-struct"/>
+    <keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--bitrate"/>
+    <keyword type="property" name="The &quot;skip&quot; property" link="gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--skip"/>
+    <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-rademux.html#idp6282496"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rademux.html#idp8915440"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rademux.html#idp5275184"/>
+    <keyword type="struct" name="struct GstRealAudioDemux" link="gst-plugins-ugly-plugins-rademux.html#GstRealAudioDemux-struct"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rmdemux.html#idp4797648"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rmdemux.html#idp5582160"/>
+    <keyword type="struct" name="struct GstRMDemux" link="gst-plugins-ugly-plugins-rmdemux.html#GstRMDemux-struct"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rdtmanager.html#idp10233328"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rdtmanager.html#idp8574560"/>
+    <keyword type="struct" name="struct GstRDTManager" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-struct"/>
+    <keyword type="property" name="The &quot;latency&quot; property" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager--latency"/>
+    <keyword type="signal" name="The &quot;clear-pt-map&quot; signal" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-clear-pt-map"/>
+    <keyword type="signal" name="The &quot;on-bye-ssrc&quot; signal" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-ssrc"/>
+    <keyword type="signal" name="The &quot;on-bye-timeout&quot; signal" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-timeout"/>
+    <keyword type="signal" name="The &quot;on-timeout&quot; signal" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-timeout"/>
+    <keyword type="signal" name="The &quot;request-pt-map&quot; signal" link="gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-request-pt-map"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rtspreal.html#idp6966384"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspreal.html#idp6973808"/>
+    <keyword type="struct" name="struct GstRTSPReal" link="gst-plugins-ugly-plugins-rtspreal.html#GstRTSPReal-struct"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rtspwms.html#idp7112144"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspwms.html#idp9193584"/>
+    <keyword type="struct" name="struct GstRTSPWMS" link="gst-plugins-ugly-plugins-rtspwms.html#GstRTSPWMS-struct"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-siddec.html#idp9946320"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-siddec.html#idp10393200"/>
+    <keyword type="struct" name="struct GstSidDec" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec-struct"/>
+    <keyword type="property" name="The &quot;blocksize&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--blocksize"/>
+    <keyword type="property" name="The &quot;clock&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--clock"/>
+    <keyword type="property" name="The &quot;filter&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--filter"/>
+    <keyword type="property" name="The &quot;force-speed&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--force-speed"/>
+    <keyword type="property" name="The &quot;measured-volume&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--measured-volume"/>
+    <keyword type="property" name="The &quot;memory&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--memory"/>
+    <keyword type="property" name="The &quot;metadata&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--metadata"/>
+    <keyword type="property" name="The &quot;mos8580&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--mos8580"/>
+    <keyword type="property" name="The &quot;tune&quot; property" link="gst-plugins-ugly-plugins-siddec.html#GstSidDec--tune"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-twolame.html#idp10490800"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-twolame.html#idp10498208"/>
+    <keyword type="struct" name="struct GstTwoLame" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame-struct"/>
+    <keyword type="property" name="The &quot;ath-level&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--ath-level"/>
+    <keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--bitrate"/>
+    <keyword type="property" name="The &quot;copyright&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--copyright"/>
+    <keyword type="property" name="The &quot;emphasis&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--emphasis"/>
+    <keyword type="property" name="The &quot;energy-level-extension&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--energy-level-extension"/>
+    <keyword type="property" name="The &quot;error-protection&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--error-protection"/>
+    <keyword type="property" name="The &quot;mode&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--mode"/>
+    <keyword type="property" name="The &quot;original&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--original"/>
+    <keyword type="property" name="The &quot;padding&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--padding"/>
+    <keyword type="property" name="The &quot;psymodel&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--psymodel"/>
+    <keyword type="property" name="The &quot;quick-mode&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode"/>
+    <keyword type="property" name="The &quot;quick-mode-count&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode-count"/>
+    <keyword type="property" name="The &quot;vbr&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr"/>
+    <keyword type="property" name="The &quot;vbr-level&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-level"/>
+    <keyword type="property" name="The &quot;vbr-max-bitrate&quot; property" link="gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-max-bitrate"/>
+    <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-synaesthesia.html#idp7264000"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-synaesthesia.html#idp10206544"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-synaesthesia.html#idp7162976"/>
+    <keyword type="struct" name="struct GstSynaesthesia" link="gst-plugins-ugly-plugins-synaesthesia.html#GstSynaesthesia"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-x264enc.html#idp10784896"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-x264enc.html#idp10792304"/>
+    <keyword type="struct" name="struct GstX264Enc" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc-struct"/>
+    <keyword type="property" name="The &quot;analyse&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--analyse"/>
+    <keyword type="property" name="The &quot;aud&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--aud"/>
+    <keyword type="property" name="The &quot;b-adapt&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-adapt"/>
+    <keyword type="property" name="The &quot;b-pyramid&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-pyramid"/>
+    <keyword type="property" name="The &quot;bframes&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bframes"/>
+    <keyword type="property" name="The &quot;bitrate&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bitrate"/>
+    <keyword type="property" name="The &quot;byte-stream&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--byte-stream"/>
+    <keyword type="property" name="The &quot;cabac&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--cabac"/>
+    <keyword type="property" name="The &quot;dct8x8&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--dct8x8"/>
+    <keyword type="property" name="The &quot;interlaced&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--interlaced"/>
+    <keyword type="property" name="The &quot;ip-factor&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ip-factor"/>
+    <keyword type="property" name="The &quot;key-int-max&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--key-int-max"/>
+    <keyword type="property" name="The &quot;me&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--me"/>
+    <keyword type="property" name="The &quot;multipass-cache-file&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--multipass-cache-file"/>
+    <keyword type="property" name="The &quot;noise-reduction&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--noise-reduction"/>
+    <keyword type="property" name="The &quot;pass&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pass"/>
+    <keyword type="property" name="The &quot;pb-factor&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pb-factor"/>
+    <keyword type="property" name="The &quot;qp-max&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-max"/>
+    <keyword type="property" name="The &quot;qp-min&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-min"/>
+    <keyword type="property" name="The &quot;qp-step&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-step"/>
+    <keyword type="property" name="The &quot;quantizer&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--quantizer"/>
+    <keyword type="property" name="The &quot;ref&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ref"/>
+    <keyword type="property" name="The &quot;sps-id&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sps-id"/>
+    <keyword type="property" name="The &quot;stats-file&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--stats-file"/>
+    <keyword type="property" name="The &quot;subme&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--subme"/>
+    <keyword type="property" name="The &quot;threads&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--threads"/>
+    <keyword type="property" name="The &quot;trellis&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--trellis"/>
+    <keyword type="property" name="The &quot;vbv-buf-capacity&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--vbv-buf-capacity"/>
+    <keyword type="property" name="The &quot;weightb&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--weightb"/>
+    <keyword type="property" name="The &quot;intra-refresh&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--intra-refresh"/>
+    <keyword type="property" name="The &quot;mb-tree&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--mb-tree"/>
+    <keyword type="property" name="The &quot;rc-lookahead&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--rc-lookahead"/>
+    <keyword type="property" name="The &quot;sliced-threads&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sliced-threads"/>
+    <keyword type="property" name="The &quot;sync-lookahead&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sync-lookahead"/>
+    <keyword type="property" name="The &quot;option-string&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--option-string"/>
+    <keyword type="property" name="The &quot;profile&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--profile"/>
+    <keyword type="property" name="The &quot;psy-tune&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--psy-tune"/>
+    <keyword type="property" name="The &quot;speed-preset&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--speed-preset"/>
+    <keyword type="property" name="The &quot;tune&quot; property" link="gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--tune"/>
+    <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-xingmux.html#idp8008064"/>
+    <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-xingmux.html#idp8746240"/>
+    <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-xingmux.html#idp5131440"/>
+    <keyword type="struct" name="struct GstXingMux" link="gst-plugins-ugly-plugins-xingmux.html#GstXingMux-struct"/>
+  </functions>
+</book>
diff --git a/docs/plugins/html/home.png b/docs/plugins/html/home.png
new file mode 100644 (file)
index 0000000..1700361
Binary files /dev/null and b/docs/plugins/html/home.png differ
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
new file mode 100644 (file)
index 0000000..4dbd790
--- /dev/null
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GStreamer Ugly Plugins 0.10 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="GStreamer Ugly Plugins 0.10 Plugins Reference Manual">
+<link rel="next" href="ch01.html" title="gst-plugins-ugly Elements">
+<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book">
+<div class="titlepage">
+<div>
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Ugly Plugins 0.10 Plugins Reference Manual</p></th></tr></table></div>
+<div><p class="releaseinfo">
+      for GStreamer Ugly Plugins 0.10 (0.10.19)
+      The latest version of this documentation can be found on-line at
+      <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/</a>.
+    </p></div>
+</div>
+<hr>
+</div>
+<div class="toc"><dl>
+<dt><span class="chapter"><a href="ch01.html">gst-plugins-ugly Elements</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-a52dec.html">a52dec</a></span><span class="refpurpose"> — Decodes ATSC A/52 encoded audio streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrnbdec.html">amrnbdec</a></span><span class="refpurpose"> — Adaptive Multi-Rate Narrow-Band audio decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrnbenc.html">amrnbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Narrow-Band audio encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-amrwbdec.html">amrwbdec</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wideband audio decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-cdiocddasrc.html">cdiocddasrc</a></span><span class="refpurpose"> — Read audio from CD using libcdio</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lame.html">lame</a></span><span class="refpurpose"> — High-quality free MP3 encoder (deprecated)</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-lamemp3enc.html">lamemp3enc</a></span><span class="refpurpose"> — High-quality free MP3 encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mad.html">mad</a></span><span class="refpurpose"> — Uses mad code to decode mp3 streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-mp3parse.html">mp3parse</a></span><span class="refpurpose"> — Parses and frames mpeg1 audio streams (levels 1-3), provides seek</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rademux.html">rademux</a></span><span class="refpurpose"> — Demultiplex a RealAudio file</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rmdemux.html">rmdemux</a></span><span class="refpurpose"> — Demultiplex a RealMedia file into audio and video streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rdtmanager.html">rdtmanager</a></span><span class="refpurpose"> — Accepts raw RTP and RTCP packets and sends them forward</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rtspreal.html">rtspreal</a></span><span class="refpurpose"> — Extends RTSP so that it can handle RealMedia setup</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-rtspwms.html">rtspwms</a></span><span class="refpurpose"> — Extends RTSP so that it can handle WMS setup</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-siddec.html">siddec</a></span><span class="refpurpose"> — Use libsidplay to decode SID audio tunes</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-twolame.html">twolame</a></span><span class="refpurpose"> — High-quality free MP2 encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-synaesthesia.html">synaesthesia</a></span><span class="refpurpose"> — Creates video visualizations of audio input, using stereo and pitch information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-x264enc.html">x264enc</a></span><span class="refpurpose"> — H264 Encoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-xingmux.html">xingmux</a></span><span class="refpurpose"> — Adds a Xing header to the beginning of a VBR MP3 file</span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="ch02.html">gst-plugins-ugly Plugins</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-a52dec.html">a52dec</a></span><span class="refpurpose"> — <a name="plugin-a52dec"></a>Decodes ATSC A/52 encoded audio streams</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-amrnb.html">amrnb</a></span><span class="refpurpose"> — <a name="plugin-amrnb"></a>Adaptive Multi-Rate Narrow-Band</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-amrwbdec.html">amrwbdec</a></span><span class="refpurpose"> — <a name="plugin-amrwbdec"></a>Adaptive Multi-Rate Wide-Band Decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-asf.html">asf</a></span><span class="refpurpose"> — <a name="plugin-asf"></a>Demuxes and muxes audio and video in Microsofts ASF format</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-cdio.html">cdio</a></span><span class="refpurpose"> — <a name="plugin-cdio"></a>Read audio from audio CDs</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html">dvdlpcmdec</a></span><span class="refpurpose"> — <a name="plugin-dvdlpcmdec"></a>Decode DVD LPCM frames into standard PCM</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdread.html">dvdread</a></span><span class="refpurpose"> — <a name="plugin-dvdread"></a>Access a DVD with dvdread</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-dvdsub.html">dvdsub</a></span><span class="refpurpose"> — <a name="plugin-dvdsub"></a>DVD subtitle parser and decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-iec958.html">iec958</a></span><span class="refpurpose"> — <a name="plugin-iec958"></a>Convert raw AC3 into IEC958 (S/PDIF) frames</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-lame.html">lame</a></span><span class="refpurpose"> — <a name="plugin-lame"></a>Encode MP3s with LAME</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mad.html">mad</a></span><span class="refpurpose"> — <a name="plugin-mad"></a>mp3 decoding based on the mad library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpeg2dec.html">mpeg2dec</a></span><span class="refpurpose"> — <a name="plugin-mpeg2dec"></a>LibMpeg2 decoder</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpegaudioparse.html">mpegaudioparse</a></span><span class="refpurpose"> — <a name="plugin-mpegaudioparse"></a>MPEG-1 layer 1/2/3 audio stream elements</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-mpegstream.html">mpegstream</a></span><span class="refpurpose"> — <a name="plugin-mpegstream"></a>MPEG system stream parser</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-realmedia.html">realmedia</a></span><span class="refpurpose"> — <a name="plugin-realmedia"></a>RealMedia support plugins</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-siddec.html">siddec</a></span><span class="refpurpose"> — <a name="plugin-siddec"></a>Uses libsidplay to decode .sid files</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-synaesthesia.html">synaesthesia</a></span><span class="refpurpose"> — <a name="plugin-synaesthesia"></a>Creates video visualizations of audio input, using stereo and pitch information</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-twolame.html">twolame</a></span><span class="refpurpose"> — <a name="plugin-twolame"></a>Encode MP2s with TwoLAME</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-plugin-x264.html">x264</a></span><span class="refpurpose"> — <a name="plugin-x264"></a>libx264-based H264 plugins</span>
+</dt>
+</dl></dd>
+</dl></div>
+</div>
+<div class="footer">
+<hr>
+          Generated by GTK-Doc V1.18</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
new file mode 100644 (file)
index 0000000..ac4eb0a
--- /dev/null
@@ -0,0 +1,324 @@
+<ONLINE href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly/html/">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.synopsis">
+<ANCHOR id="GstA52Dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#GstA52Dec">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.description">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.details">
+<ANCHOR id="GstA52Dec-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#GstA52Dec-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-a52dec.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#gst-plugins-ugly-plugins-a52dec.property-details">
+<ANCHOR id="GstA52Dec--drc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--drc">
+<ANCHOR id="GstA52Dec--lfe" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--lfe">
+<ANCHOR id="GstA52Dec--mode" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-a52dec.html#GstA52Dec--mode">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.synopsis">
+<ANCHOR id="GstAmrnbDec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.description">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.details">
+<ANCHOR id="GstAmrnbDec-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbdec.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#gst-plugins-ugly-plugins-amrnbdec.property-details">
+<ANCHOR id="GstAmrnbDec--variant" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbdec.html#GstAmrnbDec--variant">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.synopsis">
+<ANCHOR id="GstAmrnbEnc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.description">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.details">
+<ANCHOR id="GstAmrnbEnc-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-amrnbenc.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#gst-plugins-ugly-plugins-amrnbenc.property-details">
+<ANCHOR id="GstAmrnbEnc--band-mode" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrnbenc.html#GstAmrnbEnc--band-mode">
+<ANCHOR id="gst-plugins-ugly-plugins-amrwbdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html">
+<ANCHOR id="gst-plugins-ugly-plugins-amrwbdec.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#gst-plugins-ugly-plugins-amrwbdec.synopsis">
+<ANCHOR id="GstAmrwbDec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#GstAmrwbDec">
+<ANCHOR id="gst-plugins-ugly-plugins-amrwbdec.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#gst-plugins-ugly-plugins-amrwbdec.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-amrwbdec.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#gst-plugins-ugly-plugins-amrwbdec.description">
+<ANCHOR id="gst-plugins-ugly-plugins-amrwbdec.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#gst-plugins-ugly-plugins-amrwbdec.details">
+<ANCHOR id="GstAmrwbDec-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-amrwbdec.html#GstAmrwbDec-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.synopsis">
+<ANCHOR id="GstCdioCddaSrc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.description">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.details">
+<ANCHOR id="GstCdioCddaSrc-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-cdiocddasrc.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#gst-plugins-ugly-plugins-cdiocddasrc.property-details">
+<ANCHOR id="GstCdioCddaSrc--read-speed" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-cdiocddasrc.html#GstCdioCddaSrc--read-speed">
+<ANCHOR id="gst-plugins-ugly-plugins-lame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.synopsis">
+<ANCHOR id="GstLame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.description">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.details">
+<ANCHOR id="GstLame-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-lame.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#gst-plugins-ugly-plugins-lame.property-details">
+<ANCHOR id="GstLame--allow-diff-short" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--allow-diff-short">
+<ANCHOR id="GstLame--ath-lower" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--ath-lower">
+<ANCHOR id="GstLame--ath-only" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--ath-only">
+<ANCHOR id="GstLame--ath-short" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--ath-short">
+<ANCHOR id="GstLame--bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--bitrate">
+<ANCHOR id="GstLame--compression-ratio" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--compression-ratio">
+<ANCHOR id="GstLame--copyright" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--copyright">
+<ANCHOR id="GstLame--cwlimit" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--cwlimit">
+<ANCHOR id="GstLame--disable-reservoir" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--disable-reservoir">
+<ANCHOR id="GstLame--emphasis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--emphasis">
+<ANCHOR id="GstLame--error-protection" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--error-protection">
+<ANCHOR id="GstLame--extension" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--extension">
+<ANCHOR id="GstLame--force-ms" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--force-ms">
+<ANCHOR id="GstLame--free-format" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--free-format">
+<ANCHOR id="GstLame--highpass-freq" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--highpass-freq">
+<ANCHOR id="GstLame--highpass-width" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--highpass-width">
+<ANCHOR id="GstLame--lowpass-freq" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-freq">
+<ANCHOR id="GstLame--lowpass-width" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--lowpass-width">
+<ANCHOR id="GstLame--mode" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--mode">
+<ANCHOR id="GstLame--no-ath" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--no-ath">
+<ANCHOR id="GstLame--no-short-blocks" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--no-short-blocks">
+<ANCHOR id="GstLame--original" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--original">
+<ANCHOR id="GstLame--padding-type" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--padding-type">
+<ANCHOR id="GstLame--preset" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--preset">
+<ANCHOR id="GstLame--quality" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--quality">
+<ANCHOR id="GstLame--strict-iso" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--strict-iso">
+<ANCHOR id="GstLame--vbr" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr">
+<ANCHOR id="GstLame--vbr-hard-min" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr-hard-min">
+<ANCHOR id="GstLame--vbr-max-bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr-max-bitrate">
+<ANCHOR id="GstLame--vbr-mean-bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr-mean-bitrate">
+<ANCHOR id="GstLame--vbr-min-bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr-min-bitrate">
+<ANCHOR id="GstLame--vbr-quality" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--vbr-quality">
+<ANCHOR id="GstLame--xingheader" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lame.html#GstLame--xingheader">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.synopsis">
+<ANCHOR id="GstLameMP3Enc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.description">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.details">
+<ANCHOR id="GstLameMP3Enc-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-lamemp3enc.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#gst-plugins-ugly-plugins-lamemp3enc.property-details">
+<ANCHOR id="GstLameMP3Enc--bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--bitrate">
+<ANCHOR id="GstLameMP3Enc--cbr" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--cbr">
+<ANCHOR id="GstLameMP3Enc--encoding-engine-quality" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--encoding-engine-quality">
+<ANCHOR id="GstLameMP3Enc--mono" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--mono">
+<ANCHOR id="GstLameMP3Enc--quality" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--quality">
+<ANCHOR id="GstLameMP3Enc--target" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-lamemp3enc.html#GstLameMP3Enc--target">
+<ANCHOR id="gst-plugins-ugly-plugins-mad" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.synopsis">
+<ANCHOR id="GstMad" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#GstMad">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.description">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.details">
+<ANCHOR id="GstMad-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#GstMad-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-mad.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#gst-plugins-ugly-plugins-mad.property-details">
+<ANCHOR id="GstMad--half" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#GstMad--half">
+<ANCHOR id="GstMad--ignore-crc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mad.html#GstMad--ignore-crc">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.synopsis">
+<ANCHOR id="GstMPEGAudioParse" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.description">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.details">
+<ANCHOR id="GstMPEGAudioParse-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-mp3parse.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#gst-plugins-ugly-plugins-mp3parse.property-details">
+<ANCHOR id="GstMPEGAudioParse--bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--bitrate">
+<ANCHOR id="GstMPEGAudioParse--skip" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-mp3parse.html#GstMPEGAudioParse--skip">
+<ANCHOR id="gst-plugins-ugly-plugins-rademux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html">
+<ANCHOR id="gst-plugins-ugly-plugins-rademux.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#gst-plugins-ugly-plugins-rademux.synopsis">
+<ANCHOR id="GstRealAudioDemux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#GstRealAudioDemux">
+<ANCHOR id="gst-plugins-ugly-plugins-rademux.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#gst-plugins-ugly-plugins-rademux.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-rademux.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#gst-plugins-ugly-plugins-rademux.description">
+<ANCHOR id="gst-plugins-ugly-plugins-rademux.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#gst-plugins-ugly-plugins-rademux.details">
+<ANCHOR id="GstRealAudioDemux-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rademux.html#GstRealAudioDemux-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-rmdemux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html">
+<ANCHOR id="gst-plugins-ugly-plugins-rmdemux.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#gst-plugins-ugly-plugins-rmdemux.synopsis">
+<ANCHOR id="GstRMDemux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#GstRMDemux">
+<ANCHOR id="gst-plugins-ugly-plugins-rmdemux.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#gst-plugins-ugly-plugins-rmdemux.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-rmdemux.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#gst-plugins-ugly-plugins-rmdemux.description">
+<ANCHOR id="gst-plugins-ugly-plugins-rmdemux.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#gst-plugins-ugly-plugins-rmdemux.details">
+<ANCHOR id="GstRMDemux-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rmdemux.html#GstRMDemux-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.synopsis">
+<ANCHOR id="GstRDTManager" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.signals" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.signals">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.description">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.details">
+<ANCHOR id="GstRDTManager-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.property-details">
+<ANCHOR id="GstRDTManager--latency" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager--latency">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.signal-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.signal-details">
+<ANCHOR id="GstRDTManager-clear-pt-map" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-clear-pt-map">
+<ANCHOR id="GstRDTManager-on-bye-ssrc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-ssrc">
+<ANCHOR id="GstRDTManager-on-bye-timeout" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-bye-timeout">
+<ANCHOR id="GstRDTManager-on-timeout" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-on-timeout">
+<ANCHOR id="GstRDTManager-request-pt-map" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#GstRDTManager-request-pt-map">
+<ANCHOR id="gst-plugins-ugly-plugins-rdtmanager.see-also" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rdtmanager.html#gst-plugins-ugly-plugins-rdtmanager.see-also">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#gst-plugins-ugly-plugins-rtspreal.synopsis">
+<ANCHOR id="GstRTSPReal" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#GstRTSPReal">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#gst-plugins-ugly-plugins-rtspreal.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#gst-plugins-ugly-plugins-rtspreal.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#gst-plugins-ugly-plugins-rtspreal.description">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspreal.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#gst-plugins-ugly-plugins-rtspreal.details">
+<ANCHOR id="GstRTSPReal-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspreal.html#GstRTSPReal-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#gst-plugins-ugly-plugins-rtspwms.synopsis">
+<ANCHOR id="GstRTSPWMS" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#GstRTSPWMS">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#gst-plugins-ugly-plugins-rtspwms.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#gst-plugins-ugly-plugins-rtspwms.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#gst-plugins-ugly-plugins-rtspwms.description">
+<ANCHOR id="gst-plugins-ugly-plugins-rtspwms.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#gst-plugins-ugly-plugins-rtspwms.details">
+<ANCHOR id="GstRTSPWMS-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-rtspwms.html#GstRTSPWMS-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.synopsis">
+<ANCHOR id="GstSidDec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.description">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.details">
+<ANCHOR id="GstSidDec-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-siddec.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#gst-plugins-ugly-plugins-siddec.property-details">
+<ANCHOR id="GstSidDec--blocksize" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--blocksize">
+<ANCHOR id="GstSidDec--clock" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--clock">
+<ANCHOR id="GstSidDec--filter" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--filter">
+<ANCHOR id="GstSidDec--force-speed" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--force-speed">
+<ANCHOR id="GstSidDec--measured-volume" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--measured-volume">
+<ANCHOR id="GstSidDec--memory" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--memory">
+<ANCHOR id="GstSidDec--metadata" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--metadata">
+<ANCHOR id="GstSidDec--mos8580" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--mos8580">
+<ANCHOR id="GstSidDec--tune" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-siddec.html#GstSidDec--tune">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.synopsis">
+<ANCHOR id="GstTwoLame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.description">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.details">
+<ANCHOR id="GstTwoLame-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-twolame.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#gst-plugins-ugly-plugins-twolame.property-details">
+<ANCHOR id="GstTwoLame--ath-level" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--ath-level">
+<ANCHOR id="GstTwoLame--bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--bitrate">
+<ANCHOR id="GstTwoLame--copyright" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--copyright">
+<ANCHOR id="GstTwoLame--emphasis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--emphasis">
+<ANCHOR id="GstTwoLame--energy-level-extension" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--energy-level-extension">
+<ANCHOR id="GstTwoLame--error-protection" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--error-protection">
+<ANCHOR id="GstTwoLame--mode" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--mode">
+<ANCHOR id="GstTwoLame--original" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--original">
+<ANCHOR id="GstTwoLame--padding" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--padding">
+<ANCHOR id="GstTwoLame--psymodel" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--psymodel">
+<ANCHOR id="GstTwoLame--quick-mode" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode">
+<ANCHOR id="GstTwoLame--quick-mode-count" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--quick-mode-count">
+<ANCHOR id="GstTwoLame--vbr" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr">
+<ANCHOR id="GstTwoLame--vbr-level" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-level">
+<ANCHOR id="GstTwoLame--vbr-max-bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-max-bitrate">
+<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html">
+<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html#gst-plugins-ugly-plugins-synaesthesia.synopsis">
+<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html#gst-plugins-ugly-plugins-synaesthesia.description">
+<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html#gst-plugins-ugly-plugins-synaesthesia.details">
+<ANCHOR id="GstSynaesthesia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html#GstSynaesthesia">
+<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.see-also" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-synaesthesia.html#gst-plugins-ugly-plugins-synaesthesia.see-also">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.synopsis">
+<ANCHOR id="GstX264Enc" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.implemented-interfaces" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.implemented-interfaces">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.properties" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.properties">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.description">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.details">
+<ANCHOR id="GstX264Enc-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-x264enc.property-details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.property-details">
+<ANCHOR id="GstX264Enc--analyse" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--analyse">
+<ANCHOR id="GstX264Enc--aud" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--aud">
+<ANCHOR id="GstX264Enc--b-adapt" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-adapt">
+<ANCHOR id="GstX264Enc--b-pyramid" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--b-pyramid">
+<ANCHOR id="GstX264Enc--bframes" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bframes">
+<ANCHOR id="GstX264Enc--bitrate" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--bitrate">
+<ANCHOR id="GstX264Enc--byte-stream" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--byte-stream">
+<ANCHOR id="GstX264Enc--cabac" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--cabac">
+<ANCHOR id="GstX264Enc--dct8x8" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--dct8x8">
+<ANCHOR id="GstX264Enc--interlaced" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--interlaced">
+<ANCHOR id="GstX264Enc--ip-factor" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ip-factor">
+<ANCHOR id="GstX264Enc--key-int-max" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--key-int-max">
+<ANCHOR id="GstX264Enc--me" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--me">
+<ANCHOR id="GstX264Enc--multipass-cache-file" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--multipass-cache-file">
+<ANCHOR id="GstX264Enc--noise-reduction" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--noise-reduction">
+<ANCHOR id="GstX264Enc--pass" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pass">
+<ANCHOR id="GstX264Enc--pb-factor" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--pb-factor">
+<ANCHOR id="GstX264Enc--qp-max" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-max">
+<ANCHOR id="GstX264Enc--qp-min" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-min">
+<ANCHOR id="GstX264Enc--qp-step" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--qp-step">
+<ANCHOR id="GstX264Enc--quantizer" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--quantizer">
+<ANCHOR id="GstX264Enc--ref" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--ref">
+<ANCHOR id="GstX264Enc--sps-id" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sps-id">
+<ANCHOR id="GstX264Enc--stats-file" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--stats-file">
+<ANCHOR id="GstX264Enc--subme" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--subme">
+<ANCHOR id="GstX264Enc--threads" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--threads">
+<ANCHOR id="GstX264Enc--trellis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--trellis">
+<ANCHOR id="GstX264Enc--vbv-buf-capacity" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--vbv-buf-capacity">
+<ANCHOR id="GstX264Enc--weightb" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--weightb">
+<ANCHOR id="GstX264Enc--intra-refresh" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--intra-refresh">
+<ANCHOR id="GstX264Enc--mb-tree" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--mb-tree">
+<ANCHOR id="GstX264Enc--rc-lookahead" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--rc-lookahead">
+<ANCHOR id="GstX264Enc--sliced-threads" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sliced-threads">
+<ANCHOR id="GstX264Enc--sync-lookahead" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--sync-lookahead">
+<ANCHOR id="GstX264Enc--option-string" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--option-string">
+<ANCHOR id="GstX264Enc--profile" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--profile">
+<ANCHOR id="GstX264Enc--psy-tune" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--psy-tune">
+<ANCHOR id="GstX264Enc--speed-preset" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--speed-preset">
+<ANCHOR id="GstX264Enc--tune" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc--tune">
+<ANCHOR id="gst-plugins-ugly-plugins-xingmux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html">
+<ANCHOR id="gst-plugins-ugly-plugins-xingmux.synopsis" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#gst-plugins-ugly-plugins-xingmux.synopsis">
+<ANCHOR id="GstXingMux" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#GstXingMux">
+<ANCHOR id="gst-plugins-ugly-plugins-xingmux.object-hierarchy" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#gst-plugins-ugly-plugins-xingmux.object-hierarchy">
+<ANCHOR id="gst-plugins-ugly-plugins-xingmux.description" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#gst-plugins-ugly-plugins-xingmux.description">
+<ANCHOR id="gst-plugins-ugly-plugins-xingmux.details" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#gst-plugins-ugly-plugins-xingmux.details">
+<ANCHOR id="GstXingMux-struct" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-xingmux.html#GstXingMux-struct">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-a52dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-a52dec.html">
+<ANCHOR id="plugin-a52dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-a52dec.html#plugin-a52dec">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-amrnb" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-amrnb.html">
+<ANCHOR id="plugin-amrnb" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-amrnb.html#plugin-amrnb">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-amrwbdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-amrwbdec.html">
+<ANCHOR id="plugin-amrwbdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-amrwbdec.html#plugin-amrwbdec">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-asf" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-asf.html">
+<ANCHOR id="plugin-asf" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-asf.html#plugin-asf">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-cdio" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-cdio.html">
+<ANCHOR id="plugin-cdio" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-cdio.html#plugin-cdio">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-dvdlpcmdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html">
+<ANCHOR id="plugin-dvdlpcmdec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html#plugin-dvdlpcmdec">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-dvdread" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdread.html">
+<ANCHOR id="plugin-dvdread" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdread.html#plugin-dvdread">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-dvdsub" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdsub.html">
+<ANCHOR id="plugin-dvdsub" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-dvdsub.html#plugin-dvdsub">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-iec958" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-iec958.html">
+<ANCHOR id="plugin-iec958" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-iec958.html#plugin-iec958">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-lame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-lame.html">
+<ANCHOR id="plugin-lame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-lame.html#plugin-lame">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-mad" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mad.html">
+<ANCHOR id="plugin-mad" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mad.html#plugin-mad">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-mpeg2dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpeg2dec.html">
+<ANCHOR id="plugin-mpeg2dec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpeg2dec.html#plugin-mpeg2dec">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-mpegaudioparse" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpegaudioparse.html">
+<ANCHOR id="plugin-mpegaudioparse" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpegaudioparse.html#plugin-mpegaudioparse">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-mpegstream" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpegstream.html">
+<ANCHOR id="plugin-mpegstream" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-mpegstream.html#plugin-mpegstream">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-realmedia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-realmedia.html">
+<ANCHOR id="plugin-realmedia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-siddec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-siddec.html">
+<ANCHOR id="plugin-siddec" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-siddec.html#plugin-siddec">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-synaesthesia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-synaesthesia.html">
+<ANCHOR id="plugin-synaesthesia" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-synaesthesia.html#plugin-synaesthesia">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-twolame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-twolame.html">
+<ANCHOR id="plugin-twolame" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-twolame.html#plugin-twolame">
+<ANCHOR id="gst-plugins-ugly-plugins-plugin-x264" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-x264.html">
+<ANCHOR id="plugin-x264" href="gst-plugins-ugly-plugins-0.10/gst-plugins-ugly-plugins-plugin-x264.html#plugin-x264">
diff --git a/docs/plugins/html/left.png b/docs/plugins/html/left.png
new file mode 100644 (file)
index 0000000..2d05b3d
Binary files /dev/null and b/docs/plugins/html/left.png differ
diff --git a/docs/plugins/html/right.png b/docs/plugins/html/right.png
new file mode 100644 (file)
index 0000000..92832e3
Binary files /dev/null and b/docs/plugins/html/right.png differ
diff --git a/docs/plugins/html/style.css b/docs/plugins/html/style.css
new file mode 100644 (file)
index 0000000..d6f6c26
--- /dev/null
@@ -0,0 +1,266 @@
+.synopsis, .classsynopsis
+{
+  /* tango:aluminium 1/2 */
+  background: #eeeeec;
+  border: solid 1px #d3d7cf;
+  padding: 0.5em;
+}
+.programlisting
+{
+  /* tango:sky blue 0/1 */
+  background: #e6f3ff;
+  border: solid 1px #729fcf;
+  padding: 0.5em;
+}
+.variablelist
+{
+  padding: 4px;
+  margin-left: 3em;
+}
+.variablelist td:first-child
+{
+  vertical-align: top;
+}
+
+@media screen {
+  sup a.footnote
+  {
+    position: relative;
+    top: 0em ! important;
+    
+  }
+  /* this is needed so that the local anchors are displayed below the naviagtion */
+  div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name]
+  {
+    display: inline-block;
+    position: relative;
+    top:-5em;
+  }
+  /* this seems to be a bug in the xsl style sheets when generating indexes */
+  div.index div.index
+  {
+    top: 0em;
+  }
+  /* make space for the fixed navigation bar and add space at the bottom so that
+   * link targets appear somewhat close to top
+   */
+  body
+  {
+    padding-top: 3.2em;
+    padding-bottom: 20em;
+  }
+  /* style and size the navigation bar */
+  table.navigation#top
+  {
+    position: fixed;
+    /* tango:scarlet red 0/1 */
+    background: #ffe6e6;
+    border: solid 1px #ef2929;
+    margin-top: 0;
+    margin-bottom: 0;
+    top: 0;
+    left: 0;
+    height: 3em;
+    z-index: 10;
+  }
+  .navigation a, .navigation a:visited
+  {
+    /* tango:scarlet red 3 */
+    color: #a40000;
+  }
+  .navigation a:hover
+  {
+    /* tango:scarlet red 1 */
+    color: #ef2929;
+  }
+  td.shortcuts
+  {
+    /* tango:scarlet red 1 */
+    color: #ef2929;
+    font-size: 80%;
+    white-space: nowrap;
+  }
+}
+@media print {
+  table.navigation {
+    visibility: collapse;
+    display: none;
+  }
+  div.titlepage table.navigation {
+    visibility: visible;
+    display: table;
+    /* tango:scarlet red 0/1 */
+    background: #ffe6e6;
+    border: solid 1px #ef2929;
+    margin-top: 0;
+    margin-bottom: 0;
+    top: 0;
+    left: 0;
+    height: 3em;
+  }
+}
+
+.navigation .title
+{
+  font-size: 200%;
+}
+
+div.gallery-float
+{
+  float: left;
+  padding: 10px;
+}
+div.gallery-float img
+{
+  border-style: none;
+}
+div.gallery-spacer
+{
+  clear: both;
+}
+
+a, a:visited
+{
+  text-decoration: none;
+  /* tango:sky blue 2 */
+  color: #3465a4;
+}
+a:hover
+{
+  text-decoration: underline;
+  /* tango:sky blue 1 */
+  color: #729fcf;
+}
+
+div.table table
+{
+  border-collapse: collapse;
+  border-spacing: 0px;
+  /* tango:aluminium 3 */
+  border: solid 1px #babdb6;
+}
+
+div.table table td, div.table table th
+{
+  /* tango:aluminium 3 */
+  border: solid 1px #babdb6;
+  padding: 3px;
+  vertical-align: top;
+}
+
+div.table table th
+{
+  /* tango:aluminium 2 */
+  background-color: #d3d7cf;
+}
+
+hr
+{
+  /* tango:aluminium 3 */
+  color: #babdb6;
+  background: #babdb6;
+  border: none 0px;
+  height: 1px;
+  clear: both;
+}
+
+.footer
+{
+  padding-top: 3.5em;
+  /* tango:aluminium 3 */
+  color: #babdb6;
+  text-align: center;
+  font-size: 80%;
+}
+
+.warning
+{
+  /* tango:orange 0/1 */
+  background: #ffeed9;
+  border-color: #ffb04f;
+}
+.note
+{
+  /* tango:chameleon 0/0.5 */
+  background: #d8ffb2;
+  border-color: #abf562;
+}
+.note, .warning
+{
+  padding: 0.5em;
+  border-width: 1px;
+  border-style: solid;
+}
+.note h3, .warning h3
+{
+  margin-top: 0.0em
+}
+.note p, .warning p
+{
+  margin-bottom: 0.0em
+}
+
+/* blob links */
+h2 .extralinks, h3 .extralinks
+{
+  float: right;
+  /* tango:aluminium 3 */
+  color: #babdb6;
+  font-size: 80%;
+  font-weight: normal;
+}
+
+.annotation
+{
+  /* tango:aluminium 5 */
+  color: #555753;
+  font-size: 80%;
+  font-weight: normal;
+}
+
+/* code listings */
+
+.listing_code .programlisting .cbracket   { color: #a40000; } /* tango: scarlet red 3 */
+.listing_code .programlisting .comment    { color: #a1a39d; } /* tango: aluminium 4 */
+.listing_code .programlisting .function   { color: #000000; font-weight: bold; }
+.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
+.listing_code .programlisting .keyword    { color: #4e9a06; } /* tango: chameleon 3  */
+.listing_code .programlisting .linenum    { color: #babdb6; } /* tango: aluminium 3 */
+.listing_code .programlisting .normal     { color: #000000; }
+.listing_code .programlisting .number     { color: #75507b; } /* tango: plum 2 */
+.listing_code .programlisting .preproc    { color: #204a87; } /* tango: sky blue 3  */
+.listing_code .programlisting .string     { color: #c17d11; } /* tango: chocolate 2 */
+.listing_code .programlisting .type       { color: #000000; }
+.listing_code .programlisting .type a     { color: #11326b; } /* tango: sky blue 4 */
+.listing_code .programlisting .symbol     { color: #ce5c00; } /* tango: orange 3 */
+
+.listing_frame {
+  /* tango:sky blue 1 */
+  border: solid 1px #729fcf;
+  padding: 0px;
+}
+
+.listing_lines, .listing_code {
+  margin-top: 0px;
+  margin-bottom: 0px;
+  padding: 0.5em;
+}
+.listing_lines {
+  /* tango:sky blue 0.5 */
+  background: #a6c5e3;
+  /* tango:aluminium 6 */
+  color: #2e3436;
+}
+.listing_code {
+  /* tango:sky blue 0 */
+  background: #e6f3ff;
+}
+.listing_code .programlisting {
+  /* override from previous */
+  border: none 0px;
+  padding: 0px;
+}
+.listing_lines pre, .listing_code pre {
+  margin: 0px;
+}
+
diff --git a/docs/plugins/html/up.png b/docs/plugins/html/up.png
new file mode 100644 (file)
index 0000000..85b3e2a
Binary files /dev/null and b/docs/plugins/html/up.png differ
diff --git a/docs/plugins/inspect/plugin-a52dec.xml b/docs/plugins/inspect/plugin-a52dec.xml
new file mode 100644 (file)
index 0000000..c571856
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>a52dec</name>
+  <description>Decodes ATSC A/52 encoded audio streams</description>
+  <filename>../../ext/a52dec/.libs/libgsta52dec.so</filename>
+  <basename>libgsta52dec.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>a52dec</name>
+      <longname>ATSC A/52 audio decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Decodes ATSC A/52 encoded audio streams</description>
+      <author>David I. Lehn &lt;dlehn@users.sourceforge.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-ac3; audio/ac3; audio/x-private1-ac3</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)[ 4000, 96000 ], channels=(int)[ 1, 6 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-amrnb.xml b/docs/plugins/inspect/plugin-amrnb.xml
new file mode 100644 (file)
index 0000000..a90debc
--- /dev/null
@@ -0,0 +1,55 @@
+<plugin>
+  <name>amrnb</name>
+  <description>Adaptive Multi-Rate Narrow-Band</description>
+  <filename>../../ext/amrnb/.libs/libgstamrnb.so</filename>
+  <basename>libgstamrnb.so</basename>
+  <version>0.10.19</version>
+  <license>unknown</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>amrnbdec</name>
+      <longname>AMR-NB audio decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Adaptive Multi-Rate Narrow-Band audio decoder</description>
+      <author>GStreamer maintainers &lt;gstreamer-devel@lists.sourceforge.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/AMR, rate=(int)8000, channels=(int)1</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)8000, channels=(int)1</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>amrnbenc</name>
+      <longname>AMR-NB audio encoder</longname>
+      <class>Codec/Encoder/Audio</class>
+      <description>Adaptive Multi-Rate Narrow-Band audio encoder</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)8000, channels=(int)1</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/AMR, rate=(int)8000, channels=(int)1</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-amrwbdec.xml b/docs/plugins/inspect/plugin-amrwbdec.xml
new file mode 100644 (file)
index 0000000..0478ac9
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>amrwbdec</name>
+  <description>Adaptive Multi-Rate Wide-Band Decoder</description>
+  <filename>../../ext/amrwbdec/.libs/libgstamrwbdec.so</filename>
+  <basename>libgstamrwbdec.so</basename>
+  <version>0.10.19</version>
+  <license>unknown</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>amrwbdec</name>
+      <longname>AMR-WB audio decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Adaptive Multi-Rate Wideband audio decoder</description>
+      <author>Renato Araujo &lt;renato.filho@indt.org.br&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/AMR-WB, rate=(int)16000, channels=(int)1</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, width=(int)16, depth=(int)16, signed=(boolean)true, endianness=(int)1234, rate=(int)16000, channels=(int)1</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-asf.xml b/docs/plugins/inspect/plugin-asf.xml
new file mode 100644 (file)
index 0000000..b50c1bc
--- /dev/null
@@ -0,0 +1,70 @@
+<plugin>
+  <name>asf</name>
+  <description>Demuxes and muxes audio and video in Microsofts ASF format</description>
+  <filename>../../gst/asfdemux/.libs/libgstasf.so</filename>
+  <basename>libgstasf.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>asfdemux</name>
+      <longname>ASF Demuxer</longname>
+      <class>Codec/Demuxer</class>
+      <description>Demultiplexes ASF Streams</description>
+      <author>Owen Fraser-Green &lt;owen@discobabe.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-ms-asf</details>
+        </caps>
+        <caps>
+          <name>audio_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>video_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rtpasfdepay</name>
+      <longname>RTP ASF packet depayloader</longname>
+      <class>Codec/Depayloader/Network</class>
+      <description>Extracts ASF streams from RTP</description>
+      <author>Tim-Philipp Müller &lt;tim centricular net&gt;, Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/x-rtp, media=(string){ application, video, audio }, payload=(int)[ 96, 127 ], clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)X-ASF-PF</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-ms-asf</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rtspwms</name>
+      <longname>WMS RTSP Extension</longname>
+      <class>Network/Extension/Protocol</class>
+      <description>Extends RTSP so that it can handle WMS setup</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-cdio.xml b/docs/plugins/inspect/plugin-cdio.xml
new file mode 100644 (file)
index 0000000..feb7b7b
--- /dev/null
@@ -0,0 +1,28 @@
+<plugin>
+  <name>cdio</name>
+  <description>Read audio from audio CDs</description>
+  <filename>../../ext/cdio/.libs/libgstcdio.so</filename>
+  <basename>libgstcdio.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>cdiocddasrc</name>
+      <longname>CD audio source (CDDA)</longname>
+      <class>Source/File</class>
+      <description>Read audio from CD using libcdio</description>
+      <author>Tim-Philipp Müller &lt;tim centricular net&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)2</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-dvdlpcmdec.xml b/docs/plugins/inspect/plugin-dvdlpcmdec.xml
new file mode 100644 (file)
index 0000000..0124c3e
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>dvdlpcmdec</name>
+  <description>Decode DVD LPCM frames into standard PCM</description>
+  <filename>../../gst/dvdlpcmdec/.libs/libgstdvdlpcmdec.so</filename>
+  <basename>libgstdvdlpcmdec.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>dvdlpcmdec</name>
+      <longname>DVD LPCM Audio decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Decode DVD LPCM frames into standard PCM audio</description>
+      <author>Jan Schmidt &lt;jan@noraisin.net&gt;, Michael Smith &lt;msmith@fluendo.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-private1-lpcm; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 32000, 44100, 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ true, false }, mute=(boolean){ true, false }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, width=(int){ 16, 24 }, rate=(int){ 32000, 44100, 48000, 96000 }, channels=(int)[ 1, 8 ], endianness=(int){ 4321 }, depth=(int){ 16, 24 }, signed=(boolean){ true }</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-dvdread.xml b/docs/plugins/inspect/plugin-dvdread.xml
new file mode 100644 (file)
index 0000000..e0b53df
--- /dev/null
@@ -0,0 +1,28 @@
+<plugin>
+  <name>dvdread</name>
+  <description>Access a DVD with dvdread</description>
+  <filename>../../ext/dvdread/.libs/libgstdvdread.so</filename>
+  <basename>libgstdvdread.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>dvdreadsrc</name>
+      <longname>DVD Source</longname>
+      <class>Source/File/DVD</class>
+      <description>Access a DVD title/chapter/angle using libdvdread</description>
+      <author>Erik Walthinsen &lt;omega@cse.ogi.edu&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)2, systemstream=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-dvdsub.xml b/docs/plugins/inspect/plugin-dvdsub.xml
new file mode 100644 (file)
index 0000000..0d958b3
--- /dev/null
@@ -0,0 +1,55 @@
+<plugin>
+  <name>dvdsub</name>
+  <description>DVD subtitle parser and decoder</description>
+  <filename>../../gst/dvdsub/.libs/libgstdvdsub.so</filename>
+  <basename>libgstdvdsub.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>dvdsubdec</name>
+      <longname>DVD subtitle decoder</longname>
+      <class>Codec/Decoder/Video</class>
+      <description>Decodes DVD subtitles into AYUV video frames</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;, Jan Schmidt &lt;thaytan@mad.scientist.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-dvd-subpicture</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw-yuv, format=(fourcc)AYUV, width=(int)720, height=(int)576, framerate=(fraction)0/1; video/x-raw-rgb, width=(int)720, height=(int)576, framerate=(fraction)0/1, bpp=(int)32, endianness=(int)4321, red_mask=(int)16711680, green_mask=(int)65280, blue_mask=(int)255, alpha_mask=(int)-16777216, depth=(int)32</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>dvdsubparse</name>
+      <longname>DVD subtitle parser</longname>
+      <class>Codec/Parser/Subtitle</class>
+      <description>Parses and packetizes DVD subtitle streams</description>
+      <author>Mark Nauwelaerts &lt;mnauw@users.sourceforge.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-dvd-subpicture</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-dvd-subpicture, parsed=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-iec958.xml b/docs/plugins/inspect/plugin-iec958.xml
new file mode 100644 (file)
index 0000000..0848472
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>iec958</name>
+  <description>Convert raw AC3 into IEC958 (S/PDIF) frames</description>
+  <filename>../../gst/iec958/.libs/libgstiec958.so</filename>
+  <basename>libgstiec958.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>ac3iec958</name>
+      <longname>AC3 to IEC958 filter</longname>
+      <class>Codec/Muxer/Audio</class>
+      <description>Pads AC3 frames into IEC958 frames suitable for a raw S/PDIF interface</description>
+      <author>Martin Soto &lt;martinsoto@users.sourceforge.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-private1-ac3; audio/x-ac3; audio/ac3</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-iec958, rate=(int){ 32000, 44100, 48000 }; audio/x-raw-int, endianness=(int)4321, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 32000, 44100, 48000 }, channels=(int)2</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-lame.xml b/docs/plugins/inspect/plugin-lame.xml
new file mode 100644 (file)
index 0000000..69a7851
--- /dev/null
@@ -0,0 +1,55 @@
+<plugin>
+  <name>lame</name>
+  <description>Encode MP3s with LAME</description>
+  <filename>../../ext/lame/.libs/libgstlame.so</filename>
+  <basename>libgstlame.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>lame</name>
+      <longname>L.A.M.E. mp3 encoder</longname>
+      <class>Codec/Encoder/Audio</class>
+      <description>High-quality free MP3 encoder (deprecated)</description>
+      <author>Erik Walthinsen &lt;omega@cse.ogi.edu&gt;, Wim Taymans &lt;wim@fluendo.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>lamemp3enc</name>
+      <longname>L.A.M.E. mp3 encoder</longname>
+      <class>Codec/Encoder/Audio</class>
+      <description>High-quality free MP3 encoder</description>
+      <author>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)3, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mad.xml b/docs/plugins/inspect/plugin-mad.xml
new file mode 100644 (file)
index 0000000..f2894b3
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>mad</name>
+  <description>mp3 decoding based on the mad library</description>
+  <filename>../../ext/mad/.libs/libgstmad.so</filename>
+  <basename>libgstmad.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>mad</name>
+      <longname>mad mp3 decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Uses mad code to decode mp3 streams</description>
+      <author>Wim Taymans &lt;wim@fluendo.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mpeg2dec.xml b/docs/plugins/inspect/plugin-mpeg2dec.xml
new file mode 100644 (file)
index 0000000..fd8ea2a
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>mpeg2dec</name>
+  <description>LibMpeg2 decoder</description>
+  <filename>../../ext/mpeg2dec/.libs/libgstmpeg2dec.so</filename>
+  <basename>libgstmpeg2dec.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>mpeg2dec</name>
+      <longname>mpeg1 and mpeg2 video decoder</longname>
+      <class>Codec/Decoder/Video</class>
+      <description>Uses libmpeg2 to decode MPEG video streams</description>
+      <author>Wim Taymans &lt;wim.taymans@chello.be&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)[ 1, 2 ], systemstream=(boolean)false</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw-yuv, format=(fourcc){ YV12, I420, Y42B, Y444 }, width=(int)[ 16, 4096 ], height=(int)[ 16, 4096 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mpegaudioparse.xml b/docs/plugins/inspect/plugin-mpegaudioparse.xml
new file mode 100644 (file)
index 0000000..b19ead5
--- /dev/null
@@ -0,0 +1,55 @@
+<plugin>
+  <name>mpegaudioparse</name>
+  <description>MPEG-1 layer 1/2/3 audio stream elements</description>
+  <filename>../../gst/mpegaudioparse/.libs/libgstmpegaudioparse.so</filename>
+  <basename>libgstmpegaudioparse.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>mp3parse</name>
+      <longname>MPEG1 Audio Parser</longname>
+      <class>Codec/Parser/Audio</class>
+      <description>Parses and frames mpeg1 audio streams (levels 1-3), provides seek</description>
+      <author>Jan Schmidt &lt;thaytan@mad.scientist.com&gt;,Erik Walthinsen &lt;omega@cse.ogi.edu&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, parsed=(boolean)false</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ], parsed=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>xingmux</name>
+      <longname>MP3 Xing muxer</longname>
+      <class>Formatter/Metadata</class>
+      <description>Adds a Xing header to the beginning of a VBR MP3 file</description>
+      <author>Christophe Fergeau &lt;teuf@gnome.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mpegstream.xml b/docs/plugins/inspect/plugin-mpegstream.xml
new file mode 100644 (file)
index 0000000..841bb7a
--- /dev/null
@@ -0,0 +1,130 @@
+<plugin>
+  <name>mpegstream</name>
+  <description>MPEG system stream parser</description>
+  <filename>../../gst/mpegstream/.libs/libgstmpegstream.so</filename>
+  <basename>libgstmpegstream.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>dvddemux</name>
+      <longname>DVD Demuxer</longname>
+      <class>Codec/Demuxer</class>
+      <description>Demultiplexes DVD (VOB) MPEG2 streams</description>
+      <author>Martin Soto &lt;martinsoto@users.sourceforge.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)2, systemstream=(boolean)true</details>
+        </caps>
+        <caps>
+          <name>current_audio</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3; audio/x-dts</details>
+        </caps>
+        <caps>
+          <name>current_subpicture</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-dvd-subpicture</details>
+        </caps>
+        <caps>
+          <name>current_video</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int){ 1, 2 }, systemstream=(boolean)false</details>
+        </caps>
+        <caps>
+          <name>audio_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>audio/mpeg, mpegversion=(int)1</details>
+        </caps>
+        <caps>
+          <name>dvd_audio_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>audio/mpeg, mpegversion=(int)1; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3; audio/x-dts</details>
+        </caps>
+        <caps>
+          <name>private_%d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>subpicture_%d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>video/x-dvd-subpicture</details>
+        </caps>
+        <caps>
+          <name>video_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>video/mpeg, mpegversion=(int){ 1, 2 }, systemstream=(boolean)false</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>mpegdemux</name>
+      <longname>MPEG Demuxer</longname>
+      <class>Codec/Demuxer</class>
+      <description>Demultiplexes MPEG1 and MPEG2 System Streams</description>
+      <author>Erik Walthinsen &lt;omega@cse.ogi.edu&gt;, Wim Taymans &lt;wim.taymans@chello.be&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int){ 1, 2 }, systemstream=(boolean)true</details>
+        </caps>
+        <caps>
+          <name>audio_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>audio/mpeg, mpegversion=(int)1</details>
+        </caps>
+        <caps>
+          <name>private_%d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>video_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>video/mpeg, mpegversion=(int){ 1, 2 }, systemstream=(boolean)false</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>mpegparse</name>
+      <longname>MPEG System Parser</longname>
+      <class>Codec/Parser</class>
+      <description>Parses MPEG1 and MPEG2 System Streams</description>
+      <author>Erik Walthinsen &lt;omega@cse.ogi.edu&gt;, Wim Taymans &lt;wim.taymans@chello.be&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)[ 1, 2 ], systemstream=(boolean)true</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)[ 1, 2 ], systemstream=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-realmedia.xml b/docs/plugins/inspect/plugin-realmedia.xml
new file mode 100644 (file)
index 0000000..2dda50e
--- /dev/null
@@ -0,0 +1,139 @@
+<plugin>
+  <name>realmedia</name>
+  <description>RealMedia support plugins</description>
+  <filename>../../gst/realmedia/.libs/libgstrmdemux.so</filename>
+  <basename>libgstrmdemux.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>pnmsrc</name>
+      <longname>PNM packet receiver</longname>
+      <class>Source/Network</class>
+      <description>Receive data over the network via PNM</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>application/vnd.rn-realmedia</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rademux</name>
+      <longname>RealAudio Demuxer</longname>
+      <class>Codec/Demuxer</class>
+      <description>Demultiplex a RealAudio file</description>
+      <author>Tim-Philipp Müller &lt;tim centricular net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/x-pn-realaudio</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rdtdepay</name>
+      <longname>RDT packet parser</longname>
+      <class>Codec/Depayloader/Network</class>
+      <description>Extracts RealMedia from RDT packets</description>
+      <author>Lutz Mueller &lt;lutz at topfrose dot de&gt;, Wim Taymans &lt;wim@fluendo.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/x-rdt, media=(string)application, clock-rate=(int)[ 1, 2147483647 ], encoding-name=(string)X-REAL-RDT</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>application/vnd.rn-realmedia</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rdtmanager</name>
+      <longname>RTP Decoder</longname>
+      <class>Codec/Parser/Network</class>
+      <description>Accepts raw RTP and RTCP packets and sends them forward</description>
+      <author>Wim Taymans &lt;wim@fluendo.com&gt;</author>
+      <pads>
+        <caps>
+          <name>recv_rtcp_sink_%d</name>
+          <direction>sink</direction>
+          <presence>request</presence>
+          <details>application/x-rtcp</details>
+        </caps>
+        <caps>
+          <name>recv_rtp_sink_%d</name>
+          <direction>sink</direction>
+          <presence>request</presence>
+          <details>application/x-rdt</details>
+        </caps>
+        <caps>
+          <name>recv_rtp_src_%d_%d_%d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>application/x-rdt</details>
+        </caps>
+        <caps>
+          <name>rtcp_src_%d</name>
+          <direction>source</direction>
+          <presence>request</presence>
+          <details>application/x-rtcp</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rmdemux</name>
+      <longname>RealMedia Demuxer</longname>
+      <class>Codec/Demuxer</class>
+      <description>Demultiplex a RealMedia file into audio and video streams</description>
+      <author>David Schleef &lt;ds@schleef.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/vnd.rn-realmedia</details>
+        </caps>
+        <caps>
+          <name>audio_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>video_%02d</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rtspreal</name>
+      <longname>RealMedia RTSP Extension</longname>
+      <class>Network/Extension/Protocol</class>
+      <description>Extends RTSP so that it can handle RealMedia setup</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-siddec.xml b/docs/plugins/inspect/plugin-siddec.xml
new file mode 100644 (file)
index 0000000..856c71a
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>siddec</name>
+  <description>Uses libsidplay to decode .sid files</description>
+  <filename>../../ext/sidplay/.libs/libgstsid.so</filename>
+  <basename>libgstsid.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>siddec</name>
+      <longname>Sid decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Use libsidplay to decode SID audio tunes</description>
+      <author>Wim Taymans &lt;wim.taymans@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-sid</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, endianness=(int)1234, signed=(boolean){ true, false }, width=(int){ 8, 16 }, depth=(int){ 8, 16 }, rate=(int)[ 8000, 48000 ], channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-synaesthesia.xml b/docs/plugins/inspect/plugin-synaesthesia.xml
new file mode 100644 (file)
index 0000000..a3b2ac2
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>synaesthesia</name>
+  <description>Creates video visualizations of audio input, using stereo and pitch information</description>
+  <filename>../../gst/synaesthesia/.libs/libgstsynaesthesia.so</filename>
+  <basename>libgstsynaesthesia.so</basename>
+  <version>0.10.17.4</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins prerelease</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>synaesthesia</name>
+      <longname>Synaesthesia</longname>
+      <class>Visualization</class>
+      <description>Creates video visualizations of audio input, using stereo and pitch information</description>
+      <author>Richard Boulton &lt;richard@tartarus.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-int, rate=(int)[ 1, 2147483647 ], channels=(int)2, endianness=(int)1234, width=(int)16, depth=(int)16, signed=(boolean)true</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-twolame.xml b/docs/plugins/inspect/plugin-twolame.xml
new file mode 100644 (file)
index 0000000..ddad53b
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>twolame</name>
+  <description>Encode MP2s with TwoLAME</description>
+  <filename>../../ext/twolame/.libs/libgsttwolame.so</filename>
+  <basename>libgsttwolame.so</basename>
+  <version>0.10.19</version>
+  <license>LGPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>twolame</name>
+      <longname>TwoLAME mp2 encoder</longname>
+      <class>Codec/Encoder/Audio</class>
+      <description>High-quality free MP2 encoder</description>
+      <author>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]; audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)1, layer=(int)2, rate=(int){ 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-x264.xml b/docs/plugins/inspect/plugin-x264.xml
new file mode 100644 (file)
index 0000000..da3b640
--- /dev/null
@@ -0,0 +1,34 @@
+<plugin>
+  <name>x264</name>
+  <description>libx264-based H264 plugins</description>
+  <filename>../../ext/x264/.libs/libgstx264.so</filename>
+  <basename>libgstx264.so</basename>
+  <version>0.10.19</version>
+  <license>GPL</license>
+  <source>gst-plugins-ugly</source>
+  <package>GStreamer Ugly Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>x264enc</name>
+      <longname>x264enc</longname>
+      <class>Codec/Encoder/Video</class>
+      <description>H264 Encoder</description>
+      <author>Josef Zlomek &lt;josef.zlomek@itonis.tv&gt;, Mark Nauwelaerts &lt;mnauw@users.sf.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw-yuv, format=(fourcc){ I420, YV12 }, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-h264, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], stream-format=(string){ byte-stream, avc }, alignment=(string){ au }, profile=(string){ high-10, high, main, constrained-baseline, high-10-intra }</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/scanobj-build.stamp b/docs/plugins/scanobj-build.stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/docs/random/ChangeLog-0.8 b/docs/random/ChangeLog-0.8
new file mode 100644 (file)
index 0000000..0c62918
--- /dev/null
@@ -0,0 +1,17692 @@
+2005-08-31  Michael Smith <msmith@fluendo.com>
+
+       * configure.ac:
+       * gst/dvdlpcmdec/Makefile.am:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcm_reset),
+       (gst_dvdlpcmdec_init), (gst_dvdlpcmdec_link), (update_timestamps),
+       (gst_dvdlpcmdec_chain):
+       * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         Port LPCM decoder to 0.9
+
+2005-08-30  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * configure.ac:
+         Remove plugins that should have disappeared.
+
+2005-08-30  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * autogen.sh:
+       * configure.ac:
+         Make autogen work again.
+
+2005-08-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/aalib/Makefile.am:
+       * ext/aalib/gstaasink.c:
+       * ext/aalib/gstaasink.h:
+       * ext/cairo/Makefile.am:
+       * ext/cairo/gstcairo.c:
+       * ext/cairo/gsttextoverlay.c:
+       * ext/cairo/gsttextoverlay.h:
+       * ext/cairo/gsttimeoverlay.c:
+       * ext/cairo/gsttimeoverlay.h:
+       * ext/dv/Makefile.am:
+       * ext/dv/NOTES:
+       * ext/dv/demo-play.c:
+       * ext/dv/gstdv.c:
+       * ext/dv/gstdvdec.c:
+       * ext/dv/gstdvdec.h:
+       * ext/dv/gstdvdemux.c:
+       * ext/dv/gstdvdemux.h:
+       * ext/esd/Makefile.am:
+       * ext/esd/README:
+       * ext/esd/esdmon.c:
+       * ext/esd/esdmon.h:
+       * ext/esd/esdsink.c:
+       * ext/esd/esdsink.h:
+       * ext/esd/gstesd.c:
+       * ext/flac/Makefile.am:
+       * ext/flac/flac_compat.h:
+       * ext/flac/gstflac.c:
+       * ext/flac/gstflacdec.c:
+       * ext/flac/gstflacdec.h:
+       * ext/flac/gstflacenc.c:
+       * ext/flac/gstflacenc.h:
+       * ext/flac/gstflactag.c:
+       * ext/flac/gstflactag.h:
+       * ext/gconf/Makefile.am:
+       * ext/gconf/gconf.c:
+       * ext/gconf/gconf.h:
+       * ext/gconf/gstgconfaudiosink.c:
+       * ext/gconf/gstgconfaudiosink.h:
+       * ext/gconf/gstgconfelements.c:
+       * ext/gconf/gstgconfelements.h:
+       * ext/gconf/gstgconfvideosink.c:
+       * ext/gconf/gstgconfvideosink.h:
+       * ext/gdk_pixbuf/Makefile.am:
+       * ext/gdk_pixbuf/gst_loader.c:
+       * ext/gdk_pixbuf/gstgdkanimation.c:
+       * ext/gdk_pixbuf/gstgdkanimation.h:
+       * ext/gdk_pixbuf/gstgdkpixbuf.c:
+       * ext/gdk_pixbuf/gstgdkpixbuf.h:
+       * ext/gdk_pixbuf/pixbufscale.c:
+       * ext/gdk_pixbuf/pixbufscale.h:
+       * ext/jpeg/Makefile.am:
+       * ext/jpeg/README:
+       * ext/jpeg/gstjpeg.c:
+       * ext/jpeg/gstjpegdec.c:
+       * ext/jpeg/gstjpegdec.h:
+       * ext/jpeg/gstjpegenc.c:
+       * ext/jpeg/gstjpegenc.h:
+       * ext/jpeg/gstsmokedec.c:
+       * ext/jpeg/gstsmokedec.h:
+       * ext/jpeg/gstsmokeenc.c:
+       * ext/jpeg/gstsmokeenc.h:
+       * ext/jpeg/smokecodec.c:
+       * ext/jpeg/smokecodec.h:
+       * ext/jpeg/smokeformat.h:
+       * ext/ladspa/Makefile.am:
+       * ext/ladspa/gstladspa.c:
+       * ext/ladspa/gstladspa.h:
+       * ext/ladspa/gstsignalprocessor.c:
+       * ext/ladspa/gstsignalprocessor.h:
+       * ext/ladspa/load.c:
+       * ext/ladspa/search.c:
+       * ext/ladspa/utils.h:
+       * ext/libcaca/Makefile.am:
+       * ext/libcaca/gstcacasink.c:
+       * ext/libcaca/gstcacasink.h:
+       * ext/libmng/Makefile.am:
+       * ext/libmng/gstmng.c:
+       * ext/libmng/gstmng.h:
+       * ext/libmng/gstmngdec.c:
+       * ext/libmng/gstmngdec.h:
+       * ext/libmng/gstmngenc.c:
+       * ext/libmng/gstmngenc.h:
+       * ext/libpng/Makefile.am:
+       * ext/libpng/gstpng.c:
+       * ext/libpng/gstpng.h:
+       * ext/libpng/gstpngdec.c:
+       * ext/libpng/gstpngdec.h:
+       * ext/libpng/gstpngenc.c:
+       * ext/libpng/gstpngenc.h:
+       * ext/mikmod/Makefile.am:
+       * ext/mikmod/README:
+       * ext/mikmod/drv_gst.c:
+       * ext/mikmod/gstmikmod.c:
+       * ext/mikmod/gstmikmod.h:
+       * ext/mikmod/mikmod_reader.c:
+       * ext/mikmod/mikmod_types.c:
+       * ext/mikmod/mikmod_types.h:
+       * ext/pango/Makefile.am:
+       * ext/pango/gsttextoverlay.c:
+       * ext/pango/gsttextoverlay.h:
+       * ext/pango/gsttimeoverlay.c:
+       * ext/pango/gsttimeoverlay.h:
+       * ext/raw1394/Makefile.am:
+       * ext/raw1394/gst1394.c:
+       * ext/raw1394/gstdv1394src.c:
+       * ext/raw1394/gstdv1394src.h:
+       * ext/shout2/Makefile.am:
+       * ext/shout2/gstshout2.c:
+       * ext/shout2/gstshout2.h:
+       * ext/speex/Makefile.am:
+       * ext/speex/gstspeex.c:
+       * ext/speex/gstspeexdec.c:
+       * ext/speex/gstspeexdec.h:
+       * ext/speex/gstspeexenc.c:
+       * ext/speex/gstspeexenc.h:
+       * gst/avi/.cvsignore:
+       * gst/avi/Makefile.am:
+       * gst/avi/README:
+       * gst/avi/avi-ids.h:
+       * gst/avi/avi.vcproj:
+       * gst/avi/gstavi.c:
+       * gst/avi/gstavidemux.c:
+       * gst/avi/gstavidemux.h:
+       * gst/avi/gstavimux.c:
+       * gst/avi/gstavimux.h:
+       * gst/level/gstlevel.c: (gst_level_transform):
+       * sys/Makefile.am:
+       * sys/oss/.cvsignore:
+       * sys/oss/Makefile.am:
+       * sys/oss/gst-i18n-plugin.h:
+       * sys/oss/gstossaudio.c:
+       * sys/oss/gstossdmabuffer.c:
+       * sys/oss/gstossdmabuffer.h:
+       * sys/oss/gstosshelper.c:
+       * sys/oss/gstosshelper.h:
+       * sys/oss/gstossmixer.c:
+       * sys/oss/gstossmixer.h:
+       * sys/oss/gstossmixerelement.c:
+       * sys/oss/gstossmixerelement.h:
+       * sys/oss/gstossmixertrack.c:
+       * sys/oss/gstossmixertrack.h:
+       * sys/oss/gstosssink.c:
+       * sys/oss/gstosssink.h:
+       * sys/oss/gstosssrc.c:
+       * sys/oss/gstosssrc.h:
+       * sys/oss/oss_probe.c:
+       * sys/osxaudio/Makefile.am:
+       * sys/osxaudio/gstosxaudio.c:
+       * sys/osxaudio/gstosxaudioelement.c:
+       * sys/osxaudio/gstosxaudioelement.h:
+       * sys/osxaudio/gstosxaudiosink.c:
+       * sys/osxaudio/gstosxaudiosink.h:
+       * sys/osxaudio/gstosxaudiosrc.c:
+       * sys/osxaudio/gstosxaudiosrc.h:
+       * sys/osxvideo/Makefile.am:
+       * sys/osxvideo/cocoawindow.h:
+       * sys/osxvideo/cocoawindow.m:
+       * sys/osxvideo/osxvideosink.h:
+       * sys/osxvideo/osxvideosink.m:
+         all these plugins are moved to gst-plugins-good
+
+2005-08-28  Flavio Oliveira  <flavio.oliveira@indt.org.br>
+
+       * gst/wavenc/gstwavenc.c: Ported to GStreamer 0.9.
+       Need to fix performance issues.
+
+2005-08-28  Andy Wingo  <wingo@pobox.com>
+
+       * Updates for two-arg init from GST_BOILERPLATE.
+
+       * ext/ladspa/gstsignalprocessor.c (gst_signal_processor_init): Use
+       the second arg for the class, because G_OBJECT_GET_CLASS (self)
+       returns the wrong thing.
+       (gst_signal_processor_add_pad_from_template): Make pads of the
+       right type.
+
+       * ext/ladspa/gstladspa.c (gst_ladspa_class_get_param_spec): Make
+       writable param specs G_PARAM_CONSTRUCT so default values work.
+       (gst_ladspa_init): Use the second arg for the class.
+
+2005-08-26  Andy Wingo  <wingo@pobox.com>
+
+       * ext/ladspa/gstladspa.c: 
+       * ext/ladspa/gstladspa.h: Finish porting, still doesn't work but
+       it does compile and register. I have more features than you.
+       
+       * ext/ladspa/gstsignalprocessor.h: 
+       * ext/ladspa/gstsignalprocessor.c: Updates, bug fixen.
+
+2005-08-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/effectv/gstquark.c: (gst_quarktv_init),
+       (gst_quarktv_change_state):
+         do proper cleanup/creation, fixes state changes
+
+2005-08-25  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst/level/gstlevel.c: (gst_level_message_new):
+       Revert unpopular change for GST_MESSAGE_SRC to GObject.
+
+2005-08-25  Andy Wingo  <wingo@pobox.com>
+
+       * ext/ladspa/gstladspa.h: 
+       * ext/ladspa/gstladspa.c: Halfway-ported. Doesn't compile yet.
+
+       * ext/ladspa/gstsignalprocessor.h:
+       * ext/ladspa/gstsignalprocessor.c: New files, the start of a base
+       class for DSP elements.
+
+       * configure.ac: Sort the external libs checks, add a ladspa check,
+       output the ladspa makefile.
+
+2005-08-25  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c (gst_rmdemux_loop, gst_rmdemux_chain):
+       Fixed EOS.
+       (gst_rmdemux_parse_indx_data, gst_rmdemux_parse_indx): Handle
+       malformed index headers where the packet size is incorrect.
+
+2005-08-24  Andy Wingo  <wingo@pobox.com>
+
+       * ext/dv/gstdvdemux.c (gst_dvdemux_demux_frame): Send out valid
+       segment end timestamps.
+
+2005-08-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+         lame and mpegaudioparse seem to work
+       * gst/videobox/gstvideobox.c: (gst_video_box_class_init),
+       (gst_video_box_transform_caps), (gst_video_box_get_unit_size):
+         update for basetransform changes
+
+2005-08-24  Jan Schmidt  <thaytan@mad.scientist.com>
+       * gst/level/gstlevel.c: (gst_level_message_new):
+         GST_MESSAGE_SRC became a GObject
+
+2005-08-23  Stefan Kost  <ensonic@users.sf.net>
+
+       * ext/speex/gstspeexenc.h:
+         Fixed include path of adapter
+
+2005-08-23  Wim Taymans  <wim@fluendo.com>
+
+       * ext/speex/gstspeexdec.c: (gst_speex_dec_class_init):
+       * ext/speex/gstspeexenc.c: (gst_speexenc_class_init):
+       Fix property warning.
+
+2005-08-23  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_init),
+       (gst_rtpamrdec_sink_setcaps), (gst_rtpamrdec_chain):
+       * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_class_init),
+       (gst_rtpamrenc_init), (gst_rtpamrenc_chain):
+       * gst/rtp/gstrtph263penc.c: (gst_rtph263penc_class_init),
+       (gst_rtph263penc_flush), (gst_rtph263penc_chain):
+       Small updates, RFC reference to payload encoders.
+
+2005-08-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/speex/Makefile.am:
+       * ext/speex/gstspeex.c: (plugin_init):
+       * ext/speex/gstspeexdec.c: (speex_get_query_types),
+       (gst_speex_dec_init), (speex_dec_src_query), (speex_dec_src_event),
+       (speex_dec_event), (speex_dec_chain):
+         Port speexdec. Leads to some unfamiliar warnings on console,
+         but works otherwise.
+
+2005-08-23  Andy Wingo  <wingo@pobox.com>
+
+       * sys/oss/gstosssrc.c (gst_oss_src_open): Set the device-name
+       property after opening the mixer.
+
+       * sys/oss/gstosssrc.c: 
+       * sys/oss/gstosssrc.h: Easy to implement a mixer, eh...
+
+       * sys/oss/gstossmixerelement.h:
+       * sys/oss/gstossmixerelement.c: Added mixer element like
+       alsamixer.
+
+       * sys/oss/Makefile.am: 
+       * sys/oss/gstossaudio.c: Register the ossmixer element.
+       
+       * sys/oss/gstossmixer.h:
+       * sys/oss/gstossmixer.c: Refactored to be more like alsamixer.
+
+       * sys/oss/gstossmixertrack.h:
+       * sys/oss/gstossmixertrack.c: Split out from gstossmixer.[ch],
+       like gstalsamixer.
+
+       * sys/oss/gstosssrc.c:
+       * sys/oss/gstosssink.c: Where before we used a gstosselement
+       object as a helper library, now just call functions from
+       gstosshelper.
+
+       * sys/oss/gstosshelper.h:
+       * sys/oss/gstosshelper.c: Made a real library. Removed
+       propertyprobe for now, should add it back later.
+       
+       * sys/oss/gstosselement.h:
+       * sys/oss/gstosselement.c: Removed, we don't have a shared base
+       class.
+       
+       * sys/oss/gstosshelper.c (gst_oss_helper_probe_caps): Search
+       higher-to-lower, makes 16 bit appear earlier in the caps, which
+       makes it preferred.
+
+       * sys/oss/gstosssrc.h: 
+       * sys/oss/gstosssrc.c: Totally ported, dude.
+
+       * sys/oss/Makefile.am:
+       * sys/oss/gstossaudio.c: Add osssrc.
+       
+       * sys/oss/gstosssink.c: We do native byte order.
+
+2005-08-23  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c (gst_rmdemux_src_event): Fixed bug
+       causing events to be passed wrong way.
+       (gst_rmdemux_parse_packet): Avoid accidentally skipping audio.
+
+2005-08-22  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_init),
+       (gst_id3_tag_sink_event), (gst_id3_tag_do_caps_nego),
+       (gst_id3_tag_chain), (gst_id3_tag_change_state), (plugin_init):
+         Works a bit better now, but still needs a rewrite to use
+         get_range instead of this seeking nastiness.
+
+2005-08-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/flac/Makefile.am:
+       * ext/flac/gstflac.c: (plugin_init):
+       * ext/flac/gstflacdec.c: (flacdec_get_type), (gst_flacdec_init),
+       (gst_flacdec_update_metadata), (gst_flacdec_seek),
+       (gst_flacdec_tell), (gst_flacdec_length), (gst_flacdec_read),
+       (gst_flacdec_write), (gst_flacdec_loop),
+       (gst_flacdec_get_src_query_types), (gst_flacdec_src_query),
+       (gst_flacdec_src_event), (gst_flacdec_sink_activate),
+       (gst_flacdec_sink_activate_pull), (gst_flacdec_change_state):
+       * ext/flac/gstflacdec.h:
+         Port flacdec (seeking is still slow'ish).
+
+2005-08-22  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c: 
+       (gst_rmdemux_perform_seek, gst_rmdemux_parse_packet): 
+       Seeking improvements.
+
+2005-08-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/gstmultiudpsink.c: (gst_multiudpsink_class_init):
+       Remove get_time code that is both wrong and unneeded.
+
+2005-08-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/gstrtph263penc.c: (gst_rtph263penc_class_init),
+       (gst_rtph263penc_flush), (gst_rtph263penc_chain),
+       (gst_rtph263penc_set_property), (gst_rtph263penc_get_property):
+       * gst/rtp/gstrtph263penc.h:
+       Added configurable pt and ssrc, to be merged in the caps or
+       a base class...
+
+2005-08-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/gstrtph263pdec.c: (gst_rtph263pdec_init),
+       (gst_rtph263pdec_chain):
+       * gst/rtp/gstrtph263penc.c: (gst_rtph263penc_class_init),
+       (gst_rtph263penc_flush), (gst_rtph263penc_chain):
+       Some cleanups in the h263p (de)payloaders.
+
+2005-08-19  Wim Taymans  <wim@fluendo.com>
+
+       * ext/amrnb/amrnbdec.c:
+       * ext/amrnb/amrnbenc.c: (gst_amrnbenc_setcaps):
+       * ext/amrnb/amrnbparse.c:
+       Update caps with audio/AMR.
+       
+       * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_init),
+       (gst_rtpamrdec_sink_setcaps), (gst_rtpamrdec_chain),
+       (gst_rtpamrdec_change_state):
+       * gst/rtp/gstrtpamrdec.h:
+       * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_class_init),
+       (gst_rtpamrenc_init), (gst_rtpamrenc_chain):
+       Dont set FT headers twice, it was already in the encoded
+       bitstream.
+       
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_open),
+       (gst_rtspsrc_close), (gst_rtspsrc_play):
+       * gst/rtsp/rtspconnection.c: (parse_line):
+       Cleanups
+       
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_class_init),
+       (gst_udpsrc_create), (gst_udpsrc_set_property),
+       (gst_udpsrc_get_property):
+       * gst/udp/gstudpsrc.h:
+       Added caps property, we need this soon to type the buffers.
+
+2005-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_init),
+       (gst_rtpamrdec_chain):
+       Fix up amr depayloader a bit.
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_open),
+       (gst_rtspsrc_close), (gst_rtspsrc_play):
+       Look for options result in Public and Allow header fields..
+       spec says Allow but some servers return Public...
+
+2005-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_class_init),
+       (gst_rtpamrenc_init), (gst_rtpamrenc_chain),
+       (gst_rtpamrenc_set_property), (gst_rtpamrenc_get_property):
+       * gst/rtp/gstrtpamrenc.h:
+       Added payload_type and ssrc properties to the payloader.
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_open),
+       (gst_rtspsrc_close), (gst_rtspsrc_play):
+       Options need to be stripped and are in the Public header field.
+
+       * gst/rtsp/rtspurl.c: (rtsp_url_parse):
+       Fix url / parsing...
+
+
+2005-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/Makefile.am:
+       * gst/rtp/gstrtp.c: (plugin_init):
+       * gst/rtp/gstrtpamrdec.c: (gst_rtpamrdec_get_type),
+       (gst_rtpamrdec_base_init), (gst_rtpamrdec_class_init),
+       (gst_rtpamrdec_init), (gst_rtpamrdec_chain),
+       (gst_rtpamrdec_set_property), (gst_rtpamrdec_get_property),
+       (gst_rtpamrdec_change_state), (gst_rtpamrdec_plugin_init):
+       * gst/rtp/gstrtpamrdec.h:
+       * gst/rtp/gstrtpamrenc.c: (gst_rtpamrenc_get_type),
+       (gst_rtpamrenc_base_init), (gst_rtpamrenc_class_init),
+       (gst_rtpamrenc_init), (gst_rtpamrenc_chain),
+       (gst_rtpamrenc_set_property), (gst_rtpamrenc_get_property),
+       (gst_rtpamrenc_change_state), (gst_rtpamrenc_plugin_init):
+       * gst/rtp/gstrtpamrenc.h:
+       * gst/rtp/gstrtpmpaenc.c: (gst_rtpmpaenc_class_init),
+       (gst_rtpmpaenc_flush), (gst_rtpmpaenc_chain):
+       Added very simplistic amr payloader. depayloader does not
+       work yet.
+
+2005-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send), (gst_rtspsrc_open),
+       (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_pause),
+       (gst_rtspsrc_change_state):
+       * gst/rtsp/gstrtspsrc.h:
+       * gst/rtsp/rtspdefs.c: (rtsp_method_as_text), (rtsp_find_method):
+       * gst/rtsp/rtspdefs.h:
+       * gst/rtsp/rtsptransport.c: (rtsp_transport_parse):
+       Handle RTSP defaults better.
+       Issue OPTIONS request to figure out what we are allowed to do.
+       Make the methods a bitfield so we can easily collect supported 
+       options.
+       Fix rtsp_find_method.
+       Do proper RTSP connection shutdown.
+
+2005-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/Makefile.am:
+       * gst/rtp/gstrtp-common.h:
+       * gst/rtp/gstrtp.c: (plugin_init):
+       * gst/rtp/gstrtpL16enc.h:
+       * gst/rtp/gstrtpdec.c: (gst_rtpdec_get_type),
+       (gst_rtpdec_class_init), (gst_rtpdec_chain_rtp),
+       (gst_rtpdec_chain_rtcp), (gst_rtpdec_change_state),
+       (gst_rtpdec_plugin_init):
+       * gst/rtp/gstrtph263pdec.c: (gst_rtph263pdec_get_type),
+       (gst_rtph263pdec_base_init), (gst_rtph263pdec_class_init),
+       (gst_rtph263pdec_init), (gst_rtph263pdec_chain),
+       (gst_rtph263pdec_set_property), (gst_rtph263pdec_get_property),
+       (gst_rtph263pdec_change_state), (gst_rtph263pdec_plugin_init):
+       * gst/rtp/gstrtph263pdec.h:
+       * gst/rtp/gstrtph263penc.c: (gst_rtph263penc_get_type),
+       (gst_rtph263penc_base_init), (gst_rtph263penc_class_init),
+       (gst_rtph263penc_init), (gst_rtph263penc_flush),
+       (gst_rtph263penc_chain), (gst_rtph263penc_set_property),
+       (gst_rtph263penc_get_property), (gst_rtph263penc_change_state),
+       (gst_rtph263penc_plugin_init):
+       * gst/rtp/gstrtph263penc.h:
+       * gst/rtp/gstrtpmpadec.c: (gst_rtpmpadec_get_type),
+       (gst_rtpmpadec_base_init), (gst_rtpmpadec_class_init),
+       (gst_rtpmpadec_init), (gst_rtpmpadec_chain),
+       (gst_rtpmpadec_set_property), (gst_rtpmpadec_get_property),
+       (gst_rtpmpadec_change_state), (gst_rtpmpadec_plugin_init):
+       * gst/rtp/gstrtpmpadec.h:
+       * gst/rtp/gstrtpmpaenc.c: (gst_rtpmpaenc_get_type),
+       (gst_rtpmpaenc_base_init), (gst_rtpmpaenc_class_init),
+       (gst_rtpmpaenc_init), (gst_rtpmpaenc_flush), (gst_rtpmpaenc_chain),
+       (gst_rtpmpaenc_set_property), (gst_rtpmpaenc_get_property),
+       (gst_rtpmpaenc_change_state), (gst_rtpmpaenc_plugin_init):
+       * gst/rtp/gstrtpmpaenc.h:
+       * gst/rtp/rtp-packet.c:
+       * gst/rtp/rtp-packet.h:
+       Remove old code that is now in gst-libs/gst/rtp/.
+       Added some payload/depayloaders.
+
+       * gst/udp/gstudpsink.c: (gst_udpsink_class_init):
+       Fix port number range.
+
+2005-08-17  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       Added mpegaudioparse
+
+       * ext/lame/gstlame.c: (gst_lame_src_getcaps),
+       (gst_lame_src_setcaps), (gst_lame_sink_setcaps),
+       (gst_lame_sink_event), (gst_lame_chain):
+       Some cleanups.
+       Fix memleak.
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       (gst_mp3parse_class_init), (gst_mp3parse_init),
+       (gst_mp3parse_chain), (gst_mp3parse_change_state):
+       * gst/mpegaudioparse/gstmpegaudioparse.h:
+       Ported mpegaudioparse
+
+2005-08-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_open), (gst_rtspsrc_play):
+       Support absolute control urls too.
+
+2005-08-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_parse_stream),
+       (gst_avi_demux_stream_header):
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_add_stream), (qtdemux_parse_tree):
+         Uncomment metadata and codec-name handling.
+
+2005-08-16  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/amrnb/amrnbparse.c: (gst_amrnbparse_read_header):
+       Fix compile warning.
+
+       * ext/lame/gstlame.c: (gst_lame_class_init),
+       (gst_lame_src_getcaps), (gst_lame_src_setcaps),
+       (gst_lame_sink_setcaps), (gst_lame_init), (gst_lame_sink_event),
+       (gst_lame_chain), (gst_lame_change_state):
+       * ext/lame/gstlame.h:
+       Port lame plugin
+
+2005-08-16  Andy Wingo  <wingo@pobox.com>
+
+       * ext/dv/gstdvdemux.c (gst_dvdemux_flush): Use gst_adapter_take so
+       we have our own copy of the data.
+       (gst_dvdemux_demux_video): Set the take() data as malloc_data so
+       it will get freed later.
+
+       * ext/raw1394/gstdv1394src.c (gst_dv1394src_iso_receive): Note
+       license info in the source code -- was only in the commit log
+       before.
+
+       * ext/dv/gstdvdec.h:
+       * ext/dv/gstdvdec.c: Only decodes systemstream=FALSE dv video --
+       old pipelines using dvdec should probably have a dvdemux first.
+
+       * ext/dv/gstdvdemux.h:
+       * ext/dv/gstdvdemux.c: Split out from dvdec, chunks the incoming
+       systemstream=TRUE data into frames, sets caps data, and spits out
+       PCM audio in addition to systemstream=FALSE video frames. Operates
+       in chain mode only for now; should make a getrange version as
+       well.
+
+       * ext/dv/gstdv.c: New file, registers the libgstdv plugin.
+
+       * ext/dv/Makefile.am: Library name changed to libgstdv. Split
+       dvdec into dvdemux and dvdec.
+
+2005-08-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_event), (gst_faad_chain):
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header):
+         Handle _push() return values.
+
+2005-08-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_event):
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header):
+         Fix debug.
+
+2005-08-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak),
+       (qtdemux_video_caps):
+         Forwardport from 0.8 to implement RLE.
+
+2005-08-15  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/README:
+       Added rtsp server implementation docs.
+
+2005-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/aalib/gstaasink.c:
+         aalib is LGPL, so this plugin can be LGPL
+       * ext/arts/gst_arts.c: (plugin_init):
+         rename, we don't like underscores
+       * ext/audiofile/gstaf.c:
+       * ext/sndfile/gstsf.c:
+         rename, we like a descriptive plugin name
+       * ext/gconf/gstgconfelements.c:
+         change description a little
+       * ext/musicbrainz/gsttrm.c:
+         musicbrainz is LGPL, so plugin can be LGPL
+       * ext/raw1394/gst1394.c:
+         rename, we like all-digit names
+       * gst/equalizer/gstiirequalizer.c:
+       * gst/fdsrc/gstfdsrc.c:
+       * gst/multifilesink/gstmultifilesink.c:
+         rename
+       * gst/virtualdub/gstvirtualdub.c:
+         use GST_PLUGIN_DEFINE
+       * sys/dxr3/dxr3init.c:
+         only uses system headers, and code is LGPL, so plugin is LGPL
+
+2005-08-13  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/mad/Makefile.am:
+       * gst/avi/Makefile.am:
+       * gst/effectv/Makefile.am:
+       * gst/udp/Makefile.am:
+       * gst/wavparse/Makefile.am:
+         Use -lgstfoo-@GST_MAJORMINOR@ instead of -lgstfoo-0.9
+
+2005-08-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_decode_indirect),
+       (gst_jpeg_dec_decode_direct), (gst_jpeg_dec_chain):
+         Fix decoding of pictures with certain uneven or unaligned
+         widths where jpeglib needs more horizontal padding than our
+         I420 buffers provide, resulting in blocky artifacts at the
+         left side of the picture (#164176). 
+         Also make use of our shiny new GST_ROUND_N() macros.
+
+2005-08-11  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_init), (gst_jpeg_dec_chain),
+       (gst_jpeg_dec_change_state):
+       * ext/jpeg/gstjpegdec.h:
+         Fix crashes/invalid memory access for pictures that have a height
+         that is not a multiple of 16 (or rather: v_samp_factor * DCTSIZE).
+         
+         Also fix the state change function for downwards state changes
+         (need to chain up to parent before destroying our resources, to 
+         make sure pads get deactivated and our chain function isn't
+         running and using those very same resources in another thread).
+
+         The jpeg line buffer only needs to be v_samp_factor*DCTSIZE lines
+         per plane, not picture_height lines; allocate that on the stack.
+
+2005-08-10  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers),
+       (gst_wavparse_stream_data):
+         Add some fixes from 0.8 branch: allow 24/32bps songs and
+         blockalign samples to the header-specified size, if any
+         (#311070); error out on channels==0 or bitrate==0 
+         (#309043, #304588).
+
+2005-08-10  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/level/gstlevel.c: (gst_level_init), (gst_level_set_caps),
+       (gst_level_transform):
+       * gst/level/gstlevel.h:
+         remove unused MS struct member
+         don't reset the CS values for channels on every _chain, so that
+         level actually correctly calculates the RMS value.  sigh.
+         calculate RMS values correctly for peak and decay peak sums;
+         before we were signalling them as if they already were amplitude
+         and not power values.  sigh.
+       Remind me to not try and pretend I'm writing DSP code.
+
+2005-08-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_class_init), (gst_faad_setcaps):
+         Add debug category, remove Close() call that made it crash
+         whenever reusing, renegotiating or anything; Close() actually
+         free()s the handle and should only be called on READY->NULL.
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header):
+         Actually set caps on buffer (in addition to pad), also.
+
+2005-08-10  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c (gst_rmdemux_sink_activate) 
+       (gst_rmdemux_sink_activate_push, gst_rmdemux_sink_activate_pull) 
+       (gst_rmdemux_loop, gst_rmdemux_src_event) 
+       (gst_rmdemux_perform_seek, gst_rmdemux_src_query): Implemented
+       push-pull and seeking.
+
+2005-08-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_event):
+         Sign/unsign mismatch.
+       * configure.ac:
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_class_init),
+       (gst_qtdemux_init), (gst_qtdemux_get_src_query_types),
+       (gst_qtdemux_handle_src_query), (gst_qtdemux_handle_src_event),
+       (plugin_init), (gst_qtdemux_handle_sink_event),
+       (gst_qtdemux_change_state), (gst_qtdemux_loop_header),
+       (qtdemux_sink_activate), (qtdemux_sink_activate_pull),
+       (gst_qtdemux_add_stream), (qtdemux_parse), (qtdemux_parse_tree),
+       (qtdemux_parse_trak), (qtdemux_video_caps), (qtdemux_audio_caps):
+       * gst/qtdemux/qtdemux.h:
+         Half-assed port (hey, it works).
+
+2005-08-09  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_header):
+         Fix AVI header parsing: add missing break statement after
+         GST_RIFF_INFO_LIST parsing code; gst_riff_read_chunk() has
+         already advanced the avi->offset, no need to do it twice
+         (fixes MovieOfMovies.avi).
+
+2005-08-09  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_init),
+       (gst_jpeg_dec_setcaps), (gst_jpeg_dec_chain),
+       (gst_jpeg_dec_change_state):
+       * ext/jpeg/gstjpegdec.h:
+         Make mjpeg actually work and skip jpeg data parsing if we
+         know that the input is packetized (ie. each input buffer
+         is exactly one jpeg frame).
+
+2005-08-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_chain):
+         It'd be nice if I could listen to my mp3 files, so send out an
+         initial discont, as the sink apparently wants.
+
+2005-08-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event),
+       (gst_avi_demux_handle_seek):
+         Fix seeking (or, well, fix threading issue where a variable was
+         set before a lock was taken and was already unset before that
+         same lock was taken and was thus no longer in existance when it
+         actually had to be used).
+
+2005-08-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_process_next_entry):
+         Mixing binary and logical operators is not going to work; fix
+         position-querying in Totem.
+
+2005-08-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/faad/gstfaad.c: (gst_faad_base_init), (gst_faad_class_init),
+       (gst_faad_init), (gst_faad_setcaps), (gst_faad_srcgetcaps),
+       (gst_faad_event), (gst_faad_update_caps), (gst_faad_chain),
+       (gst_faad_change_state):
+       * ext/faad/gstfaad.h:
+         Fix negotiation (#310932) and miscellaneous other stuff. Probably
+         still needs some more work.
+
+2005-08-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_init),
+       (gst_jpeg_dec_setcaps), (gst_jpeg_dec_chain):
+         Add setcaps() function (for mjpeg).
+
+2005-08-08  Andy Wingo  <wingo@pobox.com>
+
+       * ext/esd/esdsink.c (gst_esdsink_getcaps): Seems that wierd
+       va_list caps setting function was borked. Fixed esdsink.
+
+       * sys/oss/gstosssink.c (gst_oss_sink_open, gst_oss_sink_close) 
+       (gst_oss_sink_prepare, gst_oss_sink_unprepare): Update for newer
+       audiosink api.
+
+       * ext/raw1394/gstdv1394src.c (gst_dv1394src_get_property) 
+       (gst_dv1394src_set_property): Style. All about the style.
+
+       * ext/esd/esdsink.c (gst_esdsink_getcaps): Return specific caps
+       only if in READY or higher (i.e., if _open() has been called.)
+       (gst_esdsink_open, gst_esdsink_close, gst_esdsink_prepare) 
+       (gst_esdsink_unprepare): Update for audiosink changes.
+       (gst_esdsink_change_state): Die!
+
+2005-08-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/jpeg/Makefile.am:
+         Fix compile.
+
+2005-08-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/jpeg/Makefile.am:
+       * ext/jpeg/gstjpeg.c: (plugin_init):
+       * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_get_type),
+       (gst_jpeg_dec_finalize), (gst_jpeg_dec_base_init),
+       (gst_jpeg_dec_class_init), (gst_jpeg_dec_fill_input_buffer),
+       (gst_jpeg_dec_init_source), (gst_jpeg_dec_skip_input_data),
+       (gst_jpeg_dec_resync_to_restart), (gst_jpeg_dec_term_source),
+       (gst_jpeg_dec_my_output_message), (gst_jpeg_dec_my_emit_message),
+       (gst_jpeg_dec_my_error_exit), (gst_jpeg_dec_init),
+       (is_jpeg_start_marker), (is_jpeg_end_marker),
+       (gst_jpeg_dec_find_jpeg_header), (gst_jpeg_dec_ensure_header),
+       (gst_jpeg_dec_have_end_marker),
+       (gst_jpeg_dec_parse_tag_has_entropy_segment),
+       (gst_jpeg_dec_parse_image_data), (gst_jpeg_dec_chain),
+       (gst_jpeg_dec_change_state):
+       * ext/jpeg/gstjpegdec.h:
+         Port jpegdec to 0.9; handles 'progressive loading' now, ie. input does
+         no longer need to be one single buffer.
+
+2005-08-04  Andy Wingo  <wingo@pobox.com>
+
+       * sys/oss/gstossaudio.c (plugin_init): Second-class citizen.
+
+       * gst/videobox/gstvideobox.c (gst_video_box_get_size): Update for
+       API changes.
+
+       * configure.ac (DEFAULT_AUDIOSINK, DEFAULT_VIDEOSINK): Set to
+       autoaudiosink and autovideosink.
+
+2005-08-04  Edward Hervey  <edward@fluendo.com>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_reset),
+       (gst_avi_demux_parse_stream), (gst_avi_demux_process_next_entry):
+       You need to allocatate (len+1) characters to store a len size string.
+       Also don't stop the processing task if the output pad is not linked.
+
+2005-08-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gconf/gstgconfaudiosink.c: (gst_gconf_audio_sink_reset),
+       (gst_gconf_audio_sink_init), (do_toggle_element),
+       (cb_toggle_element), (gst_gconf_audio_sink_change_state):
+       * ext/gconf/gstgconfaudiosink.h:
+       * ext/gconf/gstgconfvideosink.c: (gst_gconf_video_sink_reset),
+       (gst_gconf_video_sink_init), (do_toggle_element),
+       (cb_toggle_element), (gst_gconf_video_sink_change_state):
+       * ext/gconf/gstgconfvideosink.h:
+       * gst/autodetect/gstautoaudiosink.c: (gst_auto_audio_sink_reset),
+       (gst_auto_audio_sink_init), (gst_auto_audio_sink_detect),
+       (gst_auto_audio_sink_change_state):
+       * gst/autodetect/gstautoaudiosink.h:
+       * gst/autodetect/gstautovideosink.c: (gst_auto_video_sink_reset),
+       (gst_auto_video_sink_init), (gst_auto_video_sink_detect),
+       (gst_auto_video_sink_change_state):
+       * gst/autodetect/gstautovideosink.h:
+         Use new ghostpad API; now they actually work in Totem, also.
+
+2005-08-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/libpng/Makefile.am:
+         Fix uninstalled build.
+
+2005-08-02  Edward Hervey  <edward@fluendo.com>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/libpng/Makefile.am:
+       * ext/libpng/gstpng.c:
+       * ext/libpng/gstpngenc.c:
+       Ported pngenc , still have to port pngdec...
+
+2005-08-01  Stefan Kost  <ensonic@users.sf.net>
+
+       reviewed by: <delete if not using a buddy>
+
+       * configure.ac:
+       * ext/ladspa/Makefile.am:
+       * ext/ladspa/gstladspa.c: (gst_ladspa_init), (gst_ladspa_loop),
+       (gst_ladspa_chain), (gst_ladspa_get), (plugin_init):
+       * ext/ladspa/gstladspa.h:
+          deactivate and remove dparams (libgstcontrol)
+
+2005-07-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/faad/gstfaad.c: (gst_faad_event):
+       Compile fixes.
+
+2005-07-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/amrnb/amrnbparse.c: (gst_amrnbparse_event),
+       (gst_amrnbparse_loop):
+       * ext/dv/gstdvdec.c: (gst_dvdec_handle_sink_event),
+       (gst_dvdec_handle_src_event), (gst_dvdec_decode_frame):
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_event),
+       (gst_id3_tag_sink_event), (gst_id3_tag_chain):
+       * ext/mad/gstmad.c: (gst_mad_src_query), (index_seek),
+       (normal_seek), (gst_mad_sink_event), (gst_mad_chain):
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/shout2/gstshout2.c: (gst_shout2send_event):
+       * ext/sidplay/gstsiddec.cc:
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event),
+       (gst_avi_demux_send_event), (gst_avi_demux_stream_header),
+       (gst_avi_demux_handle_seek), (gst_avi_demux_process_next_entry):
+       * gst/goom/gstgoom.c: (gst_goom_event):
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_sink_event),
+       (gst_rmdemux_chain), (gst_rmdemux_send_event),
+       (gst_rmdemux_add_stream):
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_handle_seek),
+       (gst_wavparse_stream_headers), (gst_wavparse_stream_data),
+       (gst_wavparse_loop), (gst_wavparse_srcpad_event):
+       Various event updates and cleanups.
+
+2005-07-25  Christian Schaller  <uraeus@gnome.org>
+
+
+       * gst-plugins.spec.in: add silence and videoflip
+       * gst/videofilter/Makefile.am: add missing header to noinst
+
+2005-07-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videofilter/Makefile.am:
+       * gst/videofilter/gstgamma.c: (gst_gamma_setup):
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_setup):
+       * gst/videofilter/gstvideofilter.c: (gst_videofilter_class_init),
+       (gst_videofilter_getcaps), (gst_videofilter_setcaps),
+       (gst_videofilter_init), (gst_videofilter_chain),
+       (gst_videofilter_set_property), (gst_videofilter_get_property),
+       (gst_videofilter_setup), (gst_videofilter_class_add_pad_templates):
+       * gst/videofilter/gstvideofilter.h:
+       * gst/videofilter/gstvideoflip.c: (gst_videoflip_init),
+       (gst_videoflip_set_property), (gst_videoflip_get_property),
+       (plugin_init), (gst_videoflip_setup), (gst_videoflip_planar411):
+         forward port from 0.9 and enable videoflip now that it works
+
+2005-07-23  Edward Hervey  <edward@fluendo.com>
+
+       * configure.ac:
+       * gst/silence/Makefile.am:
+       * gst/silence/gstsilence.h:
+       * gst/silence/gstsilence.c:
+       Ported silence to 0.9 using GstBaseSrc ... 180 lines :)
+
+2005-07-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_src_event):
+         First try forwarding events, makes seeking in AVI files with mp3
+         audio work again.
+
+2005-07-20  Andy Wingo  <wingo@pobox.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c (gst_mpeg2dec_sink_event): Signedness
+       fix.
+
+2005-07-20  Edward Hervey  <edward@fluendo.com>
+
+       * configure.ac: 
+       * gst/wavparse/gstwavparse.c: 
+       * gst/wavparse/gstwavparse.h:
+       * gst/wavparse/Makefile.am:
+       Ported wavparse to 0.9 . Playing, seeking and state changes work.
+       Could need more loving on the headers though.
+
+2005-07-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/gconf/Makefile.am:
+       * ext/gconf/gconf.c: (gst_bin_find_unconnected_pad),
+       (gst_gconf_render_bin_from_description),
+       (gst_gconf_get_default_video_sink):
+       * ext/gconf/gstgconfaudiosink.c: (gst_gconf_audio_sink_base_init),
+       (gst_gconf_audio_sink_class_init), (gst_gconf_audio_sink_dispose),
+       (cb_toggle_element), (gst_gconf_audio_sink_change_state):
+       * ext/gconf/gstgconfelements.h:
+       * ext/gconf/gstgconfvideosink.c: (gst_gconf_video_sink_base_init),
+       (gst_gconf_video_sink_class_init), (gst_gconf_video_sink_dispose),
+       (cb_toggle_element), (gst_gconf_video_sink_change_state):
+       * gst/autodetect/gstautoaudiosink.c:
+       (gst_auto_audio_sink_base_init), (gst_auto_audio_sink_class_init),
+       (gst_auto_audio_sink_detect), (gst_auto_audio_sink_change_state):
+       * gst/autodetect/gstautovideosink.c:
+       (gst_auto_video_sink_base_init), (gst_auto_video_sink_class_init),
+       (gst_auto_video_sink_find_best), (gst_auto_video_sink_detect):
+         Port auto/gconfsinks to 0.9. They actually appear to work here in
+         Totem as well, making them actually useful.
+
+2005-07-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/Makefile.am:
+         Fix uninstalled build.
+
+2005-07-19  Wim Taymans  <wim@fluendo.com>
+
+       * sys/oss/gstosssink.c: (gst_oss_sink_get_format),
+       (gst_oss_sink_open):
+       Parse spec to set correct oss values.
+
+2005-07-19  Edgard N. A. G. Lima <edgard.lima@indt.org.br>
+
+        * configure.ac
+       * ext/Makefile.am
+       * ext/amrnb/amrnbdec.c
+       * ext/amrnb/amrnbenc.c
+       * ext/amrnb/amrnbparse.c
+       * ext/faad/gstfaad.c
+       * ext/mpeg2dec/gstmpeg2dec.c
+       Ported amrnb, faad, mpeg2dec to 0.9
+
+2005-07-19  Andy Wingo  <wingo@pobox.com>
+
+       * ext/dv/gstdvdec.c (gst_dvdec_decode_video): Set the proper
+       framerate on the outbound buffer.
+
+       * ext/dv/gstdvdec.c (gst_dvdec_decode_video): Don't clobber
+       alloc_buffer's return value.
+       (gst_dvdec_decode_frame): Handle unlinked pads with grace and
+       agility.
+
+       * ext/dv/gstdvdec.h: Fix signedness error.
+
+2005-07-19  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_src_convert),
+       (gst_dvdec_sink_convert), (gst_dvdec_get_src_query_types),
+       (gst_dvdec_src_query), (gst_dvdec_get_sink_query_types),
+       (gst_dvdec_sink_query), (gst_dvdec_send_event),
+       (gst_dvdec_handle_sink_event), (gst_dvdec_handle_src_event),
+       (gst_dvdec_decode_audio), (gst_dvdec_decode_video),
+       (gst_dvdec_decode_frame), (gst_dvdec_flush), (gst_dvdec_chain):
+       * ext/dv/gstdvdec.h:
+       Implemented seeking in dvdec.
+
+2005-07-19  Andy Wingo  <wingo@pobox.com>
+
+       * ext/Makefile.am: Enable dvdev and raw1394src.
+
+2005-07-18  Andy Wingo  <wingo@pobox.com>
+
+       * configure.ac: Use AS_LIBTOOL_TAGS. Fix crap gettext commit
+       comment.
+
+2005-07-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_add_element),
+       (gst_rtspsrc_play):
+       Fix for core changes.
+
+2005-07-18  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_sink_event):
+         When returning to NORMAL state after reading tags,
+         pass on the discont event.
+
+2005-07-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_sink_event),
+       (gst_rmdemux_change_state), (gst_rmdemux_chain),
+       (gst_rmdemux_get_stream_by_id), (gst_rmdemux_send_event),
+       (gst_rmdemux_add_stream):
+       Send discont event before pushing first buffer.
+
+2005-07-17  Philippe Khalaf <burger@speedy.org>
+
+       * gst/fdsrc/gstfdsrc.c:
+       Removed #include <gst_private.h>
+
+2005-07-16  Philippe Khalaf <burger@speedy.org>
+
+       * gst/fdsrc/gstfdsrc.c:
+       * gst/fdsrc/gstfdsrc.h:
+       * gst/fdsrc/Makefile.am:
+       Moved fdsrc 0.9 port from gstreamer/gst/elements to here.
+
+2005-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstmad.c: (gst_mad_src_query), (gst_mad_sink_event),
+       (gst_mad_chain):
+       Add convert function for proper timestamp calculations.
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_send_event),
+       (gst_avi_demux_stream_header), (gst_avi_demux_handle_seek),
+       (gst_avi_demux_process_next_entry), (gst_avi_demux_loop):
+       Send out initial discont.
+
+2005-07-15  Wim Taymans  <wim@fluendo.com>
+
+       * gst/level/gstlevel.c: (gst_level_transform):
+       * gst/videobox/gstvideobox.c: (gst_video_box_class_init),
+       (gst_video_box_get_size), (gst_video_box_transform):
+       Port to new base class.
+
+2005-07-14  Wim Taymans  <wim@fluendo.com>
+
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_get_type),
+       (gst_dv1394src_class_init), (gst_dv1394src_init),
+       (gst_dv1394src_iso_receive), (gst_dv1394src_create),
+       (gst_dv1394src_change_state), (gst_dv1394src_query):
+       It's PUSH_SRC now.
+
+2005-07-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type),
+       (gst_udpsrc_class_init):
+         more autistic cleanliness in functions/names/defines
+
+
+2005-07-10  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_get_type),
+       (gst_aasink_class_init), (gst_aasink_init):
+       * ext/esd/esdsink.c: (gst_esdsink_get_type),
+       (gst_esdsink_class_init):
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_get_type),
+       (gst_cacasink_class_init), (gst_cacasink_init):
+       * ext/shout2/gstshout2.c: (gst_shout2send_get_type),
+       (gst_shout2send_class_init), (gst_shout2send_init):
+       * gst/udp/gstdynudpsink.c: (gst_dynudpsink_get_type),
+       (gst_dynudpsink_class_init):
+       * gst/udp/gstmultiudpsink.c: (gst_multiudpsink_get_type),
+       (gst_multiudpsink_class_init):
+         more macro splitting
+
+2005-07-08  Andy Wingo  <wingo@pobox.com>
+
+       * sys/oss/: Port from THREADED+wim's fixes.
+
+       * gst/avi/Makefile.am (libgstavi_la_CFLAGS): No gettext hacks, the
+       defines come from config.h.
+
+       * autogen.sh: Run autopoint, etc.
+
+       * Makefile.am (DIST_SUBDIRS, SUBDIRS): Go into po/.
+
+       * configure.ac: Add gettext stuff.
+
+2005-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videobox/gstvideobox.c: (gst_video_box_init),
+       (gst_video_box_transform_caps), (gst_video_box_set_caps):
+       Logic was reversed. Needs some  more fixes in the transform
+       function to include AYUV output.
+       Moved AYUV as prefered format.
+
+2005-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/dv/Makefile.am:
+       * ext/dv/gstdvdec.c: (gst_dvdec_class_init), (gst_dvdec_init),
+       (gst_dvdec_get_src_query_types), (gst_dvdec_src_query),
+       (gst_dvdec_handle_sink_event), (gst_dvdec_handle_src_event),
+       (gst_dvdec_video_getcaps), (gst_dvdec_video_setcaps),
+       (gst_dvdec_decode_audio), (gst_dvdec_decode_video),
+       (gst_dvdec_decode_frame), (gst_dvdec_chain),
+       (gst_dvdec_change_state), (gst_dvdec_set_property),
+       (gst_dvdec_get_property), (plugin_init):
+       * ext/dv/gstdvdec.h:
+       * ext/esd/esdsink.c: (gst_esdsink_class_init):
+       Ported DVdec to 0.9.
+       Parent of esdsink is GstAudioSink.
+
+2005-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/raw1394/Makefile.am:
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_get_type),
+       (gst_dv1394src_class_init), (gst_dv1394src_init),
+       (gst_dv1394src_iso_receive), (gst_dv1394src_create),
+       (gst_dv1394src_change_state), (gst_dv1394src_convert),
+       (gst_dv1394src_get_query_types), (gst_dv1394src_query):
+       * ext/raw1394/gstdv1394src.h:
+       Ported the 1394 source to 0.9.
+
+2005-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_get_query_types):
+       * ext/mad/gstmad.c: (gst_mad_get_query_types), (gst_mad_src_query):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_get_src_query_types):
+       Remove deprecated/unsed code.
+
+2005-07-06  Edward Hervey  <edward@fluendo.com>
+
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_init): 
+       GST_BASESRC --> GST_BASE_SRC
+
+2005-07-05  Andy Wingo  <wingo@pobox.com>
+
+       * gst/oneton: Removed (replaced by deinterleave).
+
+       * gst/adder:
+       * gst/audioconvert:
+       * gst/audiorate:
+       * gst/audioscale:
+       * gst/ffmpegcolorspace:
+       * gst/playback:
+       * gst/sine:
+       * gst/subparse:
+       * gst/tags:
+       * gst/tcp:
+       * gst/videoscale:
+       * gst/volume: Removed dirs that are now in gst-plugins-base.
+
+2005-07-05  Edward Hervey  <edward@fluendo.com>
+
+       * configure.ac: (GST_PLUGINS_ALL): 
+       videofilter must be compiled first, since other plugins depend ont it.
+
+2005-07-05  Andy Wingo  <wingo@pobox.com>
+
+       * Way, way, way too many files:
+       Remove crack comment from the 2000 era.
+
+2005-07-05  Andy Wingo  <wingo@pobox.com>
+
+       * gst/videobox/gstvideobox.c: Clean up, port to 0.9, use
+       BaseTransform.
+
+       * gst/videobox/Makefile.am: Link to base libs, include
+       plugins-base cflags, dist the README.
+
+       * configure.ac (GST_PLUGIN_ALL, AC_CONFIG_FILES): Add videobox to
+       the build.
+
+2005-07-04  Wim Taymans  <wim@fluendo.com>
+
+       * gst/realmedia/rmdemux.c:
+       I don't think that piece of changelog should go there.
+
+2005-07-04  Andy Wingo  <wingo@pobox.com>
+
+       * examples/level/:
+       * examples/level/Makefile.am:
+       * examples/level/README:
+       * examples/level/demo.c:
+       * examples/level/plot.c: Examples moved out of the source dir. Not
+       updated tho.
+
+       * configure.ac: Add level to the build.
+
+       * gst/level/Makefile.am:
+       * gst/level/gstlevel.h:
+       * gst/level/gstlevel.c: Cleaned up, ported to 0.9.
+
+       * ext/aalib/gstaasink.c (gst_aasink_fixate): Update for newer
+       fixate prototype.
+
+2005-07-03  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c (gst_rmdemux_add_stream),
+       (gst_rmdemux_src_getcaps), (gst_rmdemux_chain): 
+       Added getcaps function no_more_pads call
+
+2005-07-01  Philippe Khalaf <burger@speedy.org>
+       * gst/udp/Makefile.am:
+       * gst/udp/gstudp.c:
+       * gst/udp/gstdynudpsink.c: (new)
+       * gst/udp/gstdynudpsink.h: (new)
+         Added new element (udpdynsink) that receives GstNetBuffers and sends the
+         udp packets to the source given in the buffer. It's used by rtpsession
+         element for now.
+       * gst/udp/gstudpsrc.c:
+         Fixed memory leak.
+
+2005-07-01  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * configure.ac:
+       * ext/mad/Makefile.am:
+       * sys/oss/Makefile.am:
+       Roll gstreamer-interfaces-0.9.pc into gstreamer-plugins-base-0.9.pc
+
+2005-07-01  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/libcaca/Makefile.am:
+       * ext/mad/Makefile.am:
+       * gst/effectv/Makefile.am:
+       * gst/udp/Makefile.am:
+         Replace GST_PLUGINS_LIBS_* with GST_PLUGINS_BASE_*
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_query),
+       (gst_id3_tag_src_event), (gst_id3_tag_sink_event),
+       (gst_id3_tag_chain), (plugin_init):
+       * ext/mad/gstmad.c: (gst_mad_src_query), (gst_mad_chain):
+         Signedness warning fix, use gst_pad_get_peer instead of GST_PAD_PEER
+         in querying and event handling, because we're not holding the pad
+         lock and the peer may disappear.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_parse_subindex),
+       (gst_avi_demux_parse_index), (gst_avi_demux_massage_index):
+         Signedness warning fixes.
+
+       * gst/videofilter/gstvideotemplate.c: (plugin_init):
+         Remove gst_library_load
+
+2005-06-30  Edward Hervey  <edward@fluendo.com>
+
+       * gst/avi/Makefile.am: (libgstavi_la_LIBADD):
+       Added linking to libgstriff-0.9
+       
+       * ext/mad/gstmad.c: (gst_mad_src_query): 
+       check the format of the upstream query and return query if it's the
+       same format as the requested one.
+
+2005-06-30  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query):
+         Compiler pains.
+
+2005-06-30  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * gst/avi/Makefile.am:
+       * gst/avi/gstavi.c: (plugin_init):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_get_type),
+       (gst_avi_demux_class_init), (gst_avi_demux_init),
+       (gst_avi_demux_reset), (gst_avi_demux_index_next),
+       (gst_avi_demux_index_entry_for_time),
+       (gst_avi_demux_index_entry_for_byte),
+       (gst_avi_demux_index_entry_for_frame), (gst_avi_demux_src_convert),
+       (gst_avi_demux_handle_src_query), (gst_avi_demux_handle_src_event),
+       (gst_avi_demux_parse_file_header), (gst_avi_demux_stream_init),
+       (gst_avi_demux_parse_avih), (gst_avi_demux_parse_superindex),
+       (gst_avi_demux_parse_subindex), (gst_avi_demux_read_subindexes),
+       (gst_avi_demux_parse_stream), (gst_avi_demux_parse_odml),
+       (gst_avi_demux_parse_index), (gst_avi_demux_stream_index),
+       (gst_avi_demux_stream_scan), (gst_avi_demux_massage_index),
+       (gst_avi_demux_stream_header), (gst_avi_demux_handle_seek),
+       (gst_avi_demux_process_next_entry), (gst_avi_demux_stream_data),
+       (gst_avi_demux_loop), (gst_avi_demux_sink_activate),
+       (gst_avi_demux_sink_activate_pull):
+       * gst/avi/gstavidemux.h:
+         Port from -THREADED to HEAD, and fix for latest API changes of
+         the day. Keep avimux dead for now.
+
+2005-06-29  Wim Taymans  <wim@fluendo.com>
+
+       * ext/shout2/gstshout2.c: (gst_shout2send_render):
+       Fix build.
+
+2005-06-29  Andy Wingo  <wingo@pobox.com>
+
+       * gst/videofilter/gstvideoexample.c: Removed gst_library_load, I
+       think. Whatever this plugin actually does, that I don't know.
+
+2005-06-29  Andy Wingo  <wingo@pobox.com>
+
+       * ext/mad/gstid3tag.c (gst_id3_tag_get_event_masks): Reschmoove.
+
+       * ext/mad/gstmad.c (gst_mad_get_event_masks): Remove.
+       (gst_mad_chain): Appease GCC.
+
+       * ext/libcaca/gstcacasink.c (gst_cacasink_setcaps): Signedness.
+
+       * ext/aalib/gstaasink.c (gst_aasink_fixate): Unref caps, not free.
+       (gst_aasink_scale): Signedness.
+
+       * gst/udp/gstudpsink.c (gst_udpsink_get_type): Actually add the
+       URI handler.
+
+       * gst/udp/gstudpsrc.c (gst_udpsrc_start):
+       (gst_udpsrc_create): Signedness.
+
+       * gst/rtsp/sdpmessage.c (sdp_message_parse_buffer): Thanks
+       compiler!
+       (sdp_parse_line): Signedness fix.
+
+       * configure.ac (GST_CFLAGS): GCC strikes back!!! Let the build
+       breakage ensue!!!
+
+       * gst/rtsp/gstrtspsrc.c (gst_rtspsrc_loop, gst_rtspsrc_open):
+       Signedness, unused var fixes.
+       (gst_rtspsrc_close): Unused?
+
+       * gst/realmedia/rmdemux.c (re_hexdump_bytes): Unused.
+
+       * gst/law/mulaw-encode.c (gst_mulawenc_chain): Signeness fix.
+
+       * gst/law/alaw-encode.c (alawenc_getcaps): Remove unneeded
+       declarations. Typo (probably crasher) fix.
+       
+       * gst/law/mulaw-encode.c (mulawdec_getcaps): 
+       * gst/law/mulaw-encode.c (mulawenc_getcaps): 
+       * gst/law/alaw-decode.c (alawdec_getcaps): Same crasher fix.
+
+       * gst/goom/gstgoom.c (gst_goom_init): Hook up the event function.
+
+       * gst/effectv/gstwarp.c (gst_warptv_setup): Signedness fix.
+
+       * gst/effectv/gstdice.c (gst_dicetv_draw): Um, deferencing
+       uninitialized pointer not good.
+
+       * gst/videofilter/gstvideoexample.c (plugin_init): 
+       * gst/videofilter/Makefile.am (libgstvideoexample_la_LIBADD): Link
+       to libgstvideofilter instead of gst_library_load.
+
+       * gst/alpha/gstalpha.c (gst_alpha_chroma_key_i420) 
+       (gst_alpha_chroma_key_ayuv): Signedness fixen.
+
+2005-06-29  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_create_stream),
+       (gst_rtspsrc_add_element), (gst_rtspsrc_set_state),
+       (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_open), (gst_rtspsrc_play),
+       (gst_rtspsrc_change_state):
+       Fix case where outpad could not be decided.
+
+2005-06-29  Andy Wingo  <wingo@pobox.com>
+
+       * ext/Makefile.am (MAD_DIR): Add mad to the build.
+
+2005-06-28  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_link):
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_init):
+       Fix old RPAD macro.
+       basesrc -> base_src
+
+2005-06-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_link):
+       * ext/mad/gstmad.c: (gst_mad_chain):
+       RPAD_ -> PAD
+       Fix args in bufferalloc function call.
+       Makes the mad plugin compile again
+
+2005-06-27  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst/realmedia/rmdemux.c: Rewrote to use gstadapter. Also parses
+       audio and video header packets for known properties.
+
+2005-06-23  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_create_stream),
+       (gst_rtspsrc_add_element), (gst_rtspsrc_set_state),
+       (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_open), (gst_rtspsrc_play),
+       (gst_rtspsrc_change_state):
+       * gst/rtsp/rtspurl.c: (rtsp_url_parse):
+       Make rtspsrc a live source.
+       Don't try to parse NULL urls.
+
+2005-06-23  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_init):
+       Make udpsrc a live source.
+
+2005-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/Makefile.am:
+       Use versioned net lib.
+
+2005-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/Makefile.am:
+       Fix hack in makefile.
+
+2005-06-02  Andy Wingo  <wingo@pobox.com>
+
+       * ext/mad/gstid3tag.c: Finish porting to 0.9: no more gstdata,
+       check for link functions before calling them, give
+       gst_message_new_tag its own copy of the tag list, set the parser
+       state before sending the event (because in 0.9 events are
+       processed immediately), casting fixes.
+
+       * ext/mad/Makefile.am (libgstmad_la_LDFLAGS): Link with
+       gsttagedit.
+
+2005-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/Makefile.am:
+       * gst/udp/gstmultiudpsink.c: (gst_multiudpsink_get_type),
+       (gst_multiudpsink_base_init), (gst_multiudpsink_class_init),
+       (gst_multiudpsink_init), (gst_multiudpsink_finalize),
+       (gst_multiudpsink_get_times), (gst_multiudpsink_render),
+       (gst_multiudpsink_set_property), (gst_multiudpsink_init_send),
+       (gst_multiudpsink_add), (client_compare), (free_client),
+       (gst_multiudpsink_remove), (gst_multiudpsink_clear),
+       (gst_multiudpsink_get_stats):
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type),
+       (gst_udpsrc_base_init), (gst_udpsrc_class_init),
+       (gst_udpsrc_create), (gst_udpsrc_set_uri), (gst_udpsrc_start),
+       (gst_udpsrc_unlock), (gst_udpsrc_stop):
+       Use NetBuffer and small cleanups.
+       Implement client removal in multiudpsink.
+
+2005-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/README:
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_create_stream),
+       (gst_rtspsrc_add_element), (gst_rtspsrc_set_state),
+       (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_open), (gst_rtspsrc_play),
+       (gst_rtspsrc_change_state):
+       * gst/rtsp/rtsptransport.c: (rtsp_transport_new),
+       (rtsp_transport_init), (parse_mode), (parse_range),
+       (rtsp_transport_parse), (rtsp_transport_free):
+       RTSP cleanups.
+
+2005-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/effectv/gstquark.c: (gst_quarktv_chain):
+       * gst/goom/gstgoom.c: (gst_goom_chain):
+       * gst/videobox/Makefile.am:
+       * gst/videobox/gstvideobox.c: (gst_video_box_class_init),
+       (gst_video_box_init), (gst_video_box_sink_setcaps),
+       (gst_video_box_chain):
+       * gst/videofilter/gstvideofilter.c: (gst_videofilter_chain):
+       * gst/videorate/gstvideorate.c: (gst_videorate_class_init),
+       (gst_videorate_getcaps), (gst_videorate_setcaps),
+       (gst_videorate_init), (gst_videorate_event), (gst_videorate_chain),
+       (gst_videorate_change_state):
+       Bufferalloc changes.
+
+2005-05-25  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstmad.c: (gst_mad_chain), (gst_mad_change_state):
+       * ext/sidplay/gstsiddec.cc:
+       * gst/alpha/gstalpha.c: (gst_alpha_chain):
+       * gst/goom/gstgoom.c: (gst_goom_chain):
+       No need to take the lock anymore,  core already did
+       that before calling us.
+
+2005-05-25  Wim Taymans  <wim@fluendo.com>
+
+       * ext/amrnb/amrnbdec.c: (gst_amrnbdec_init), (gst_amrnbdec_chain),
+       (gst_amrnbdec_state_change):
+       * ext/amrnb/amrnbenc.c: (gst_amrnbenc_base_init),
+       (gst_amrnbenc_finalize), (gst_amrnbenc_chain),
+       (gst_amrnbenc_state_change):
+       * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+       (gst_amrnbparse_query), (gst_amrnbparse_chain),
+       (gst_amrnbparse_read_header), (gst_amrnbparse_loop),
+       (gst_amrnbparse_sink_activate), (gst_amrnbparse_state_change):
+       Core already took the lock.
+
+2005-05-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/esd/Makefile.am:
+         Disable tcp elements and esdmon (they don't compile).
+
+2005-05-19  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * Makefile.am:
+       * ext/Makefile.am:
+       * sys/Makefile.am:
+         Make my automake version shut up about undefined variables
+       * gst/goom/gstgoom.c:
+         GstAdapter moved to base objects. 
+
+2005-05-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/amrnb/Makefile.am:
+       * ext/amrnb/amrnb.c: (plugin_init):
+       * ext/amrnb/amrnbdec.c: (gst_amrnbdec_init),
+       (gst_amrnbdec_setcaps), (gst_amrnbdec_chain),
+       (gst_amrnbdec_state_change):
+       * ext/amrnb/amrnbdec.h:
+       * ext/amrnb/amrnbenc.c: (gst_amrnbenc_get_type),
+       (gst_amrnbenc_base_init), (gst_amrnbenc_class_init),
+       (gst_amrnbenc_init), (gst_amrnbenc_finalize),
+       (gst_amrnbenc_setcaps), (gst_amrnbenc_chain),
+       (gst_amrnbenc_state_change):
+       * ext/amrnb/amrnbenc.h:
+       * ext/amrnb/amrnbparse.c: (gst_amrnbparse_init),
+       (gst_amrnbparse_query), (gst_amrnbparse_event),
+       (gst_amrnbparse_chain), (gst_amrnbparse_read_header),
+       (gst_amrnbparse_loop), (gst_amrnbparse_sink_activate),
+       (gst_amrnbparse_state_change):
+       * ext/amrnb/amrnbparse.h:
+       Ported AMR decoder/parse.
+       Added AMR encoder.
+
+2005-05-18  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * gst/goom/Makefile.am:
+       * gst/goom/gstgoom.c: (gst_goom_init), (gst_goom_sink_setcaps),
+       (gst_goom_src_setcaps), (gst_goom_src_negotiate), (gst_goom_event),
+       (gst_goom_chain), (gst_goom_change_state), (plugin_init):
+       Ported goom.
+       Added goom and alpha to build.
+
+2005-05-17  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * gst/alpha/Makefile.am:
+       * gst/alpha/gstalpha.c: (gst_alpha_class_init), (gst_alpha_init),
+       (gst_alpha_sink_setcaps), (gst_alpha_chain):
+       Ported alpha,  remove alphacolor as functionality is in
+       ffmpegcolorspace.
+
+2005-05-17  Wim Taymans  <wim@fluendo.com>
+
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_setcaps),
+       (gst_cacasink_render), (gst_cacasink_open), (gst_cacasink_close),
+       (gst_cacasink_change_state):
+       * ext/libcaca/gstcacasink.h:
+       Cleanups.
+
+2005-05-15  David Schleef  <ds@schleef.org>
+
+       Move core plugins out of core.  I don't mind fdsrc/fdsink
+       going back into the core; they were just disabled there, so
+       I moved them.  Some of this stuff could (should) be deleted.
+       * gst/oldcore/Makefile.am:
+       * gst/oldcore/gstaggregator.c:
+       * gst/oldcore/gstaggregator.h:
+       * gst/oldcore/gstelements.c:
+       * gst/oldcore/gstfdsink.c:
+       * gst/oldcore/gstfdsink.h:
+       * gst/oldcore/gstfdsrc.c:
+       * gst/oldcore/gstfdsrc.h:
+       * gst/oldcore/gstmd5sink.c:
+       * gst/oldcore/gstmd5sink.h:
+       * gst/oldcore/gstmultifilesrc.c:
+       * gst/oldcore/gstmultifilesrc.h:
+       * gst/oldcore/gstpipefilter.c:
+       * gst/oldcore/gstpipefilter.h:
+       * gst/oldcore/gstshaper.c:
+       * gst/oldcore/gstshaper.h:
+       * gst/oldcore/gststatistics.c:
+       * gst/oldcore/gststatistics.h:
+
+2005-05-13  Christian Schaller  <uraeus@gnome.org>
+
+       * ext/Makefile.am: dist esd directory
+       * gst-plugins.spec.in: add rtp plugins and esd plugin
+       * gst/effectv/Makefile.am: fix videofilter linking
+       * gst/rtp/Makefile.am: add missing headers 
+       * gst/rtsp/Makefile.am: add missing headers
+
+2005-05-12  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/sidplay/gstsiddec.cc:
+       Add working plugins to build.
+       Make sidplay compile again.
+
+2005-05-12  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_query):
+       * ext/mad/gstmad.c: (gst_mad_chain):
+       Fix mad and id3tag compilation again.
+
+2005-05-12  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/.cvsignore:
+       * gst/udp/Makefile.am:
+       * gst/udp/gstmultiudpsink.c: (gst_multiudpsink_get_type),
+       (gst_multiudpsink_base_init), (gst_multiudpsink_class_init),
+       (gst_multiudpsink_init), (gst_multiudpsink_finalize),
+       (gst_multiudpsink_get_times), (gst_multiudpsink_render),
+       (gst_multiudpsink_set_property), (gst_multiudpsink_get_property),
+       (gst_multiudpsink_init_send), (gst_multiudpsink_close),
+       (gst_multiudpsink_add), (gst_multiudpsink_remove),
+       (gst_multiudpsink_clear), (gst_multiudpsink_get_stats),
+       (gst_multiudpsink_change_state):
+       * gst/udp/gstmultiudpsink.h:
+       * gst/udp/gstudp-marshal.list:
+       * gst/udp/gstudp.c: (plugin_init):
+       * gst/udp/gstudp.h:
+       * gst/udp/gstudpsink.c: (gst_udpsink_get_type),
+       (gst_udpsink_base_init), (gst_udpsink_class_init),
+       (gst_udpsink_init), (gst_udpsink_set_uri),
+       (gst_udpsink_set_property), (gst_udpsink_get_property),
+       (gst_udpsink_uri_get_type), (gst_udpsink_uri_get_protocols),
+       (gst_udpsink_uri_get_uri), (gst_udpsink_uri_set_uri),
+       (gst_udpsink_uri_handler_init):
+       * gst/udp/gstudpsink.h:
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type),
+       (gst_udpsrc_base_init), (gst_udpsrc_class_init),
+       (gst_udpsrc_create), (gst_udpsrc_set_uri), (gst_udpsrc_start),
+       (gst_udpsrc_unlock), (gst_udpsrc_stop):
+       * gst/udp/gstudpsrc.h:
+       Added multifdsink to send UDP to multiple addresses.
+       Cleaned up UDP source/sink elements some more.
+       Make UDP sink extends from multiudpsink.
+
+2005-05-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/mad/gstmad.c: (gst_mad_src_query), (gst_mad_sink_event):
+         Make queries actually work (update core first).
+
+2005-05-12  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/README:
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get_type),
+       (gst_tcpclientsrc_base_init), (gst_tcpclientsrc_class_init),
+       (gst_tcpclientsrc_init), (gst_tcpclientsrc_getcaps),
+       (gst_tcpclientsrc_stop), (gst_tcpclientsrc_eos),
+       (gst_tcpclientsrc_create), (gst_tcpclientsrc_start):
+       * gst/tcp/gsttcpclientsrc.h:
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_get_type),
+       (gst_tcpserversrc_base_init), (gst_tcpserversrc_class_init),
+       (gst_tcpserversrc_init), (gst_tcpserversrc_create),
+       (gst_tcpserversrc_start), (gst_tcpserversrc_stop):
+       * gst/tcp/gsttcpserversrc.h:
+       * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_get_type),
+       (gst_tcpsrc_base_init), (gst_tcpsrc_class_init), (gst_tcpsrc_init),
+       (gst_tcpsrc_create), (gst_tcpsrc_start), (gst_tcpsrc_stop):
+       * gst/tcp/gsttcpsrc.h:
+       * gst/udp/gstudpsink.c: (gst_udpsink_base_init),
+       (gst_udpsink_init), (gst_udpsink_get_times), (gst_udpsink_render),
+       (gst_udpsink_set_property), (gst_udpsink_get_property),
+       (gst_udpsink_change_state):
+       * gst/udp/gstudpsink.h:
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type),
+       (gst_udpsrc_base_init), (gst_udpsrc_class_init), (gst_udpsrc_init),
+       (gst_udpsrc_create), (gst_udpsrc_set_uri), (gst_udpsrc_start),
+       (gst_udpsrc_stop):
+       * gst/udp/gstudpsrc.h:
+       Make UDP and TCP elements use PushSrc.
+
+
+2005-05-11  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_src_query),
+       (index_seek), (normal_seek), (gst_mad_sink_event):
+         Port to new query API and replace gst_pad_convert()
+         and gst_pad_get_formats() usage. gstid3tag looks like
+         it needs some more love before it will work again, if 
+         not a rewrite.
+
+2005-05-12  Zeeshan Ali  <zeenix@gmail.com>
+
+       * gst/effectv/Makefile.am:
+       Fixed the effectv build again.
+
+2005-05-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_get_type),
+       (gst_multifdsink_base_init), (gst_multifdsink_class_init),
+       (gst_multifdsink_init), (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_render),
+       (gst_multifdsink_change_state):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_get_type),
+       (gst_tcpclientsink_base_init), (gst_tcpclientsink_class_init),
+       (gst_tcpclientsink_init), (gst_tcpclientsink_render),
+       (gst_tcpclientsink_set_property), (gst_tcpclientsink_get_property),
+       (gst_tcpclientsink_change_state):
+       * gst/tcp/gsttcpclientsink.h:
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_class_init),
+       (gst_tcpclientsrc_init_receive):
+       * gst/tcp/gsttcpplugin.c: (plugin_init):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init):
+       * gst/tcp/gsttcpserversink.h:
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_class_init):
+       * gst/tcp/gsttcpsink.c: (gst_tcpsink_get_type),
+       (gst_tcpsink_base_init), (gst_tcpsink_class_init),
+       (gst_tcpsink_setcaps), (gst_tcpsink_init), (gst_tcpsink_get_times),
+       (gst_tcpsink_render), (gst_tcpsink_set_property),
+       (gst_tcpsink_get_property):
+       * gst/tcp/gsttcpsink.h:
+       * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_class_init), (gst_tcpsrc_get):
+       Ported over some sink elements.
+       Sources not ported yet as they require a PushSource base class.
+
+2005-05-11  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/effectv/Makefile.am:
+       * gst/videofilter/Makefile.am:
+         Turn videofilter into a library (private for now)
+
+2005-05-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/README:
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_create_stream),
+       (gst_rtspsrc_add_element), (gst_rtspsrc_set_state),
+       (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_open), (gst_rtspsrc_play):
+       * gst/rtsp/rtsp.h:
+       * gst/rtsp/rtspconnection.c: (rtsp_connection_create),
+       (rtsp_connection_send), (read_line), (parse_request_line),
+       (parse_line), (read_body), (rtsp_connection_receive),
+       (rtsp_connection_free):
+       * gst/rtsp/rtspconnection.h:
+       * gst/rtsp/rtspdefs.c: (rtsp_find_method):
+       * gst/rtsp/rtspdefs.h:
+       * gst/rtsp/rtspmessage.c: (rtsp_message_set_body),
+       (rtsp_message_take_body):
+       * gst/rtsp/rtspmessage.h:
+       * gst/rtsp/rtspstream.h:
+       * gst/rtsp/sdpmessage.c: (sdp_parse_line):
+       Added README
+       Some cleanups.
+
+2005-05-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_init),
+       (gst_rtspsrc_create_stream), (gst_rtspsrc_add_element),
+       (gst_rtspsrc_set_state), (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_open), (gst_rtspsrc_close),
+       (gst_rtspsrc_play), (gst_rtspsrc_change_state):
+       * gst/rtsp/gstrtspsrc.h:
+       Setup UDP sources correctly, receives raw data from RTSP
+       compliant servers now.
+
+2005-05-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtsp/.cvsignore:
+       * gst/rtsp/Makefile.am:
+       * gst/rtsp/gstrtsp.c: (plugin_init):
+       * gst/rtsp/gstrtsp.h:
+       * gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type),
+       (gst_rtspsrc_get_type), (gst_rtspsrc_base_init),
+       (gst_rtspsrc_class_init), (gst_rtspsrc_init),
+       (gst_rtspsrc_set_property), (gst_rtspsrc_get_property),
+       (gst_rtspsrc_create_stream), (rtspsrc_add_element),
+       (gst_rtspsrc_stream_setup_rtp),
+       (gst_rtspsrc_stream_configure_transport), (find_stream),
+       (gst_rtspsrc_loop), (gst_rtspsrc_send), (gst_rtspsrc_open),
+       (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_pause),
+       (gst_rtspsrc_activate), (gst_rtspsrc_change_state):
+       * gst/rtsp/gstrtspsrc.h:
+       * gst/rtsp/rtsp.h:
+       * gst/rtsp/rtspconnection.c: (rtsp_connection_open),
+       (rtsp_connection_create), (append_header), (rtsp_connection_send),
+       (read_line), (read_string), (read_key), (parse_response_status),
+       (parse_line), (read_body), (rtsp_connection_receive),
+       (rtsp_connection_close):
+       * gst/rtsp/rtspconnection.h:
+       * gst/rtsp/rtspdefs.c: (rtsp_init_status), (rtsp_method_as_text),
+       (rtsp_header_as_text), (rtsp_status_as_text),
+       (rtsp_status_to_string), (rtsp_find_header_field):
+       * gst/rtsp/rtspdefs.h:
+       * gst/rtsp/rtspmessage.c: (rtsp_message_new_request),
+       (rtsp_message_init_request), (rtsp_message_new_response),
+       (rtsp_message_init_response), (rtsp_message_init_data),
+       (rtsp_message_add_header), (rtsp_message_remove_header),
+       (rtsp_message_get_header), (rtsp_message_get_header_copy),
+       (rtsp_message_set_body), (rtsp_message_set_body_copy),
+       (rtsp_message_get_body), (rtsp_message_get_body_copy), (dump_mem),
+       (dump_key_value), (rtsp_message_dump):
+       * gst/rtsp/rtspmessage.h:
+       * gst/rtsp/rtspstream.h:
+       * gst/rtsp/rtsptransport.c: (rtsp_transport_new),
+       (rtsp_transport_init), (parse_mode), (parse_range),
+       (rtsp_transport_parse), (rtsp_transport_free):
+       * gst/rtsp/rtsptransport.h:
+       * gst/rtsp/rtspurl.c: (rtsp_url_parse), (rtsp_url_free):
+       * gst/rtsp/rtspurl.h:
+       * gst/rtsp/sdp.h:
+       * gst/rtsp/sdpmessage.c: (sdp_message_new), (sdp_message_init),
+       (sdp_message_clean), (sdp_message_free), (sdp_media_new),
+       (sdp_media_init), (sdp_message_set_origin),
+       (sdp_message_get_origin), (sdp_message_set_connection),
+       (sdp_message_get_connection), (sdp_message_add_bandwidth),
+       (sdp_message_add_time), (sdp_message_add_zone),
+       (sdp_message_set_key), (sdp_message_get_key),
+       (sdp_message_get_attribute_val), (sdp_message_add_attribute),
+       (sdp_message_add_media), (sdp_media_add_attribute),
+       (sdp_media_add_bandwidth), (sdp_media_add_format),
+       (sdp_media_get_attribute_val), (read_string), (read_string_del),
+       (sdp_parse_line), (sdp_message_parse_buffer), (print_media),
+       (sdp_message_dump):
+       * gst/rtsp/sdpmessage.h:
+       * gst/rtsp/test.c: (main):
+       Ported to 0.9.
+       Set up transports, init UDP ports, init RTP session managers.
+
+2005-05-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/rtp/Makefile.am:
+       * gst/rtp/gstrtp.c: (plugin_init):
+       * gst/rtp/gstrtpdec.c: (gst_rtpdec_get_type),
+       (gst_rtpdec_class_init), (gst_rtpdec_init), (gst_rtpdec_chain_rtp),
+       (gst_rtpdec_chain_rtcp), (gst_rtpdec_set_property),
+       (gst_rtpdec_get_property), (gst_rtpdec_change_state),
+       (gst_rtpdec_plugin_init):
+       * gst/rtp/gstrtpdec.h:
+       * gst/udp/gstudpsink.c: (gst_udpsink_base_init),
+       (gst_udpsink_get_times), (gst_udpsink_render),
+       (gst_udpsink_change_state):
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type),
+       (gst_udpsrc_base_init), (gst_udpsrc_class_init), (gst_udpsrc_init),
+       (gst_udpsrc_loop), (gst_udpsrc_set_uri), (gst_udpsrc_set_property),
+       (gst_udpsrc_get_property), (gst_udpsrc_init_receive),
+       (gst_udpsrc_activate), (gst_udpsrc_change_state),
+       (gst_udpsrc_uri_get_type), (gst_udpsrc_uri_get_protocols),
+       (gst_udpsrc_uri_get_uri), (gst_udpsrc_uri_set_uri),
+       (gst_udpsrc_uri_handler_init):
+       * gst/udp/gstudpsrc.h:
+       UDP fixes, added uri handler.
+       Added rtpdec that will manage the RTP session in the future.
+
+2005-05-10  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       * PORTED_09:
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/esd/Makefile.am:
+       * ext/esd/esdsink.c: (gst_esdsink_get_type),
+       (gst_esdsink_class_init), (gst_esdsink_init),
+       (gst_esdsink_dispose), (gst_esdsink_change_state),
+       (gst_caps_set_each), (gst_esdsink_getcaps), (gst_esdsink_open),
+       (gst_esdsink_close), (gst_esdsink_write), (gst_esdsink_delay),
+       (gst_esdsink_reset), (gst_esdsink_set_property),
+       (gst_esdsink_get_property), (gst_esdsink_factory_init):
+       * ext/esd/esdsink.h:
+       * ext/esd/gstesd.c: (plugin_init):
+       Ported esdsink plugin
+
+2005-05-10  Wim Taymans  <wim@fluendo.com>
+
+       * gst/udp/Makefile.am:
+       * gst/udp/gstudpsink.c: (gst_udpsink_get_type),
+       (gst_udpsink_base_init), (gst_udpsink_class_init),
+       (gst_udpsink_init), (gst_udpsink_get_times), (gst_udpsink_render),
+       (gst_udpsink_set_property), (gst_udpsink_get_property),
+       (gst_udpsink_init_send), (gst_udpsink_close),
+       (gst_udpsink_change_state):
+       * gst/udp/gstudpsink.h:
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_base_init),
+       (gst_udpsrc_class_init), (gst_udpsrc_init), (gst_udpsrc_loop),
+       (gst_udpsrc_set_property), (gst_udpsrc_get_property),
+       (gst_udpsrc_init_receive), (gst_udpsrc_close),
+       (gst_udpsrc_activate), (gst_udpsrc_change_state):
+       * gst/udp/gstudpsrc.h:
+       Ported udp src/sink.
+
+2005-05-09  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * PORTED_09:
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/shout2/Makefile.am:
+       * ext/shout2/gstshout2.c: (gst_shout2send_get_type),
+       (gst_shout2send_base_init), (gst_shout2send_class_init),
+       (gst_shout2send_init), (gst_shout2send_event),
+       (gst_shout2send_render), (gst_shout2send_set_property),
+       (gst_shout2send_get_property), (gst_shout2send_setcaps),
+       (gst_shout2send_change_state):
+       * ext/shout2/gstshout2.h:
+
+       Port shout2 plugin
+
+2005-05-08  Zeeshan Ali   <zeenix@gmail.com>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/libcaca/Makefile.am:
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_get_type),
+       (gst_cacasink_class_init), (gst_cacasink_get_times),
+       (gst_cacasink_setcaps), (gst_cacasink_init), (gst_cacasink_render),
+       (plugin_init):
+       * ext/libcaca/gstcacasink.h:
+       Ported the libcaca plugin.
+
+2005-05-08  Zeeshan Ali  <zeenix@gmail.com>
+
+       * configure.ac:
+       * ext/mad/Makefile.am:
+       * effectv/Makefile.am:
+       Fixed a few things to enable the mad and effectv to be able to find the
+       headers in the gst-plugins-base/gst-libs and to link against the libs
+       in there.
+
+2005-05-07  Zeeshan Ali  <zeenix@gmail.com>
+
+       * configure.ac:
+       Fixed the build by fixing a small mistake of Wim.
+       
+2005-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/aalib/Makefile.am:
+       * ext/aalib/gstaasink.c: (gst_aasink_get_type),
+       (gst_aasink_class_init), (gst_aasink_fixate), (gst_aasink_setcaps),
+       (gst_aasink_init), (gst_aasink_get_times), (gst_aasink_render),
+       (gst_aasink_set_property), (gst_aasink_get_property),
+       (gst_aasink_open), (gst_aasink_close), (gst_aasink_change_state):
+       * ext/aalib/gstaasink.h:
+       * gst/smpte/Makefile.am:
+       * gst/smpte/gstsmpte.c: (gst_smpte_setcaps), (gst_smpte_init),
+       (gst_smpte_collected):
+       * gst/smpte/gstsmpte.h:
+       Ported 2 more plugins. usgly hack in the Makefile.am though, I'm
+       sure someone will fix it.
+
+2005-05-06  Christian Schaller  <uraeus@gnome.org>
+
+       * configure.ac: add sidplay
+       * ext/Makefile.am: add sidplay
+       * ext/sidplay/Makefile.am: add GST_PLUGINS_CFLAGS
+       * ext/sidplay/gstsiddec.cc: remove bytestream.h
+
+2005-05-06  Christian Schaller  <uraeus@gnome.org>
+
+       * configure.ac: add gst-plugins-libs
+
+2005-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * ext/sidplay/gstsiddec.cc:
+       * ext/sidplay/gstsiddec.h:
+       Ported sidplay.
+
+2005-05-06  Christian Schaller  <uraeus@gnome.org>
+
+       * configure.ac: 
+       * ext/mad/Makefile.am: add linking of gstinterfaces
+       * ext/mad/gstid3tag.c: (plugin_init): remove library_load
+       * gst-plugins.spec.in: 
+       * gst/effectv/Makefile.am: link to libgstvideofilter
+       * gst/effectv/gsteffectv.c: (plugin_init): same as for mad
+       * gst/videofilter/Makefile.am: make sure videoflip is not built
+
+2005-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/law/alaw-decode.c: (alawdec_getcaps), (alawdec_setcaps),
+       (gst_alawdec_init), (gst_alawdec_chain):
+       * gst/law/alaw-encode.c: (alawenc_getcaps), (alawenc_setcaps),
+       (gst_alawenc_init), (gst_alawenc_chain):
+       * gst/law/mulaw-decode.c: (mulawdec_getcaps), (mulawdec_setcaps),
+       (gst_mulawdec_init), (gst_mulawdec_chain):
+       * gst/law/mulaw-encode.c: (mulawenc_getcaps), (mulawenc_setcaps),
+       (gst_mulawenc_init), (gst_mulawenc_chain):
+       Ported alaw and mulaw plugins to 0.9, fixed the negotiation as
+       well.
+
+2005-05-06  Christian Schaller  <uraeus@gnome.org>
+
+       * ext/alsa: removed plugins that are now in gst-plugins-base
+       * ext/gnomevfs:
+       * ext/theora:
+       * ext/vorbis:
+       * gst/adder:
+       * gst/audioconvert:
+       * gst/ffmpegcolorspace:
+       * gst/typefind:
+       * gst/videofilter: comment out videoflip and gamma plugins
+
+2005-05-06  Christian Schaller  <uraeus@gnome.org>
+
+       * gst-libs: Remove all files as this is in gst-plugins-base now
+       * gst-libs/README: add a remove informing of this move
+
+2005-05-06  Christian Schaller <uraeus@gnome.org> 
+
+       * PORTED_09: update to add videofilter
+       * configure.ac: re-add videofilter
+       * gst/videofilter/Makefile.am: remove videobalance (not ported yet)
+       * gst/videofilter/gstgamma.c: (gst_gamma_class_init):
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_class_init):
+       * gst/videofilter/gstvideofilter.c: (gst_videofilter_getcaps),
+       (gst_videofilter_setcaps), (gst_videofilter_init),
+       (gst_videofilter_chain), (gst_videofilter_set_output_size):
+       * gst/videofilter/gstvideoflip.c: (gst_videoflip_class_init):
+
+2005-05-06  Christian Schaller <uraeus@gnome.org>
+
+       * ext/mad: ported plugin from threaded branch
+       * gst/effectv: ported plugins from threaded branch
+       * gst/law: enable law plugin as it compiles (Wim will fixor)
+
+2005-05-06  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       fix typo
+
+2005-05-05  Christian Schaller <uraeus@gnome.org>
+
+       * Update configure.ac and Makefiles to only build what is actually
+       ported and not moved into gst-plugins-base
+
+2005-02-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         hunting season on 0.9 is now OPEN
+
+2005-02-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosselement.c: (gst_osselement_class_probe_devices):
+         Kick the hell out of gcc for not warning me about a symbol conflict.
+
+2005-02-22  Luca Ognibene  <luogni@tin.it>
+
+       Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_link):
+         Don't leak caps string (fixes #168134)
+
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_class_init),
+       (gst_jpegenc_init), (gst_jpegenc_finalize),
+       (gst_jpegenc_change_state):
+         Don't leak line buffers and context struct (fixes #168133).
+
+2005-02-21  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * configure.ac:
+       * ext/dirac/gstdiracdec.cc:
+       (gst_diracdec_chain):
+         Since dirac 0.5.0 the framerate in dirac is expressed as a
+         rational number. Fix build and up requirement to 0.5.0, and
+         also pass parameters to gst_diracdec_link in the right order
+         (fixes #167959).
+
+2005-02-21  Maciej Katafiasz  <mathrick@freedesktop.org>
+
+       * ext/faad/gstfaad.c: (gst_faad_sinkconnect), (gst_faad_chain):
+       * ext/faad/gstfaad.h:
+       TEH LONGEST DEBUGGING SESSION EVAR is over. Fix interaction with 
+       certain invalid muxed streams, where some packets will contain 
+       junk after decoder data. Partially fixes #149158.
+
+2005-02-21  Jan Schmidt <thaytan@mad.scientist.com>
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_chain):
+          Make sure we only write to writable buffers
+
+2005-02-20  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data):
+         Do actually fix invalid RIFF fmt header values for alaw
+         and mulaw audio instead of just saying so.
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
+         Give gst_riff_create_audio_caps_with_data() a chance to
+         fix up broken format header fields before extracting any
+         parameters from the header. (fixes #167633)
+
+2005-02-19  Martin Holters  <martin.holters@gmx.de>
+
+       Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/audioconvert/bufferframesconvert.c:
+       (buffer_frames_convert_link):
+         Don't leak othercaps. (fixes #167878)
+
+2005-02-19  Arwed v. Merkatz  <v.merkatz@gmx.net>>
+
+       * configure.ac:
+       * ext/libvisual/visual.c: (gst_visual_srclink),
+       (gst_visual_change_state):
+         Support libvisual 0.2.0.
+
+2005-02-18  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_chain):
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_resync), (gst_jpegenc_chain):
+         Use same rowstrides for I420 as used everywhere else.
+
+2005-02-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_invert):
+         Declare variables at beginning of block and make gcc-2.95 happy
+         (fixes # 167482, patch by Gergely Nagy).
+         
+       * gst/tcp/gsttcpclientsrc.c:
+       * gst/tcp/gsttcpclientsrc.h:
+         Move some includes into the header, so that struct sockaddr_in is
+         defined when it should be defined on FreeBSD as well (fixes
+         #167483).
+         
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_init_receive):
+         Don't pass uninitialised values to setsockopt() here either.
+
+2005-02-17  Luca Ognibene  <luogni at tin dot it>
+
+       Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_init_send):
+         Don't pass uninitialised values to setsockopt(). (fixes #167704)
+
+2005-02-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (add_sink):
+         Invert bin_add/link order to workaround deadlock in opt.
+
+2005-02-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/modplug/gstmodplug.cc:
+         Add missing break causing position queries to fail.
+
+2005-02-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_populate):
+         Granpos can apparently be -1, which screws up calculations...
+
+2005-02-16  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain),
+       (gst_ximagesink_send_pending_navigation),
+       (gst_ximagesink_navigation_send_event), (gst_ximagesink_finalize),
+       (gst_ximagesink_init):
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain),
+       (gst_xvimagesink_send_pending_navigation),
+       (gst_xvimagesink_navigation_send_event),
+       (gst_xvimagesink_finalize), (gst_xvimagesink_init):
+       * sys/xvimage/xvimagesink.h:
+         Use a mutex protected list to marshal navigation
+         events into the stream thread from whichever thread
+         sends them.
+
+2005-02-15  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/speed/demo-mp3.c: (time_tick_cb), (main):
+         Display current position and track length; misc. clean-ups.
+         
+       * gst/speed/gstspeed.c: (speed_get_query_types), (speed_src_query),
+       (speed_init), (speed_chain):
+         Add query function, so that the stream length and current position
+         get adjusted when queried (note that current position queries may
+         still be wrong if the audio sink returns values based on buffer
+         timestamps instead of passing on the query).
+
+2005-02-13  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link),
+       (gst_audio_convert_channels):
+         create channel conversion matrix when linking
+       * gst/audioconvert/.cvsignore:
+       * gst/audioconvert/Makefile.am:
+       * gst/audioconvert/channelmixtest.c: (main):
+         add (ugly) test that ensures stereo <=> mono conversion works
+         correctly
+
+2005-02-13  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstchannelmix.h:
+         include missing header file
+       * gst/audioconvert/gstchannelmix.c:
+       (gst_audio_convert_fill_compatible):
+         use same sign for both channels when converting to/from compatible
+         channel. Previously used different signs made the signals cancel
+         each other out and appear like silence. (fixes #167269)
+
+2005-02-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_pixfmt),
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/imgconvert.c:
+         Convert to and from YV12 (fixes #156379).
+
+2005-02-12  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_new),
+       (gst_ximagesink_sink_link), (gst_ximagesink_change_state),
+       (gst_ximagesink_chain), (gst_ximagesink_set_xwindow_id),
+       (gst_ximagesink_expose), (gst_ximagesink_set_property),
+       (gst_ximagesink_finalize), (gst_ximagesink_init): Protect interface
+        methods from chain and negotiation and vice versa (Fixes #166142).
+       * sys/ximage/ximagesink.h: Add stream_lock.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_free),
+       (gst_xvimagesink_buffer_alloc), (gst_xvimagesink_set_xwindow_id),
+       (gst_xvimagesink_expose): Check for xcontext before trying to link.
+
+2005-02-12  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_open):
+         Don't send "Hey! You gave me a NULL pointer you naughty person" as
+         error message when we can't open the DVD device (when dvdnav_open()
+         fails, src->dvdnav is NULL, so dvdnav_err_to_string() will return
+         the above). Send something more useful instead (fixes #167117).
+
+2005-02-11  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_put),
+       (gst_xvimagesink_sink_link), (gst_xvimagesink_change_state),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_free),
+       (gst_xvimagesink_buffer_alloc), (gst_xvimagesink_set_xwindow_id),
+       (gst_xvimagesink_expose), (gst_xvimagesink_set_property),
+       (gst_xvimagesink_finalize), (gst_xvimagesink_init): Protect interface
+       methods from chain and negotiation and vice versa (Fixes #166142).
+       Fix a possible bug of images in the buffer pool being discarded because
+       we are looking at the wrong geometry.
+       * sys/xvimage/xvimagesink.h: Add stream_lock.
+
+2005-02-11  David Schleef  <ds@schleef.org>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (crop_buffer): Change uint to
+       unsigned int. (fixes #167128)
+
+2005-02-11  David Schleef  <ds@schleef.org>
+
+       * gst/librfb/Makefile.am: Testing stuff before committing is
+         for wimps... and people with fast machines.  Fix stupid
+         mistake.
+
+2005-02-11  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Pull in librfb from my CVS tree, because it is
+         too small and annoying to be separate.  Move rfbsrc plugin
+         to gst/.
+       * ext/Makefile.am:
+       * ext/librfb/Makefile.am:
+       * ext/librfb/gstrfbsrc.c:
+       * gst/librfb/Makefile.am:
+       * gst/librfb/gstrfbsrc.c:
+       * gst/librfb/rfb.c:
+       * gst/librfb/rfb.h:
+       * gst/librfb/rfbbuffer.c:
+       * gst/librfb/rfbbuffer.h:
+       * gst/librfb/rfbbytestream.c:
+       * gst/librfb/rfbbytestream.h:
+       * gst/librfb/rfbcontext.h:
+       * gst/librfb/rfbdecoder.c:
+       * gst/librfb/rfbdecoder.h:
+       * gst/librfb/rfbutil.h:
+
+2005-02-10  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/speed/Makefile.am:
+       * gst/speed/demo-mp3.c: (main):
+       * gst/speed/filter.func:
+       * gst/speed/gstspeed.c: (speed_link), (speed_parse_caps),
+       (speed_class_init), (speed_init), (speed_chain_int16),
+       (speed_chain_float32), (speed_chain), (speed_set_property),
+       (speed_get_property), (speed_change_state):
+       * gst/speed/gstspeed.h:
+         Fix speed element and make it chain-based (fixes #156467),
+         and make it handle more than one channel.
+
+2005-02-10  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dts/gstdtsdec.c: (gst_dtsdec_init), (gst_dtsdec_channels),
+       (gst_dtsdec_handle_event), (gst_dtsdec_handle_frame),
+       (gst_dtsdec_chain), (gst_dtsdec_change_state):
+       * ext/dts/gstdtsdec.h:
+          Don't clobber the stack constructing the channels array.
+         Make the element chain-based. DTS tracks can now be played.
+         
+2005-02-09  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst-libs/gst/audio/multichannel.h:
+       * gst-libs/gst/gconf/gconf.h:
+       * gst-libs/gst/idct/idct.h:
+       * gst-libs/gst/media-info/media-info-priv.h:
+       * gst-libs/gst/play/play.h:
+       * gst-libs/gst/resample/private.h:
+       * gst-libs/gst/resample/resample.h:
+       * gst-libs/gst/riff/riff-ids.h:
+       * gst-libs/gst/video/video.h:
+       * gst-libs/gst/video/videosink.h:
+         Add G_BEGIN_DECLS and G_END_DECLS around headers where
+         missing, so that they work when included from C++ code.
+
+2005-02-09  David Schleef  <ds@schleef.org>
+
+       * testsuite/gst-lint: Check for non-statically scoped
+         parent_class variables.  This won't be a problem once
+         plugins are loaded with RTLD_LOCAL.
+
+2005-02-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mplex/gstmplexibitstream.cc:
+         gcc madness.
+
+2005-02-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstogmparse.c:
+       * gst/debug/gstnavigationtest.c:
+         Die, thou faulty symbol pollutors (non-static parent_class).
+
+2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mplex/gstmplexibitstream.cc:
+         Fix event handling (#165525).
+
+2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mikmod/gstmikmod.c:
+       * gst/modplug/gstmodplug.cc:
+         Add missing endianness to template (fixes #165509).
+
+2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_data):
+         Fix wrong order of reading of optional bytes (#165290).
+
+2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         Implement FILLER event awareness.
+
+2005-02-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_convert):
+         Fix track calculations (#166208).
+
+2005-02-08  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/libpng/gstpngdec.c: (gst_pngdec_init), (gst_pngdec_chain):
+       * ext/libpng/gstpngenc.c:
+         Fix byte-order, use proper fixed caps. Fixes #164197.
+
+2005-02-08  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * configure.ac:
+         Add dvdlpcmdec 
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_reset),
+       (free_all_buffers), (gst_mpeg2dec_alloc_buffer):
+         Don't push buffers if the src pad isn't negotiated yet.
+         
+       * gst/audioconvert/gstaudioconvert.c:
+       (gst_audio_convert_buffer_to_default_format),
+       (gst_audio_convert_buffer_from_default_format):
+         Add support for 24-bit width.
+
+       * gst/dvdlpcmdec/.cvsignore:
+       * gst/dvdlpcmdec/Makefile.am:
+       * gst/dvdlpcmdec/gstdvdlpcmdec.c: (gst_dvdlpcmdec_get_type),
+       (gst_dvdlpcmdec_base_init), (gst_dvdlpcmdec_class_init),
+       (gst_dvdlpcm_reset), (gst_dvdlpcmdec_init), (gst_dvdlpcmdec_link),
+       (gst_dvdlpcmdec_chain), (gst_dvdlpcmdec_change_state),
+       (plugin_init):
+       * gst/dvdlpcmdec/gstdvdlpcmdec.h:
+         New decoder for rearranging DVD LPCM into our audio/x-raw-int
+         format. Needs support for the channels maps if someone can find 
+         a DVD LPCM track with > 2 channels.
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_handle_dvd_event),
+       (gst_dvd_demux_send_discont), (gst_dvd_demux_handle_discont),
+       (gst_dvd_demux_get_audio_stream), (gst_dvd_demux_process_private):
+       * gst/mpegstream/gstdvddemux.h:
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_discont),
+       (gst_mpeg_demux_new_output_pad), (gst_mpeg_demux_init_stream),
+       (gst_mpeg_demux_send_subbuffer), (gst_mpeg_demux_handle_src_query):
+       * gst/mpegstream/gstmpegdemux.h:
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_reset),
+       (gst_mpeg_parse_parse_packhead), (gst_mpeg_parse_loop),
+       (gst_mpeg_parse_get_rate), (gst_mpeg_parse_convert_src),
+       (gst_mpeg_parse_handle_src_query),
+       (gst_mpeg_parse_handle_src_event):
+         Use audio/x-dvd-lpcm for LPCM output.
+         Add DTS output.
+
+2005-02-08  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/alpha/gstalphacolor.c: (gst_alpha_color_sink_link),
+       (transform_rgb), (transform_bgr), (gst_alpha_color_chain):
+         Add BGRA handling (#165736).
+
+2005-02-08  Francis Labonte  <francis_labonte@hotmail.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/law/alaw-decode.c: (alawdec_link):
+       * gst/law/alaw-encode.c: (alawenc_link):
+       * gst/law/mulaw-decode.c: (mulawdec_link):
+       * gst/law/mulaw-encode.c: (mulawenc_link):
+         Fix caps memleaks (#166600).
+
+2005-02-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/tarkin/mem.h:
+       * ext/tarkin/wavelet.h:
+       * ext/tarkin/yuv.h:
+       * gst/ffmpegcolorspace/avcodec.h:
+         Include "_stdint.h" instead of <stdint.h>. Fixes build on
+         systems that don't have stdint.h, like Solaris9 (fixes #166631).
+
+2005-02-05  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_change_state):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_clear),
+       (gst_xvimagesink_change_state):
+         Clear window on PAUSED->READY instead of READY->PAUSED. Stop
+         Xv video (and thereby regenerate Xv colourkey) in clear() so
+         that PLAY -> READY -> PLAY works (fixes #162504).
+
+2005-02-05  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_getcaps):
+         Switch to list instead of range, since MJPEG-devices really just
+         support decimations, not any size.
+
+2005-02-05  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_open_decoder),
+       (gst_mpeg2dec_reset), (free_all_buffers),
+       (gst_mpeg2dec_alloc_buffer), (handle_sequence):
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         The libmpeg2 user-allocated buffer management is awkward, 
+         to say the least. Hopefully this fixes things.
+
+2005-02-04  Andy Wingo  <wingo@pobox.com>
+
+       * gst/audioconvert/bufferframesconvert.c
+       (buffer_frames_convert_fixate): New function, fixates to 256
+       frames per buffer by default. (Much better than 1.)
+       (buffer_frames_convert_init): Set the fixate function for both src
+       and sink pad.
+       (buffer_frames_convert_link): After success setting nonfixed caps,
+       get the negotiated caps so we can know how many buffer-frames it
+       will be. No idea how this worked at all before.
+
+2005-02-05  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+       (gst_mpeg2dec_close_decoder), (put_buffer), (check_buffer),
+       (free_buffer), (free_all_buffers), (gst_mpeg2dec_alloc_buffer),
+       (handle_sequence), (handle_picture):
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         Rearrange buffer tracking and refcounting and refactor
+         a little for readability. 
+
+2005-02-04  Jan Schmidt  <thaytan@mad.scientist.com>
+       * sys/v4l/gstv4l.c: (plugin_init):
+       * sys/v4l/gstv4ljpegsrc.c: (gst_v4ljpegsrc_get_type),
+       (gst_v4ljpegsrc_base_init), (gst_v4ljpegsrc_class_init),
+       (gst_v4ljpegsrc_init), (gst_v4ljpegsrc_src_link),
+       (gst_v4ljpegsrc_getcaps), (gst_v4ljpegsrc_get):
+       * sys/v4l/gstv4ljpegsrc.h:
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_open), (gst_v4lsrc_src_link):
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_palette_name),
+       (gst_v4lsrc_get_fps):
+       * sys/v4l/v4lsrc_calls.h:
+         Add new v4ljpegsrc for handling the ov51x hacky "I'll give
+         you jpeg inside rgb frames" driver.
+         Don't error in the v4lsrc link function, just return 
+         REFUSED.
+
+2005-02-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/qcam/gstqcamsrc.c: (gst_qcamsrc_change_state),
+       (gst_qcamsrc_open):
+         Use GST_ELEMENT_ERROR, not g_warning, if open failed.
+
+2005-02-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_video_caps):
+         Change caps on MJPEG-B so it doesn't interfere with MJPEG/JPEG.
+
+2005-02-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_change_state):
+         Reset negotiated state on PAUSED->READY.
+
+2005-02-02  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Put DEFAULT_AUDIOSINK in config.h and use
+       whereever possible.  (Fixes #165997)
+       * examples/capsfilter/capsfilter1.c: (main):
+       * examples/dynparams/filter.c: (create_ui):
+       * examples/seeking/cdparanoia.c: (get_track_info), (main):
+       * examples/seeking/chained.c: (main):
+       * examples/seeking/seek.c: (make_mod_pipeline), (make_dv_pipeline),
+       (make_wav_pipeline), (make_flac_pipeline), (make_sid_pipeline),
+       (make_vorbis_pipeline), (make_mp3_pipeline), (make_avi_pipeline),
+       (make_mpeg_pipeline), (make_mpegnt_pipeline):
+       * examples/seeking/spider_seek.c: (make_spider_pipeline):
+       * examples/switch/switcher.c: (main):
+       * ext/dv/demo-play.c: (main):
+       * ext/faad/gstfaad.c: (gst_faad_change_state):
+       * ext/mad/gstmad.c: (gst_mad_chain):
+       * ext/smoothwave/demo-osssrc.c: (main):
+       * gst-libs/gst/gconf/gconf.c: (gst_gconf_set_string),
+       (gst_gconf_render_bin_from_description),
+       (gst_gconf_get_default_audio_sink),
+       (gst_gconf_get_default_video_sink),
+       (gst_gconf_get_default_audio_src),
+       (gst_gconf_get_default_video_src),
+       (gst_gconf_get_default_visualization_element):
+       * gst/level/demo.c: (main):
+       * gst/level/plot.c: (main):
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element):
+       * gst/playback/test.c: (gen_video_element), (gen_audio_element):
+       * gst/playondemand/demo-mp3.c: (setup_pipeline):
+       * gst/sine/demo-dparams.c: (main):
+       * gst/spectrum/demo-osssrc.c: (main):
+       * gst/speed/demo-mp3.c: (main):
+       * gst/volume/demo.c: (main):
+       * testsuite/embed/embed.c: (main):
+
+2005-02-02  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_class_init),
+       (gst_tcpclientsink_finalize):
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_class_init),
+       (gst_tcpclientsrc_finalize):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
+       (gst_tcpserversink_init), (gst_tcpserversink_finalize):
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_class_init),
+       (gst_tcpserversrc_init), (gst_tcpserversrc_finalize):
+         Don't leak the hostname when shutting down.
+         In tcpserversrc, take a copy of the default hostname.
+
+2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_iso_receive):
+         Set caps to systemstream=TRUE.
+
+2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * testsuite/Makefile.am:
+         Fix more OSX buildbots.
+
+2005-02-02  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         Don't send things to NULL PAD_PEERs
+
+       * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_chain):
+         Copy-on-write the incoming buffer.
+
+       * gst/mpegstream/gstdvddemux.h:
+       * gst/mpegstream/gstmpegclock.h:
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
+       (normal_seek), (gst_mpeg_demux_handle_src_event):
+       * gst/mpegstream/gstmpegdemux.h:
+       * gst/mpegstream/gstmpegpacketize.h:
+       * gst/mpegstream/gstmpegparse.c:
+       (gst_mpeg_parse_update_streaminfo), (gst_mpeg_parse_reset),
+       (gst_mpeg_parse_handle_discont), (gst_mpeg_parse_parse_packhead),
+       (gst_mpeg_parse_loop), (gst_mpeg_parse_get_rate),
+       (gst_mpeg_parse_convert_src), (gst_mpeg_parse_handle_src_query),
+       (gst_mpeg_parse_handle_src_event), (gst_mpeg_parse_change_state):
+       * gst/mpegstream/gstmpegparse.h:
+       * gst/mpegstream/gstrfc2250enc.h:
+          Various changes to the way time is computed that make seeking and
+         total time estimation much better here.
+         Use G_BEGIN/END_DECLS instead of __cplusplus
+
+       * gst/videocrop/gstvideocrop.c: (gst_video_crop_chain):
+         Use gst_buffer_stamp instead of only copying the TIMESTAMP
+
+2005-02-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/subparse/gstsubparse.c:
+         Fix OSX buildbot.
+
+2005-01-31  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/theora/theoraenc.c: (theora_buffer_from_packet),
+       (theora_enc_chain), (theora_enc_change_state):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_init),
+       (gst_vorbisenc_buffer_from_packet), (gst_vorbisenc_chain),
+       (gst_vorbisenc_change_state):
+       * ext/vorbis/vorbisenc.h:
+         Set granulepos and timestamp correctly for streams not
+         starting at 0, taking into account the initial delay.
+
+2005-01-31  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/mpegstream/gstdvddemux.c:
+         Add audio/x-dts to audio pad template caps
+
+2005-01-30  David Schleef  <ds@schleef.org>
+
+       * ext/polyp/polypsink.c: (gst_polypsink_base_init),
+       (create_context), (gst_polypsink_link): Fix silly endianness
+       bug.  Add some debugging.  Remove float from caps; it doesn't
+       work.  Attempt to get remote audio working.
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_video_caps):
+         Add 3IV2 fourcc.
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream), (swap_line),
+       (gst_avi_demux_invert), (gst_avi_demux_process_next_entry),
+       (gst_avi_demux_stream_data):
+       * gst/avi/gstavidemux.h:
+         Invert DIB images. Fixes #132341.
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_chain):
+         D'oh, reference the palette data, not the palette structure.
+         Fixes color distortion in #132341.
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_link):
+         PAR can be non-fixed when not provided as argument (#162626).
+
+2005-01-29  David Moore  <dcm@acm.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_loop_header):
+         Re-apply patch from #142272 that allows non-seekable sources,
+         re-proposed by Daniel Drake <dsd@gentoo.org>.
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/rtp/gstrtpgsmenc.c: (gst_rtpgsmenc_init):
+         Use the src template for creating the src pad (#162330).
+
+2005-01-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/musepack/Makefile.am:
+       * ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
+       (gst_musepackdec_init), (gst_musepackdec_dispose),
+       (gst_musepackdec_src_query), (gst_musepackdec_src_convert),
+       (gst_musepack_stream_init), (gst_musepackdec_loop),
+       (gst_musepackdec_change_state):
+       * ext/musepack/gstmusepackdec.cpp:
+       * ext/musepack/gstmusepackdec.h:
+       * ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
+       (gst_musepack_reader_read), (gst_musepack_reader_seek),
+       (gst_musepack_reader_tell), (gst_musepack_reader_get_size),
+       (gst_musepack_reader_canseek), (gst_musepack_init_reader):
+       * ext/musepack/gstmusepackreader.cpp:
+       * ext/musepack/gstmusepackreader.h:
+         Update to 1.1 API (#165446).
+
+2005-01-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/Makefile.am:
+         Unbreak buildbot.
+
+2005-01-28  Andy Wingo  <wingo@pobox.com>
+
+       * ext/dv/gstdvdec.c: Change the pixel aspect ratio of dvdec output
+       to reflect a different dubious internet source. Add a reference
+       and some commentary.
+
+2005-01-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gststreamselector.c: (gst_stream_selector_init),
+       (gst_stream_selector_get_caps), (gst_stream_selector_chain):
+       * gst/playback/gststreamselector.h:
+         Be more selective when we're redoing caps negotiation from
+         within the chain function on a stream change.
+
+2005-01-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/amrnb/Makefile.am:
+       * ext/amrnb/amrnb.c: (plugin_init):
+       * ext/amrnb/amrnbdec.c: (gst_amrnbdec_get_type),
+       (gst_amrnbdec_base_init), (gst_amrnbdec_class_init),
+       (gst_amrnbdec_init), (gst_amrnbdec_link), (gst_amrnbdec_chain),
+       (gst_amrnbdec_state_change):
+       * ext/amrnb/amrnbdec.h:
+       * ext/amrnb/amrnbparse.c: (gst_amrnbparse_get_type),
+       (gst_amrnbparse_base_init), (gst_amrnbparse_class_init),
+       (gst_amrnbparse_init), (gst_amrnbparse_formats),
+       (gst_amrnbparse_querytypes), (gst_amrnbparse_query),
+       (gst_amrnbparse_handle_event), (gst_amrnbparse_reserve),
+       (gst_amrnbparse_loop), (gst_amrnbparse_state_change):
+       * ext/amrnb/amrnbparse.h:
+         Add support for AMR-NB (mobile phone audio format; #155163, #163286).
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init):
+         Add AMR-NB/-WB raw formats.
+       * ext/alsa/gstalsa.c: (gst_alsa_link):
+         Keep valid time when changing format.
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (qtdemux_parse_trak):
+         Add some more format-specific options (#140141, #143555, #155163).
+
+2005-01-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_blockgroup):
+         Fix logic error in timing of subtitle stream synchronization.
+       * gst/typefind/gsttypefindfunctions.c: (qt_type_find):
+         Add skip-chunk, which is found in kodak-camera streams.
+
+2005-01-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/vi.po:
+         Adding Vietnamese translation (submitted by Clytie Siddall)
+
+2005-01-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstdecodebin.c: (try_to_link_1):
+         Use realpad for signal.
+
+2005-01-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstid3demuxbin.c: (gst_id3demux_bin_base_init):
+         Fix category so decodebin picks it up.
+
+2005-01-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/Makefile.am:
+       * ext/mad/gstid3demuxbin.c: (gst_id3demux_bin_get_type),
+       (gst_id3demux_bin_base_init), (gst_id3demux_bin_class_init),
+       (gst_id3demux_bin_init), (gst_id3demux_bin_remove_pad),
+       (found_type), (gst_id3demux_bin_change_state):
+       * ext/mad/gstid3tag.c: (gst_id3_tag_add_src_pad),
+       (gst_id3_tag_init), (gst_id3_tag_handle_event),
+       (gst_id3_tag_src_link), (gst_id3_tag_chain),
+       (gst_id3_tag_change_state), (plugin_init):
+       * ext/mad/gstmad.h:
+         Add id3demuxbin (which is a simple bin consisting of id3demux
+         and typefind), take over rank from id3demux, remove typefind
+         code from id3demux. Makes all broken mp3s that I know of work,
+         and thereby fixes #152688.
+
+2005-01-27  Edward Hervey  <bilboed@bilboed.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_src_event):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event):
+         Allow seeks on audio pad, make mad forward those (#164826).
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
+         Set duration (#165335).
+
+2005-01-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
+       (gst_asf_demux_commit_taglist), (gst_asf_demux_process_comment),
+       (gst_asf_demux_process_ext_content_desc),
+       (gst_asf_demux_change_state), (gst_asf_demux_add_audio_stream),
+       (gst_asf_demux_add_video_stream), (gst_asf_demux_setup_pad):
+       * gst/asfdemux/gstasfdemux.h:
+         Improve metadata display, e.g. if the metadata comes before the
+         streams are loaded (which is perfectly valid).
+
+2005-01-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * tools/gst-launch-ext-m.m:
+         Fix AVI/ASF pipelines (#165340).
+
+2005-01-26  Amaury Jacquot  <sxpert@esitcom.org>
+       * ext/cairo/gsttextoverlay.c: include  string.h and strings.h to fix
+       build failure on amd64
+
+2005-01-26  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/mad/gstid3tag.c: (mad_id3_parse_latin1_string),
+       (mad_id3_parse_comment_frame), (gst_mad_id3_to_tag_list):
+         Check environment variables GST_ID3V2_TAG_ENCODING,
+         GST_ID3_TAG_ENCODING and GST_TAG_ENCODING for a colon-separated
+         list of character encodings to force interpretation of non-unicode
+         strings stored in an ID3v2 tag to a particular encoding. If none
+         is specified, try to use current locale's encoding, then fall back
+         to ISO-8859-1 (which will always succeed). (Resolves #149274)
+       * gst/tags/gstid3tag.c: (gst_tag_from_id3_tag),
+       (gst_tag_extract_id3v1_string), (gst_tag_list_new_from_id3v1):
+         Check environment variables GST_ID3V1_TAG_ENCODING,
+         GST_ID3_TAG_ENCODING and GST_TAG_ENCODING for a colon-separated
+         list of character encodings to use in case a string encountered
+         in an ID3v1 tag is not valid UTF-8 already. If no encoding is
+         specified, try to use the current locale's encoding, then fall
+         back to ISO-8859-1 (which will always succeed).
+
+2005-01-25  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstmad.c: (gst_mad_check_caps_reset), (gst_mad_chain):
+         - on half framerate, compute the rate in advance so the comparisons
+           don't compare wrong values
+         - don't use mad_synth/frame_mute anymore, this mirrors mad_decoder
+           behaviour
+         - don't use mad_header_decode anymore, mad_frame_decode does that
+           automatically
+         - when getting rid of consumed bytes, reset the stream's skiplen
+         (fixes #163867)
+
+2005-01-26  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init)
+         Use 1/2 a second for default max_discont, as PES streams from DVB
+         seem to have larger spacings in the SCR. 
+         Fix a typo.
+
+2005-01-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (group_commit):
+         Notify delayed stream-info availability.
+
+2005-01-26  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_push),
+       (gst_a52dec_handle_event), (gst_a52dec_chain):
+       Add some debug output. Check that a discont has a valid
+       time associated.
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
+       (gst_alsa_sink_loop):
+       Ignore TAG events. A little extra debug for broken timestamps.
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_init), (dvdnavsrc_loop),
+       (dvdnavsrc_change_state):
+       Ensure we send a discont to engage the link before we send any
+       other events.
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_init),
+       (dvdreadsrc_finalize), (_close), (_open), (_seek_title),
+       (_seek_chapter), (seek_sector), (dvdreadsrc_get),
+       (dvdreadsrc_uri_get_uri), (dvdreadsrc_uri_set_uri):
+       Handle URI of the form dvd://title[,chapter[,angle]]. Currently only
+       dvd://title works in totem because typefinding sends a seek that ends
+       up going back to chapter 1 regardless.
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2dec/gstmpeg2dec.h:
+       Output correct timestamps and handle disconts.
+       * ext/ogg/gstoggdemux.c: (get_relative):
+       Small guard against a null dereference.
+       * ext/pango/gsttextoverlay.c: (gst_textoverlay_finalize),
+       (gst_textoverlay_set_property):
+       Free memory when done. Don't call gst_event_filler_get_duration on
+       EOS events. Use GST_LOG and GST_WARNING instead of g_message and
+       g_warning.
+       * ext/smoothwave/gstsmoothwave.c: (gst_smoothwave_init),
+       (draw_line), (gst_smoothwave_dispose), (gst_sw_sinklink),
+       (gst_sw_srclink), (gst_smoothwave_chain):
+       Draw solid lines, prettier colours.
+       * gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_init):
+       Add a default palette that'll work for some movies.
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_init),
+       (gst_dvd_demux_handle_dvd_event), (gst_dvd_demux_send_discont),
+       (gst_dvd_demux_send_subbuffer), (gst_dvd_demux_reset):
+       * gst/mpegstream/gstdvddemux.h:
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_discont),
+       (gst_mpeg_demux_parse_syshead), (gst_mpeg_demux_parse_pes):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
+       (gst_mpeg_parse_handle_discont), (gst_mpeg_parse_parse_packhead):
+       * gst/mpegstream/gstmpegparse.h:
+       Use PTM/NAV events when for timestamp adjustment when connected to 
+       dvdnavsrc. Don't use many discont events where one suffices.
+       * gst/playback/gstplaybasebin.c: (group_destroy),
+       (gen_preroll_element), (gst_play_base_bin_add_element):
+       * gst/playback/gstplaybasebin.h:
+       Make sure we remove subtitles from the same bin we put them in.
+       * gst/subparse/gstsubparse.c: (convert_encoding), (parse_subrip),
+       (gst_subparse_buffer_format_autodetect),
+       (gst_subparse_change_state):
+       Fix some memleaks and invalid accesses.
+       * gst/typefind/gsttypefindfunctions.c: (ogganx_type_find),
+       (oggskel_type_find), (cmml_type_find), (plugin_init):
+       Some typefind functions for Annodex v3.0 files
+       * gst/wavparse/gstwavparse.h:
+       GstRiffReadClass is the correct parent class.
+
+2005-01-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         Add extradata to huffyuv (fixes #165013).
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_vids_with_data):
+         Fix extradata extraction if it is in the chunk size.
+
+2005-01-25  Edward Hervey  <bilboed@bilboed.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/effectv/gstquark.c: (gst_quarktv_class_init),
+       (gst_quarktv_change_state), (gst_quarktv_dispose):
+         Memory free'ing location fix (#164708).
+
+2005-01-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (group_commit),
+       (gen_preroll_element), (probe_triggered), (gen_source_element),
+       (setup_source), (gst_play_base_bin_change_state),
+       (gst_play_base_bin_add_element):
+         Don't block for streams.
+       * gst/playback/gststreaminfo.c: (stream_info_change_state),
+       (gst_stream_info_set_mute):
+         Use gst_pad_set_active_recursive.
+
+2005-01-25  Andy Wingo  <wingo@pobox.com>
+
+       * sys/v4l/gstv4lelement.c (gst_v4l_iface_supported): Fix compile
+       for #ifndef HAVE_XVIDEO.
+
+2005-01-24  Jeffrey C. Ollie
+
+       reviewed by: Maciej Katafiasz  <mathrick@freedesktop.org>
+
+       * ext/gsm/gstgsmdec.c: (gst_gsmdec_init), (gst_gsmdec_chain):
+       * ext/gsm/gstgsmdec.h:
+       * ext/gsm/gstgsmenc.c: (gst_gsmenc_init), (gst_gsmenc_chain):
+       * ext/gsm/gstgsmenc.h:
+       Fix rate to 8kHz as per spec, removes obscure errors when no rate
+       was given by property. Add proper buffer timestamps and offsets.
+
+2005-01-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data):
+         Audio can be <8000Hz.
+
+2005-01-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
+         Explicit state change to workaround refcount bugs.
+
+2005-01-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavimux.c: (gst_avimux_write_tag),
+       (gst_avimux_riff_get_avi_header):
+         Fix...
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_element_data),
+       (gst_riff_read_element_data):
+       * gst-libs/gst/riff/riff-read.h:
+         Add _peek version (req'ed in CDXA).
+       * gst/cdxaparse/gstcdxaparse.c: (gst_cdxaparse_init),
+       (gst_cdxaparse_loop):
+         Fix parsing in playbin.
+       * gst/playback/gstdecodebin.c: (close_pad_link):
+         Ignore current_ pads, they cause major annoyance.
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         Safety guard.
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavimux.c: (gst_avimux_write_tag):
+         Fix padding...
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/ebml-read.c: (gst_ebml_read_buffer):
+         Allow for 0-sized buffers. Fixes length query problems in
+         starwars.mkv from the testsuite.
+
+2005-01-19  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/videobox/gstvideobox.c: (gst_video_box_copy_plane_i420),
+       (gst_video_box_i420), (gst_video_box_chain):
+         Fix row strides for I420 (fixes #163159)
+         
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
+         MPEG2 has a useful rate property, so we can actually use that.
+         For MPEG-1, continue using the bytes/time properties.
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_template_caps):
+         Add intel-h263.
+
+2005-01-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_check_caps_reset), (gst_mad_chain):
+         Fail if caps negotiation fails. Should fix #162184, and should
+         definately be in there regardless of it fixing the actual bug.
+       * gst/avi/gstavimux.c: (gst_avimux_get_type), (gst_avimux_init),
+       (gst_avimux_write_tag), (gst_avimux_riff_get_avi_header),
+       (gst_avimux_riff_get_avix_header),
+       (gst_avimux_riff_get_video_header),
+       (gst_avimux_riff_get_audio_header), (gst_avimux_write_index),
+       (gst_avimux_start_file), (gst_avimux_handle_event),
+       (gst_avimux_change_state):
+       * gst/avi/gstavimux.h:
+         Refactor structure writing to use GST_WRITE_UINT macros, add
+         metadata writing support.
+
+2005-01-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gststreaminfo.c: (gst_stream_info_dispose):
+         Elements may already be destroyed when this function is called.
+
+2005-01-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_loop_header), (gst_qtdemux_handle_esds):
+         More memory leak fixes (#149162).
+
+2005-01-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_add_stream):
+         Fix two memleaks.
+
+2005-01-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_srcgetcaps):
+         Argh...
+
+2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_srcgetcaps):
+         Fix off-by-one bug. Fixes warnings during playback of sincity.mp4
+         when fixating to six channels in Totem.
+
+2005-01-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/dvdread/dvdreadsrc.c: (get_next_cell_for):
+         Fix compile warnings on Solaris 10 buildbot
+
+2005-01-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/dvdread/dvdreadsrc.c: (_read):
+         Don't read beyond the last cell in a chapter (fixes 
+         invalid memory access)
+
+2005-01-17  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * ext/dvdread/stream_labels.c:
+       (dvdreadsrc_get_audio_stream_labels):
+         Use NULL for an empty GList instead of g_list_alloc(); fix 
+         memory leaks; s/LCPM/LPCM/; use g_strdup_printf() instead 
+         of GString (easier to bulk free later)
+
+2005-01-17  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_pixfmt_to_caps):
+         Fix BGRA32 caps (#164209).
+
+2005-01-17  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_caps_to_pixfmt):
+         alpha_mask can be RGBA/ABGR. Fixes #164265.
+
+2005-01-17  Francis Labonte  <francis_labonte@hotmail.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (crop_buffer),
+       (gst_mpeg2dec_alloc_buffer):
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         Crop if decoding size is not the actual image size (#163676).
+
+2005-01-17  Steve Baker  <steve@stevebaker.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (aiff_type_find),
+       (svx_type_find), (sds_type_find), (ircam_type_find), (plugin_init):
+         Add libsndfile typefind functions (#163309).
+
+2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * tools/gst-launch-ext-m.m:
+         Add .aac, fix .m1v/.m2v (#163891).
+
+2005-01-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsaclock.c: (gst_alsa_clock_wait):
+         Sanity check, don't wait endlessly since the clock might not
+         actually run at this point (which is a deadlock). Fixes #164069.
+
+2005-01-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (probe_triggered):
+         Of course, only pause if group is done...
+
+2005-01-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (probe_triggered):
+         Thread safety.
+
+2005-01-16  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/swfdec/gstswfdec.c: (gst_swfdec_change_state):
+         Don't return state change success when the parent
+         failed.
+
+2005-01-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavimux.c: (gst_avimux_handle_event):
+         Free events (fix memleak in #162905).
+
+2005-01-15  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_caps_to_pixfmt):
+         Fix for depth = 15. Fixes #161675.
+
+2005-01-14  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_getcaps):
+         Set FPS correctly, even for webcams and the like.
+       * sys/v4l/v4l_calls.c: (gst_v4l_set_chan_norm):
+         Don error on setting while capturing.
+
+2005-01-14  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/gstdvdec.c:
+       * gst/subparse/gstsubparse.c: (parse_mdvdsub):
+       * gst/y4m/gsty4mencode.c: (gst_y4mencode_sinkconnect):
+         I'm a bad boy. using /1001. to force C to do float division
+         and not integer division (as it did in my last commit)
+         Thanks to David I. Lehn for pointing this mistake.
+
+2005-01-14  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lelement.c: (gst_v4l_iface_supported):
+         Revert Johan´s 1.35->1.36 since it breaks compat.
+
+2005-01-14  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/gstdvdec.c:
+       * ext/libfame/gstlibfame.c:
+       * gst/subparse/gstsubparse.c: (parse_mdvdsub):
+       * gst/y4m/gsty4mencode.c: (gst_y4mencode_sinkconnect):
+          replace framerate aproximations by their real value
+          (24000/1001, 30000/1001, 60000/1001)
+          Finish fixing bug #164049
+
+2005-01-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/ogg/gstoggmux.c:
+         eos/bos debugging
+       * gst/tcp/gstmultifdsink.c:
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcp.h:
+       * gst/tcp/gsttcpclientsink.c:
+       * gst/tcp/gsttcpclientsrc.c:
+       * gst/tcp/gsttcpserversink.c:
+       * gst/tcp/gsttcpserversrc.c:
+         improve reusability of elements after state changes and errors
+         make multifdsink throw away streamheaders when receiving new ones
+
+2005-01-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_rates_probe):
+         Fix for if items are already in list...
+
+2005-01-12  Benjamin Otte  <otte@gnome.org>
+
+       * gst/adder/gstadder.c: (gst_adder_loop):
+         fix adder a bit so it doesn't screw up with events as much anymore
+
+2005-01-12  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_link),
+       (pixbufscale_scale), (gst_pixbufscale_chain):
+       * ext/gdk_pixbuf/pixbufscale.h:
+         Incorporate changes from Tim-Philipp Mueller <t.i.m@orange.net>
+         to ensure rowstrides are calculated the same way as 
+         ffmpegcolorspace
+         Use gst_buffer_stamp instead of copying TIMESTAMP manually, so
+         that we pick up duration and offset also.
+
+2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavimux.c: (gst_avimux_class_init),
+       (gst_avimux_pad_unlink), (gst_avimux_release_pad):
+         Reusability fixes.
+
+2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_update),
+       (gst_alsa_mixer_get_volume), (gst_alsa_mixer_set_volume),
+       (gst_alsa_mixer_set_mute), (gst_alsa_mixer_set_record),
+       (gst_alsa_mixer_set_option), (gst_alsa_mixer_get_option):
+         Update flags when requested.
+
+2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_rates_probe):
+         Fix dmix.
+
+2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (gst_play_base_bin_init), (gst_play_base_bin_dispose),
+       (probe_triggered), (new_decoded_pad), (gen_source_element),
+       (gst_play_base_bin_set_property), (gst_play_base_bin_get_property):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_class_init),
+       (gst_play_bin_init), (group_switch), (remove_sinks), (setup_sinks),
+       (gst_play_bin_change_state):
+         Implement group-switch signal for use in apps to clear metadata
+         cache, clean up subtitle, add suburi property instead of # hack,
+         some error-out fixes.
+
+2005-01-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+         Debug.
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_grab_frame):
+         If we got a state change in the _get handler, don't return success.
+
+2005-01-10  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_my_output_message),
+       (gst_jpegdec_my_emit_message), (gst_jpegdec_init):
+         Make jpegdec quiet on MJPEG decoding
+       * gst/asfdemux/README:
+         Fix mimetypes for MJPEG and H263
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         Fix broken code generation by gcc by swapping arguments.
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_src_query):
+         Fix \n in debug.
+
+2005-01-10  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * TODO:
+         delete this file, it is by far outdated
+       * ext/alsa/gstalsa.1: remove
+       * ext/alsa/gstalsa.c: (add_rates), (add_channels), (gst_alsa_caps),
+       (gst_alsa_check_sample_rates), (gst_alsa_rates_probe),
+       (gst_alsa_get_caps):
+         Add HW probing for supported sample rates. Fixes #161704
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
+         Don't crash, biatch! :).
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/musepack/gstmusepackreader.cpp:
+       * gst/apetag/apedemux.c: (gst_ape_demux_stream_data):
+         Some work on tags - still doesn't work in playbin...
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
+         Handle events...
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_tree):
+         Also shove tags on kid pads.
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_use_event):
+         Don't bail on unknown events.
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_chain):
+         Don't crash on events before negotiation.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
+         Send tags on pads, too.
+       * gst/playback/gststreamselector.c:
+       (gst_stream_selector_request_new_pad):
+         Forward events on first pad if no input was selected yet.
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (setup_substreams):
+         Don't disable streamtype if the stream doesn't exist, since
+         then playing a video after audio will disable both and nothing
+         will happen. Fixes the testsuite.
+
+2005-01-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lxoverlay.c: (gst_v4l_xoverlay_interface_init),
+       (gst_v4l_xoverlay_set_xwindow_id):
+       * sys/v4l2/gstv4l2xoverlay.c: (gst_v4l2_xoverlay_interface_init),
+       (gst_v4l2_xoverlay_set_xwindow_id):
+         Add debug categories, fix overlay disabling.
+
+2005-01-10  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_class_init), (gst_alsa_get_caps):
+       * ext/alsa/gstalsa.h:
+         Add HW probing for period_count/size and buffer_size MIX/MAX
+         Adjust default/user defined value if out of bounds
+         Should fix bug #162024
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event):
+         Fix warning (#161191).
+
+2005-01-09  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dvdread/stream_labels.c:
+       (dvdreadsrc_get_audio_stream_labels):
+         Fix warning (init the good variable in switch default)
+
+2005-01-09  Koop Mast  <kwm@rainbow-runner.nl>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/tta/gstttaparse.c: (gst_tta_src_event):
+         Fix gcc-2.95 compile (#163485).
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/flac/gstflacenc.c: (gst_flacenc_init),
+       (gst_flacenc_seek_callback), (gst_flacenc_write_callback),
+       (gst_flacenc_tell_callback), (gst_flacenc_chain),
+       (gst_flacenc_change_state):
+       * ext/flac/gstflacenc.h:
+         Update for API change in flac-1.1.1. Update requirement in
+         configure.ac. Fixes #162974.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (group_destroy):
+         Remove hack to get rid of assert and get rid of unlinked
+         signals properly.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (setup_source):
+         Set source to NULL so that resources are free'ed. Fixes issues
+         with playback of CDDA and similar device-accessing things.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * testsuite/embed/Makefile.am:
+         test->noinst, fix make test in buildbot.
+
+2005-01-09  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dvdread/stream_labels.c: new file
+       * ext/dvdread/stream_labels.h: new file
+       * ext/dvdread/Makefile.am:
+       * ext/dvdread/dvdreadsrc.c: (_seek_title):
+         Extract audio stream label from DVD IFO files.
+         It only dump them on the console for now, still have to
+         make playbin aware of them.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (setup_source):
+         Fix hanging subs.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_init),
+       (gen_preroll_element), (remove_groups), (setup_subtitle),
+       (gen_source_element), (setup_source):
+       * gst/playback/gstplaybasebin.h:
+         Multiple .sub files is just a stupid idea... Fix some threading
+         mistakes. Interestingly, external .sub files cause playbin to
+         hang, I don't know why... Parsing fixes contributed by François
+         Kooman <fkooman@tuxed.net>.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * testsuite/embed/Makefile.am:
+         Fix buildbot.
+
+2005-01-09  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/libpng/gstpngenc.c: (gst_pngenc_class_init),
+       (gst_pngenc_init), (gst_pngenc_chain), (gst_pngenc_get_property),
+       (gst_pngenc_set_property):
+       * ext/libpng/gstpngenc.h:
+         Add compression level property (#163323).
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * examples/capsfilter/capsfilter1.c: (main):
+       * examples/seeking/spider_seek.c: (make_spider_pipeline):
+       * ext/dvdread/Makefile.am:
+       * ext/dvdread/demo-play:
+       * ext/dvdread/demo-play.c:
+       * gconf/gstreamer.schemas.in:
+       * gst-libs/gst/gconf/gconf.c:
+       * sys/v4l/TODO:
+       * testsuite/Makefile.am:
+       * testsuite/embed/Makefile.am:
+       * testsuite/embed/embed.c: (cb_expose), (main):
+         Remove all references to xvideosink, fix examples (#140845).
+       * gst/playback/gstplaybasebin.c: (group_destroy):
+         Apparently, disposal does not unlink - so do explicitely.
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         Add debug.
+
+2005-01-09  Maciej Katafiasz <mathrick@freedesktop.org>
+
+       * README: fix PKG_CONFIG_PATH instructions, what was there
+       previously was breaking default search path, not nice. 
+       Fixes #163358
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_init),
+       (gst_audioscale_chain):
+         %#^@^#@^@#^#@^#@^@#^@#^@#^@#^#@^#@^#@^@#^#@ fix seeking
+         when resampling - how the ^@$^!@^! is this possible?!?
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state):
+         Reset variables on READY.
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_request_new_pad),
+       (gst_matroska_mux_loop):
+         Require data before writing header.
+
+2005-01-09  Francis Labonte  <francis_labonte@hotmail.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_chain):
+         Don't call mad_stream_sync() directly after recovering sync.
+         Fixes #151661.
+
+2005-01-09  Martin Eikermann  <meiker@upb.de>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/snapshot/gstsnapshot.c: (gst_snapshot_class_init),
+       (snapshot_handler), (gst_snapshot_sinkconnect),
+       (gst_snapshot_chain):
+         Allocate resources when required, fix recursive signal emission
+         and fix caps. Fixes #161667.
+
+2005-01-09  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/libpng/gstpngdec.c: (gst_pngdec_src_getcaps),
+       (gst_pngdec_chain):
+         Handle only 8-bppc (bits-per-pixel-component) images, better
+         error handling and correct strides. Fixes #163177.
+       * ext/libpng/gstpngenc.c: (gst_pngenc_sinklink),
+       (gst_pngenc_chain):
+         Better error handling. Fixes #163348.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_get_type),
+       (dvdnavsrc_uri_get_type), (dvdnavsrc_uri_get_protocols),
+       (dvdnavsrc_uri_get_uri), (dvdnavsrc_uri_set_uri),
+       (dvdnavsrc_uri_handler_init):
+         Add DVD-nav URI (dvdnav://) for Totem testing purposes.
+       * gst/playback/gstplaybasebin.c: (gen_source_element):
+         Add MMS to streaming URIs.
+
+2005-01-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_navigation_send_event):
+       * sys/xvimage/xvimagesink.c:
+       (gst_xvimagesink_navigation_send_event):
+         Check for pad availability before sending event.
+
+2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-plugins.spec.in:
+         Add subparse.
+
+2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Since we use functions from CVS, up requirement.
+
+2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/Makefile.am:
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (group_destroy), (group_commit), (group_is_muted),
+       (gen_preroll_element), (add_stream), (unknown_type),
+       (probe_triggered), (preroll_unlinked), (mute_stream),
+       (silence_stream), (new_decoded_pad), (setup_substreams),
+       (setup_source), (get_active_source), (mute_group_type),
+       (muted_group_change_state), (set_active_source),
+       (gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
+       (play_base_eos), (gst_play_base_bin_change_state):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (add_sink), (setup_sinks):
+       * gst/playback/gststreaminfo.c: (gst_stream_info_class_init),
+       (gst_stream_info_dispose), (stream_info_mute_pad),
+       (stream_info_change_state), (gst_stream_info_set_mute):
+       * gst/playback/gststreamselector.c: (gst_stream_selector_get_type),
+       (gst_stream_selector_base_init), (gst_stream_selector_class_init),
+       (gst_stream_selector_init), (gst_stream_selector_dispose),
+       (gst_stream_selector_get_linked_pad),
+       (gst_stream_selector_get_caps), (gst_stream_selector_link),
+       (gst_stream_selector_get_linked_pads),
+       (gst_stream_selector_request_new_pad), (gst_stream_selector_chain):
+       * gst/playback/gststreamselector.h:
+         Adding stream selection support plus required properties for
+         applications to use this. Fully fixes #100931.
+
+2005-01-08  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstpuzzle.c: (nav_event_handler):
+         - handle nav events differently: forward every event no matter if it
+           was handled or not.
+         - translate events
+         You can now cheat by using navigationtest ! puzzle and moving the
+         mouse close to the edge of a tile. ;)
+
+2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_new):
+       * ext/ogg/gstogmparse.c: (gst_ogm_text_parse_get_type),
+       (gst_ogm_text_parse_base_init), (gst_ogm_text_parse_init),
+       (gst_ogm_parse_get_sink_querytypes), (gst_ogm_parse_sink_convert),
+       (gst_ogm_parse_sink_query), (gst_ogm_parse_chain),
+       (gst_ogm_parse_plugin_init):
+       * ext/pango/gsttextoverlay.c: (gst_textoverlay_linkedpads),
+       (gst_textoverlay_link), (gst_textoverlay_getcaps),
+       (gst_textoverlay_event), (gst_textoverlay_video_chain),
+       (gst_textoverlay_loop), (gst_textoverlay_init), (plugin_init):
+       * ext/pango/gsttextoverlay.h:
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream),
+       (gst_matroska_demux_handle_seek_event),
+       (gst_matroska_demux_sync_streams),
+       (gst_matroska_demux_parse_blockgroup),
+       (gst_matroska_demux_subtitle_caps),
+       (gst_matroska_demux_plugin_init):
+       * gst/matroska/matroska-ids.h:
+       * gst/playback/gstdecodebin.c: (close_pad_link):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_init),
+       (gen_preroll_element), (remove_groups), (add_stream),
+       (new_decoded_pad), (setup_subtitles), (gen_source_element),
+       (setup_source):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gen_text_element), (setup_sinks):
+       * gst/subparse/Makefile.am:
+       * gst/subparse/gstsubparse.c: (gst_subparse_get_type),
+       (gst_subparse_base_init), (gst_subparse_class_init),
+       (gst_subparse_init), (gst_subparse_formats),
+       (gst_subparse_eventmask), (gst_subparse_event),
+       (gst_subparse_handle_event), (convert_encoding), (get_next_line),
+       (parse_mdvdsub), (parse_mdvdsub_init), (parse_subrip),
+       (parse_subrip_deinit), (parse_subrip_init), (parse_mpsub),
+       (parse_mpsub_deinit), (parse_mpsub_init),
+       (gst_subparse_buffer_format_autodetect),
+       (gst_subparse_format_autodetect), (gst_subparse_loop),
+       (gst_subparse_change_state), (gst_subparse_type_find),
+       (plugin_init):
+       * gst/subparse/gstsubparse.h:
+       * gst/typefind/gsttypefindfunctions.c: (ogmtext_type_find),
+       (plugin_init):
+         Add subtitle support, .sub parser (supports SRT and MPsub),
+         OGM text support, Matroska UTF-8 text support, deadlock fixes
+         all over the place, subtitle awareness in decodebin/playbin
+         and some fixes to textoverlay to handle subtitles in a stream
+         correctly. Fixes #100931.
+
+2005-01-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_src_query):
+         Check for pad availability before doing a query on it.
+
+2005-01-08  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/gstdvdec.c:
+         really fix bpp24/32 dvdec caps (classic rgba indeed)
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc):
+         don't send text tags if they are empty (bis repetita)
+
+2005-01-08  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/gstdvdec.c:
+        remove unneeded comment from dvdec
+         (related to DV 4CC codes in AVI files)
+         moved them in gstreamer/docs/random/mimetypes
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc):
+        don't send text tags if they are empty
+        fix mem leak on error path
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_pixfmt),
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/imgconvert.c: (img_get_alpha_info):
+       * gst/ffmpegcolorspace/imgconvert_template.h:
+        adds BGR32 and BGRA32 to ffmpegcolorspace
+         (still bad colors, fixing it on next commit)
+         helps with dvdec outputing BGR32
+
+2005-01-08  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/gstdvdec.c:
+        Fix audio caps i just broke (missing ',')
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_get_type),
+       (gst_matroska_mux_reset):
+        Fix typo + add FIXME about old "x-gst-metadata" crap
+
+2005-01-07  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * ext/dv/demo-play.c: (main):
+        xvideosink -> xvimagesink
+       * ext/dv/gstdvdec.c:
+        change rgb 32/32 caps to 24/32 (no alpha)
+        change nb of channels to be a list (2 or 4, not 2)
+        change sample rate to be a list (32, 44.1, 48 kHz) not a range
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc):
+        Add 'date/year' to extracted metadata list
+
+2005-01-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_fixate):
+         The return value of fixate_to does not imply that the requested
+         value was set, so don't assume.
+
+2005-01-07  Gergely Nagy  <algernon@bonehunter.rulez.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/libpng/gstpngdec.c:
+       * ext/libpng/gstpngenc.c: (gst_pngenc_base_init),
+       (gst_pngenc_sinklink), (gst_pngenc_init), (gst_pngenc_chain):
+       * ext/libpng/gstpngenc.h:
+         Alpha support (encoder; #163161), mime fixage.
+
+2005-01-07  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faac/gstfaac.c: (gst_faac_outputformat_get_type),
+       (gst_faac_class_init), (gst_faac_init), (gst_faac_srcconnect),
+       (gst_faac_set_property), (gst_faac_get_property):
+       * ext/faac/gstfaac.h:
+         Allow for ADTS output (#153434).
+
+2005-01-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_getcaps):
+         Fix against template (#150576).
+
+2005-01-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstpuzzle.c: (draw_puzzle):
+         don't draw a puzzle if either width or height of tiles would be 0.
+
+2005-01-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstpuzzle.c: (gst_puzzle_get_type),
+       (gst_puzzle_class_init), (gst_puzzle_finalize):
+         no memleaks, please
+       (gst_puzzle_create), (gst_puzzle_init),
+       (gst_puzzle_set_property), (gst_puzzle_setup):
+         change initialization code around so we don't reshuffle on resize
+       (draw_puzzle):
+         fix another stupid typo
+
+2005-01-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstvideoimage.c: (copy_hline_YUY2):
+         fix stupid typo that borked copying on YUY2
+
+2005-01-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstpuzzle.c: (draw_puzzle):
+         fix edges when image sizes aren't multiples of tile sizes
+
+2005-01-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/games/gstpuzzle.c: (gst_puzzle_base_init):
+         make RGB endianness work correctly
+       (gst_puzzle_show), (gst_puzzle_swap), (gst_puzzle_move):
+         refactor and fix race with initial shuffling
+       (nav_event_handler):
+         allow using the mouse to puzzle
+       (draw_puzzle):
+         insist on tiles having width and height as multiples of 4 to get
+         clean YUV image handling
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
+       (gst_xvimagesink_handle_xevents), (gst_xvimagesink_buffer_alloc):
+         s/DEBUG/LOG/ for common messages
+       (gst_xvimagesink_navigation_send_event):
+         fix mouse event translation to not include screen PAR
+       * sys/ximage/ximagesink.c: (gst_ximagesink_navigation_send_event):
+         fix mouse event translation to actually work
+
+2005-01-06  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc):
+        Extract TrackNumber metadata + clean up code
+       * gst/games/gstvideoimage.c: (gst_video_image_draw_rectangle):
+        Hope this is the good fix (var used unitialised)
+
+2005-01-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_chain):
+         Only increment timestamp if it's valid. Fixes raw AAC streams.
+
+2005-01-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+       * gst/games/Makefile.am:
+       * gst/games/gstpuzzle.c:
+         add a puzzle game with...
+       * gst/games/gstvideoimage.c:
+       * gst/games/gstvideoimage.h:
+         ... full colorspace support (that includes YUV9 and RGB16)) stolen
+         from videotestsrc and made into something that would be a nice
+         library for a lot of other plugins.
+
+2005-01-06  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * configure.ac:
+        don't compile faad plugin if a RC of 2.0 is found
+        Fixes #155346 (and FC1 buildbot)
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc):
+        try to make Solaris compiler happier
+
+2005-01-06  Paul Jack  <pjack@sfaf.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/snapshot/gstsnapshot.c: (gst_snapshot_class_init):
+         Fix segfault (#161667).
+
+2005-01-05  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_getcaps):
+         Fix framerate reporting.
+
+2005-01-05  Stephane LOEUILLET  <stephane.loeuillet@tiscali.fr>
+
+       * gst-libs/gst/riff/riff-ids.h:
+       * gst/wavenc/riff.h:
+        Add AMR (VBR and CBR) ids to riff.h audio codec list
+       * gst/asfdemux/gstasfdemux.c:
+       (gst_asf_demux_process_ext_content_desc),
+       (gst_asf_demux_process_object):
+         Retrieve more tags from ASF files (Genre, AlbumTitle, Artist)
+
+2005-01-05  Martin Eikermann  <meiker@upb.de>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init),
+       (gst_dvd_demux_handle_discont):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_class_init),
+       (gst_mpeg_demux_handle_discont):
+         Recreate pads on new-media (#160730).
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_new_pad):
+         Send discont even if manager changes timestamps (#161929).
+
+2005-01-05  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/resample/resample.c: (gst_resample_sinc_ft_s16):
+         Fix invalid memory access (#159211).
+
+2005-01-05  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * examples/gstplay/player.c: (main):
+         Don't iterate.
+       * examples/seeking/seek.c: (fixate), (make_playerbin_pipeline):
+         Add visualizations.
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_push),
+       (gst_a52dec_handle_frame):
+         Set duration.
+       * ext/dvdnav/gst-dvd:
+         Add audioconvert. Fixes #161325.
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_get):
+         Explicitely case to gint64. Possible valgrind error.
+       * gst-libs/gst/play/play.c: (caps_set), (setup_size),
+       (gst_play_tick_callback), (gst_play_change_state),
+       (gst_play_dispose), (gst_play_init), (gst_play_class_init),
+       (gst_play_set_location), (gst_play_get_location),
+       (gst_play_seek_to_time), (gst_play_set_data_src),
+       (gst_play_set_video_sink), (gst_play_set_audio_sink),
+       (gst_play_set_visualization), (gst_play_connect_visualization),
+       (gst_play_get_framerate), (gst_play_get_all_by_interface),
+       (gst_play_new):
+         Use playbin. Fixes #139749 and #147744.
+       * gst/apetag/apedemux.c: (gst_ape_demux_parse_tags):
+         Add genre tag.
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_method_get_type),
+       (audioscale_get_type), (gst_audioscale_base_init),
+       (gst_audioscale_class_init), (gst_audioscale_expand_caps),
+       (gst_audioscale_getcaps), (gst_audioscale_fixate),
+       (gst_audioscale_link), (gst_audioscale_get_buffer),
+       (gst_audioscale_decrease_rate), (gst_audioscale_increase_rate),
+       (gst_audioscale_init), (gst_audioscale_dispose),
+       (gst_audioscale_chain), (gst_audioscale_set_property),
+       (gst_audioscale_get_property), (plugin_init):
+         Indent properly.
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_private):
+         Fix LPCM.
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_udta),
+       (qtdemux_tag_add_str), (qtdemux_tag_add_num),
+       (qtdemux_tag_add_gnre), (qtdemux_video_caps):
+         Add more metadata (fixes #162656).
+
+2005-01-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         back to cvs
+
+=== release 0.8.7 ===
+
+2005-01-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+         releasing 0.8.7, "Hyperspace"
+
+2005-01-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       * gst/playback/gstplaybasebin.c:
+        Fix for #162924 - free caps after use, not before
+
+2005-01-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c:
+       * gst/wavparse/gstwavparse.c:
+         Fix for #154773 - fixes playback of small .wav files
+
+2005-01-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * gst/audioscale/gstaudioscale.c:
+         Fix for #162819 - make audioscale reusable
+         Fixes playback of more than one file with playbin/totem
+
+2004-12-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       * gst/ffmpegcolorspace/imgconvert.c:
+         clean up the mess that made me cry and avoid needless duplication
+
+2004-12-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/imgconvert.c:
+         give some indication of why we're segfaulting
+
+2004-12-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Fix indentation, fix v4l2 plugin detection.
+       * ext/Makefile.am:
+         Fix libmms location (Maciej, use diff -u!).
+       * ext/alsa/gstalsa.c: (gst_alsa_init):
+         Initialize caps cache to NULL.
+       * gst/playback/gstplaybin.c: (gst_play_bin_change_state):
+         Only change state on audiosink if it exists.
+
+2004-12-28  Maciej Katafiasz  <mathrick@mathrick.org>
+
+       * gst/matroska/matroska-demux.c:
+       * gst/matroska/matroska-ids.h:
+       * gst/matroska/matroska-demux.h:
+       Fix Vorbis streams failing to decode in some files, where cluster_time
+       isn't 0, because then it doesn't send codec_priv before actual data.
+       Remove time-based test and replace it with marker set on beginning of
+       new stream
+
+2004-12-28  David Schleef  <ds@schleef.org>
+
+       Merge patch from Ronald fixing problems with streaming
+       text.
+       * ext/cairo/gstcairo.c: (plugin_init):
+       * ext/cairo/gsttextoverlay.c: (gst_textoverlay_render_text),
+       (gst_text_overlay_blit_1), (gst_text_overlay_blit_sub2x2),
+       (gst_textoverlay_video_chain), (gst_textoverlay_loop),
+       (gst_textoverlay_font_init), (gst_textoverlay_init),
+       (gst_textoverlay_set_property):
+       * ext/cairo/gsttextoverlay.h:
+
+2004-12-27  David Schleef  <ds@schleef.org>
+
+       * ext/cairo/gsttextoverlay.c: (gst_textoverlay_render_text),
+       (gst_text_overlay_blit_1), (gst_text_overlay_blit_sub2x2),
+       (gst_textoverlay_video_chain), (gst_textoverlay_loop),
+       (gst_textoverlay_font_init), (gst_textoverlay_init),
+       (gst_textoverlay_set_property): Improvements to actually
+       render text as white on black outline on video, including
+       font selection and horizontal/vertical alignment.  (Ronald's
+       christmas present)
+       * ext/cairo/gsttextoverlay.h:
+
+2004-12-26  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * ext/ogg/gstogg.c:
+       * ext/ogg/gstogmparse.c:
+         fix ogm[audio/video]parse plugin registration
+         (riff won't load if bytestream is already loaded)
+
+2004-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioconvert/gstchannelmix.c:
+         fix for GLIB < 2.4
+
+2004-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * configure.ac:
+         disable docs again until it actually passes make distcheck.
+
+2004-12-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_type_get), (qtdemux_audio_caps):
+       * gst/typefind/gsttypefindfunctions.c: (q3gp_type_find),
+       (plugin_init):
+         Add 3GP (variables name Q3GP because they can't start with a
+         number). Add samr audio fourcc (used in .3gp files), decoder
+         is work in progress. Also do a GST_WARNING instead of ERROR
+         in case of unknown nodes, to decrease output.
+
+2004-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+         really fix dist
+
+2004-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/speex/gstspeexdec.h:
+       * ext/speex/gstspeexenc.h:
+         Fixes #158382.  Make speex plugin compatible with both 1.0 and 1.1.
+         Fix detection code in configure.ac
+
+2004-12-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_blockgroup):
+         Save position, so that queries give proper return values. Don't
+         know how this could ever have worked before...
+
+2004-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         Put additional LAME check inside the conditional.  Fixes #152339
+
+2004-12-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index),
+       (gst_avi_demux_stream_scan):
+         Add some more debug. Fix logic error when setting movi offset
+         while reading index.
+
+2004-12-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index),
+       (gst_avi_demux_stream_scan), (gst_avi_demux_handle_seek),
+       (gst_avi_demux_process_next_entry):
+         Add some debugging. Better detection of broken indexes and the
+         accompanying index recovery. No infinite loops on state changes
+         when we're still in our loopfunction.
+
+2004-12-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Fix up.
+
+2004-12-22  Archana Shah  <archana.shah@wipro.com>
+
+       Reviewed by:  Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+
+       * sys/sunaudio/gstsunmixer.c: (gst_sunaudiomixer_set_volume):
+         Normalizing the value before setting
+       (gst_sunaudiomixer_get_volume):
+         Normalizing the value after getting. Fixes bug# 161980
+
+2004-12-22  Christian Fredrik Kalager Schaller  <uraeus@gnome.org>
+
+       * Makefile.am: Make sure docs gets disted
+       * docs/Makefile.am: Make sure all needed files get disted
+       * gst-plugins.spec.in: latest updates
+
+2004-12-22  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_add_element):
+       Revert patch 1.38 as clock distribution over schedulers does
+       not work correcly in the core yet.
+
+2004-12-21  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * sys/oss/README: remove this file, which predates my birth
+         (and which content is by far outdated)
+
+2004-12-20  Stefan Kost  <ensonic@users.sf.net>
+
+       * Makefile.am:
+       * configure.ac:
+       * docs/Makefile.am:
+       * docs/libs/Makefile.am:
+       * docs/libs/gst-plugins-libs-docs.sgml:
+       * docs/libs/gst-plugins-libs-sections.txt:
+       * docs/libs/tmpl/gstgconf.sgml:
+       * docs/upload.mak:
+       * docs/version.entities.in:
+         Added boilerplate gtk-doc files for plugin-libs documentation.
+
+2004-12-19  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/auparse/gstauparse.c: fix int and float audio caps
+
+2004-12-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lelement.c: (gst_v4l_iface_supported):
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2_iface_supported):
+         g_assert() can be a macro, don't use #ifdef inside it.
+
+2004-12-19  Edward Hervey  <bilboed@bilboed.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_blank_data),
+       (gst_videorate_init), (gst_videorate_chain),
+       (gst_videorate_change_state):
+         Event handling (fixes #159986).
+
+2004-12-19  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         Add BLZ0 (Blizzard's version of DivX) fourcc.
+
+2004-12-18  David Schleef  <ds@schleef.org>
+
+       * gst/tta/gstttadec.c: (gst_tta_dec_link): And yet another
+       portability fix.
+
+2004-12-18  David Schleef  <ds@schleef.org>
+
+       * gst/tta/ttadec.h: Disable some header code that isn't used
+       and clearly isn't portable.
+
+2004-12-18  David Schleef  <ds@schleef.org>
+
+       * gst/ffmpegcolorspace/imgconvert.c: (get_pix_fmt_info),
+       (avcodec_get_chroma_sub_sample), (avcodec_get_pix_fmt_name),
+       (avcodec_get_pix_fmt), (avpicture_layout),
+       (avcodec_get_pix_fmt_loss), (avg_bits_per_pixel), (img_copy),
+       (get_convert_table_entry), (img_convert), (img_get_alpha_info):
+       Fix code to not use GCC extensions (and c99 extensions that
+       Forte does not like.)
+
+2004-12-19  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_link),
+       (gst_deinterlace_chain):
+         Rowstride fixes. Fixes #161039.
+       * gst/videocrop/gstvideocrop.c: (gst_video_crop_init),
+       (gst_video_crop_get_property), (gst_video_crop_add_to_struct_val),
+       (gst_video_crop_getcaps), (gst_video_crop_link),
+       (gst_video_crop_i420), (gst_video_crop_chain),
+       (gst_video_crop_change_state):
+         Rework of negotiation. Actually works now. Fixes #158650.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_ebmlnum_sint):
+         That was very stupid.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_blockgroup):
+         Fix possible crasher.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_ebmlnum_uint),
+       (gst_matroska_ebmlnum_sint), (gst_matroska_demux_parse_blockgroup):
+         Lace sizes can be zero.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/musepack/gstmusepackdec.cpp:
+         Fetch error return values. Fixes #161624.
+       * gst/apetag/apedemux.c: (gst_ape_demux_stream_data):
+         Really EOS.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index):
+         Work for truncated (unfinished download etc.) files. Fixes #160514.
+
+2004-12-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         Fix for integer overflow. Makes #156001 not crash. Probably masks
+         the real bug.
+
+2004-12-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ac3parse/gstac3parse.c: (plugin_init):
+         Parsers never have ranks. Fixes #159651.
+
+2004-12-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/playback/gstdecodebin.c: (compare_ranks):
+         make sure the facotries are ordered the same every time even if they
+         have the same rank by using the name
+       * gst/playback/gstdecodebin.c: (find_compatibles):
+         make sure we don't add factories to the list twice
+
+2004-12-16  David Schleef  <ds@schleef.org>
+
+       * configure.ac: look for musepack headers as musepack/*.h
+       (fixes #159847)
+       * ext/musepack/gstmusepackdec.h: use <musepack/*.h>
+       * ext/musepack/gstmusepackreader.h: same
+
+2004-12-17  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_auds_with_data):
+         Read extradata correctly (fixes #155879).
+
+2004-12-16  David Schleef  <ds@schleef.org>
+
+       * gst/audioscale/gstaudioscale.c: allow passthru of >2 channel
+       audio.  does _not_ attempt or allow conversion unless channels
+       is 1 or 2.
+
+2004-12-16  Christian Fredrik Kalager Schaller  <uraeus@gnome.org>
+
+       * tools/gst-launch-ext-m.m: fix mpeg and vob pipelines
+
+2004-12-16  David Schleef  <ds@schleef.org>
+
+       * gst/audioscale/gstaudioscale.c: the resample library only
+       handles 1 or 2 channels.  Change caps to compensate.
+
+2004-12-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (aac_rate_idx), (aac_profile_idx),
+       (gst_matroska_demux_audio_caps):
+         Some MPEG-AAC hacks, because else it doesn't work...
+
+2004-12-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_template_caps):
+         Add h264.
+
+2004-12-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/audio/Makefile.am:
+         Try to fix buildbot.
+
+2004-12-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gstmultifdsink.c:
+         Clean up and uniformize debugging.
+
+2004-12-16  Edward Hervey  <bilboed@bilboed.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init),
+       (gst_dvd_demux_reset), (gst_dvd_demux_change_state):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_reset),
+       (gst_mpeg_demux_change_state):
+         Reset on ready. Fixes 160276.
+
+2004-12-16  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_pad_link):
+         Fix memleak (#154815).
+
+2004-12-16  James Bowes  <bowes@cs.dal.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/musicbrainz/gsttrm.c: (gst_musicbrainz_class_init),
+       (gst_musicbrainz_init), (gst_musicbrainz_chain),
+       (gst_musicbrainz_set_property), (gst_musicbrainz_get_property):
+       * ext/musicbrainz/gsttrm.h:
+         Add support for using a proxy server when getting a trm id from
+         the MusicBrainz database (#149613).
+
+2004-12-16  Christophe Fergeau  <teuf@gnome.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstdecodebin.c: (new_pad), (close_link):
+       * gst/playback/gstplaybasebin.c: (new_decoded_pad):
+         Fix memleaks (#157233).
+
+2004-12-16  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/resample/resample.c: (gst_resample_close):
+       * gst-libs/gst/resample/resample.h:
+       * gst/audioscale/gstaudioscale.c:
+         Fix memleak (#159215).
+
+2004-12-16  Toni Willberg  <toniw@iki.fi>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosselement.c: (gst_osselement_probe_caps):
+       * sys/oss/oss_probe.c: (main):
+         Check for mono/stereo support (similar to samplerate probing),
+         fixes #159433. Also add missing copyright header to oss_probe.c.
+
+2004-12-15  David Schleef  <ds@schleef.org>
+
+       * configure.ac: add audioresample and cairo plugins.  Remove
+       HAVE_MMX stuff, because it's not used.
+       * ext/Makefile.am: same
+       * ext/audioresample/Makefile.am: You are not ready for an
+       audio resampling element based on audioresample.
+       * ext/audioresample/gstaudioresample.c:
+       * ext/audioresample/gstaudioresample.h:
+       * ext/cairo/Makefile.am: You are not ready for overlay elements
+       based on cairo.  Don't look too closely, these elements kinda
+       suck right now.
+       * ext/cairo/gstcairo.c: new
+       * ext/cairo/gsttextoverlay.c: new
+       * ext/cairo/gsttextoverlay.h: new
+       * ext/cairo/gsttimeoverlay.c: new
+       * ext/cairo/gsttimeoverlay.h: new
+       * gst-libs/gst/media-info/media-info-priv.h: fix compile
+       problem with compilers that don't support variadic macros.
+
+2004-12-15  Balamurali Viswanathan  <balamurali.viswanathan@wipro.com>
+
+       Reviewed by:  David Schleef  <ds@schleef.org>
+
+       * sys/sunaudio/gstsunaudio.c: (plugin_init):  Apply patch from
+       Bala, registering sunaudiosrc (oops!), and cleaning up code a
+       bit.  Also ran indent-gst.
+       * sys/sunaudio/gstsunaudiosrc.c: (gst_sunaudiosrc_init),
+       (gst_sunaudiosrc_change_state), (gst_sunaudiosrc_get),
+       (gst_sunaudiosrc_setparams):
+
+2004-12-14  David Schleef  <ds@schleef.org>
+
+       * gst/festival/gstfestival.c: (gst_festival_chain): Set the
+       output rate to 16000.  Should fix #160235.
+
+2004-12-14  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/typefind/gsttypefindfunctions.c: (mpeg2_sys_type_find):
+       Add typefinding for mpeg2 pes streams
+
+2004-12-13  David Schleef  <ds@schleef.org>
+
+       * configure.ac:  Applied patch from bug #143659, making default
+       sources and sinks OS-dependent (for Solaris), and added code
+       for OS/X.
+       * gconf/gstreamer.schemas.in: use OS-dependent sinks in gconf.
+
+2004-12-13  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst-libs/gst/riff/riff-media.c:
+         forgot to add h2.64 to avidemux template caps
+
+2004-12-13  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/wavenc/riff.h:
+       * gst-libs/gst/riff/riff-media.c:
+       * gst-libs/gst/riff/riff-ids.h:
+       * gst/avi/gstavimux.c
+       add 4CC code for VideoSoft h264 in AVI (VSSH)
+         fixes bug #160655
+       remove s323 from riff, it's quicktime specific :(
+
+2004-12-13  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/asfdemux/README
+       * gst/wavenc/riff.h
+       * gst-libs/gst/riff/riff-ids.h
+       * gst-libs/gst/riff/riff-media.c
+       * gst/qtdemux/qtdemux.c:
+         add new 4CC codes for h263 related codecs
+         fixes partially bug #155163
+
+2004-12-12  Christian Fredrik Kalager Schaller  <christian at fluendo dot com>
+
+       * configure.ac: Update polyaudio requirement to 0.7
+       * ext/polyp/polypsink.c: (create_stream): add patch from iain (158258)
+
+2004-12-11  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/interleave/deinterleave.c:
+       fix my name's spelling! :)
+
+2004-12-11  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * AUTHORS ChangeLog
+       * gst/auparse/gstauparse.c
+       * gst/interleave/deinterleave.c
+       * gst/law/:
+               alaw-decode.c alaw-encode.c
+               mulaw-decode.c mulaw-encode.c
+       * gst/oneton/gstoneton.c
+       * sys/osxaudio/:
+               gstosxaudioelement.c gstosxaudiosink.c gstosxaudiosrc.c
+       * sys/osxvideo/:
+               cocoawindow.h cocoawindow.m
+               osxvideosink.h osxvideosink.m
+
+       put the same mail address for Zaheer Abbas Merali everywhere
+
+2004-12-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_loop):
+         Align by packetsize, and assert that we a packet available before
+         playing. The first makes webstreams work (they often include
+         trailing padding data in a packet), the second allows pausing a
+         ASF stream in totem without getting demux errors afterwards.
+
+2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (get_relative):
+         Check for non-NULL before accessing member (end-of-chain).
+
+2004-12-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_class_init),
+       (cdparanoia_set_property), (cdparanoia_get_property):
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_class_init),
+       (dvdnavsrc_set_property), (dvdnavsrc_get_property):
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_class_init),
+       (dvdreadsrc_init), (dvdreadsrc_set_property),
+       (dvdreadsrc_get_property):
+       * sys/vcd/vcdsrc.c: (gst_vcdsrc_class_init),
+       (gst_vcdsrc_set_property), (gst_vcdsrc_get_property):
+         Synchronize property names where not yet the case. Devices are
+         now device=X, other versions are deprecated (but still exist).
+         Also use g_free() unconditionally.
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (setup_source), (gst_play_base_bin_get_property):
+         Expose source.
+
+2004-12-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: move GCONF macro outside conditional for the am
+         conditional. Fixes #160439
+
+2004-12-08  David Schleef  <ds@schleef.org>
+
+       * tools/gst-visualise-m.m: Switch to elements that currently
+       exist.
+
+2004-12-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstogmparse.c: (gst_ogm_parse_chain):
+         We love wrong commas.
+
+2004-12-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_handle_src_query):
+         Don't set DEFAULT, unsupported - makes length display incorrectly
+         in some cases.
+
+2004-12-07  Christian Fredrik Kalager Schaller  <uraeus@gnome.org>
+
+       * gst/monoscope/README: remove blurb about files being GPL
+       * gst/monoscope/gstmonoscope.c: Change license field to LGPL
+       * gst/monoscope/monoscope.c: Change license to BSD with explanation
+         monoscope is now effectively LGPL licensed
+
+2004-12-07  Christian Fredrik Kalager Schaller  <uraeus@gnome.org>
+
+       * gst/monoscope/README: Update information to be more correct
+       * gst/monoscope/convolve.c: Relicense to LGPL
+       * gst/monoscope/convolve.h: Relicense to LGPL
+
+2004-12-06  Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+         set BUFFER_DURATION to correct values (mpeg1 audio frame length is fixed)
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_link):
+         set default_duration for mpeg1 audio
+
+2004-12-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_caps), (gst_alsa_close_audio):
+       * ext/alsa/gstalsa.h:
+         refactor big chunks of the core caps negotiation code to make it
+         a lot faster, because people claim it's really slow
+         (actually, just cache the getcaps when the device is opened)
+
+2004-12-06  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_init),
+       (gst_a52dec_handle_event), (gst_a52dec_update_streaminfo),
+       (gst_a52dec_handle_frame), (gst_a52dec_chain),
+       (gst_a52dec_change_state), (plugin_init):
+       * ext/a52dec/gsta52dec.h:
+         Do something useful with timestamps. Make chain-based (since
+         there's really no reason to be loopbased).
+       * gst/avi/gstavidemux.c: (gst_avi_demux_process_next_entry):
+         Update current_byte/frame correctly.
+
+2004-12-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/apetag/apedemux.c: (gst_ape_demux_parse_tags),
+       (gst_ape_demux_stream_init):
+         Forward tags, too.
+
+2004-12-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/apetag/apedemux.c: (gst_ape_demux_stream_init):
+         Let's make sure we're done typefinding when detecting tags.
+
+2004-12-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/ebml-read.c: (gst_ebml_read_class_init),
+       (gst_ebml_read_init), (gst_ebml_read_use_event),
+       (gst_ebml_read_element_id), (gst_ebml_peek_id),
+       (gst_ebml_read_seek), (gst_ebml_read_skip),
+       (gst_ebml_read_reserve), (gst_ebml_read_buffer),
+       (gst_ebml_read_master):
+       * gst/matroska/ebml-read.h:
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_contents),
+       (gst_matroska_demux_loop_stream), (gst_matroska_demux_audio_caps):
+         Disgustingly evil hack for working around INTERRUPT events and
+         their extremely annoying habit of being a pain in the ass. We
+         simply peek a cluster before reading any of it.
+
+2004-12-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/musepack/gstmusepackdec.cpp:
+         There's also floating point libmusepacks.
+
+2004-12-03  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_chanpos_from_gst),
+       (gst_faad_chanpos_to_gst), (gst_faad_chain):
+         Set DURATION even if source buffer didn't. Also use increasing
+         timestamps.
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data):
+         Block_align can have larger values than 8192.
+
+2004-12-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/law/alaw-decode.c: (alawdec_getcaps), (alawdec_link):
+       * gst/law/alaw-encode.c: (alawenc_getcaps), (alawenc_link):
+       * gst/law/mulaw-decode.c: (mulawdec_getcaps), (mulawdec_link):
+       * gst/law/mulaw-encode.c: (mulawenc_getcaps), (mulawenc_link):
+         Fix caps.
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/v4l_calls.c: (gst_v4l_get_chan_names):
+         Fix logic bug.
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_type_find):
+         Yay, another one.
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/esd/esdsink.c: (gst_esdsink_chain):
+         Make error actually say something useful (fixes #156798).
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_template_caps):
+         Add Intel Video 5.0 fourcc (IV50).
+
+2004-12-01  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/mad/gstmad.c: (mpg123_parse_xing_header): fix xing header
+       detection on mono and stereo mp3 files.
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
+         Don't crash on EMPTY caps (e.g. when the demuxer didn't recognize
+         the contained stream).
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_srcconnect), (gst_faad_chain):
+         Oops, remove debug.
+
+2004-12-01  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/law/alaw-decode.c: (alawdec_getcaps):
+       * gst/law/mulaw-decode.c: (mulawdec_getcaps):
+         Prevent warnings when negotiating caps (fixes #159338).
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_chain):
+         Remove old leftover that shouldn't be there...
+
+2004-12-01  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_use_event):
+         Don't forward DISCONT events (fixes #159684).
+
+2004-12-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (remove_sinks), (setup_sinks):
+         Unlink manually since sometimes bin disposal (and therefore
+         pad unlinking) is delayed, which will cause a new media file
+         to not be able to start playing instantly.
+
+2004-11-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gststreaminfo.c: (stream_info_mute_pad):
+         On mute of an unlinked stream, check for pad availability so
+         we don't crash on unlinked pad.
+
+2004-11-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index),
+       (gst_avi_demux_massage_index):
+         Fix quite humiliating bug in omitting 0-sized index chunks but
+         forgetting to count them for timestamps.
+
+2004-11-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_loop):
+         Actually leave the loop if we failed to sync. Don't crash.
+
+2004-11-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_audio_stream),
+       (gst_dvd_demux_process_private):
+       * gst/mpegstream/gstdvddemux.h:
+         Fix crash (#159759). Doesn't work, though. :-(.
+
+2004-11-28  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstchannelmix.c: (gst_audio_convert_mix):
+         more overwriting protection due to modifying channels one by one
+         instead of all at once
+
+2004-11-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioconvert/gstchannelmix.c:
+       (gst_audio_convert_fill_normalize):
+         Normalize using absolute values.
+
+2004-11-28  Julien MOUTTE  <julien@moutte.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/directfb/Makefile.am:
+       * ext/directfb/directfbvideosink.c: (gst_directfbvideosink_create),
+       (gst_directfbvideosink_get_pixel_format),
+       (gst_directfbvideosink_get_format_from_fourcc),
+       (gst_directfbvideosink_fixate), (gst_directfbvideosink_getcaps),
+       (gst_directfbvideosink_sink_link),
+       (gst_directfbvideosink_change_state),
+       (gst_directfbvideosink_chain), (gst_directfbvideosink_buffer_free),
+       (gst_directfbvideosink_buffer_alloc),
+       (gst_directfbvideosink_interface_supported),
+       (gst_directfbvideosink_interface_init),
+       (gst_directfbvideosink_navigation_send_event),
+       (gst_directfbvideosink_navigation_init),
+       (gst_directfbvideosink_set_property),
+       (gst_directfbvideosink_get_property),
+       (gst_directfbvideosink_finalize), (gst_directfbvideosink_init),
+       (gst_directfbvideosink_base_init),
+       (gst_directfbvideosink_class_init),
+       (gst_directfbvideosink_get_type), (plugin_init):
+       * ext/directfb/directfbvideosink.h: Adding a first version of
+       directfbvideosink.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_init): Initializing some
+       more.
+
+2004-11-28  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstchannelmix.c: (gst_audio_convert_mix):
+         walk the samples backwards if out_channels > in_channels so we don't
+         overwrite data
+
+2004-11-28  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioconvert/Makefile.am:
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_init),
+       (gst_audio_convert_link), (gst_audio_convert_change_state),
+       (gst_audio_convert_channels):
+       * gst/audioconvert/gstchannelmix.c:
+       (gst_audio_convert_unset_matrix),
+       (gst_audio_convert_fill_identical),
+       (gst_audio_convert_fill_compatible),
+       (gst_audio_convert_detect_pos), (gst_audio_convert_fill_one_other),
+       (gst_audio_convert_fill_others),
+       (gst_audio_convert_fill_normalize),
+       (gst_audio_convert_fill_matrix), (gst_audio_convert_setup_matrix),
+       (gst_audio_convert_passthrough), (gst_audio_convert_mix):
+       * gst/audioconvert/gstchannelmix.h:
+         Implement a channel mixer.
+
+2004-11-28  Martin Soto  <martinsoto@users.sourceforge.net>
+
+       * ext/alsa/gstalsasink.c (gst_alsa_sink_loop):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsa.c (gst_alsa_set_clock):
+       Make alsasink actually honor gst_element_set_clock and use that
+       clock instead of its internal one.
+
+2004-11-27  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/playback/gstplaybasebin.c: (setup_source): fixed a caps leak
+       (gst_play_base_bin_change_state): nullify source and decoder when
+       going from READY to NULL so that we don't try to do weird stuff with
+       them when going from NULL to READY
+       * gst/playback/gstplaybin.c: (gst_play_bin_init): use gst_object_unref
+       instead of g_object_unref
+       (gen_video_element), (gen_audio_element): more refcounting fixes, now
+       it should be correct
+       (gst_play_bin_change_state): don't call remove_sinks if we are
+       currently disposing the object
+
+2004-11-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_loop):
+         Don't forget bass if it's there. Else left channel is silent...
+
+2004-11-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_loop),
+       (gst_a52dec_change_state):
+         Don't do sample adjusting anymore, we use float audio now.
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_fixate):
+         Don't fixate to non-existing properties.
+
+2004-11-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_channels),
+       (gst_a52dec_change_state):
+         Advertise that we can do surround sound.
+
+2004-11-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_reneg):
+         Add buffer-frames=0.
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_get_type),
+       (dvdreadsrc_init), (dvdreadsrc_get_event_mask),
+       (dvdreadsrc_get_query_types), (dvdreadsrc_get_formats),
+       (dvdreadsrc_srcpad_event), (dvdreadsrc_srcpad_query),
+       (_seek_title), (_seek_chapter), (get_next_cell_for), (_read),
+       (seek_sector), (dvdreadsrc_get), (dvdreadsrc_open_file),
+       (dvdreadsrc_change_state), (dvdreadsrc_uri_get_type),
+       (dvdreadsrc_uri_get_protocols), (dvdreadsrc_uri_get_uri),
+       (dvdreadsrc_uri_set_uri), (dvdreadsrc_uri_handler_init):
+       * ext/dvdread/dvdreadsrc.h:
+         Add seeking, querying for bytes, sectors, title, angle and
+         chapter. Handle multiple chapters. Relicense to LGPL because
+         Billy agreed on that (thanks Billy!).
+
+2004-11-27  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_dispose):
+       call parent dispose method
+
+2004-11-27  Martin Soto  <martinsoto@users.sourceforge.net>
+
+       * gst-libs/gst/audio/audioclock.c (gst_audio_clock_set_active)
+       (gst_audio_clock_get_internal_time):
+       Fix active <-> inactive transitions: ensure time value always
+       grows and avoid abrupt value changes.
+
+2004-11-27  Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       * configure.ac:
+       * gst/tta/Makefile.am:
+       * gst/tta/crc32.h:
+       * gst/tta/filters.h:
+       * gst/tta/gsttta.c:
+       * gst/tta/gstttadec.c:
+       * gst/tta/gstttadec.h:
+       * gst/tta/gstttaparse.c:
+       * gst/tta/gstttaparse.h:
+       * gst/tta/ttadec.h:
+         added TTA parser and decoder
+
+2004-11-26  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (probe_triggered), (check_queue), (buffer_underrun),
+       (buffer_running), (buffer_overrun), (gen_source_element),
+       (setup_source):
+       * gst/playback/gstplaybasebin.h:
+         Implement buffering. Needs some more work.
+
+2004-11-26  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         Fix ilog mask range overflow.
+
+2004-11-26  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_caps):
+         Don't omit the last (which in case of dmix is the only :) )
+         channel count. Don't set channels if <= 2.
+
+2004-11-26  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element): Removed 2 obsolete comments
+
+2004-11-26  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/vorbis/oggvorbisenc.c
+       * ext/vorbis/vorbisenc.c :
+         change description fields of those plugins to differentiate them
+         (pitivi show Encoders by description, they had the same one)
+
+2004-11-25  Christophe Fergeau  <teuf@gnome.org>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (gst_play_bin_dispose),
+       (gst_play_bin_set_property), (gen_video_element),
+       (gen_audio_element):
+         Refcounting fixes for provided audio-/videosinks.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element), (setup_sinks), (gst_play_bin_change_state):
+         Don't reference all sinks, but only the video- and audiosinks.
+         The vis. element should be disposed when we're done with it.
+         We don't have any reason to keep it around. This fixes warnings
+         when reusing playbin for playing multiple audio files with
+         vis. enabled. Also release audio device on pause - idea stolen
+         from Rhythmbox.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_channels), (gst_a52dec_push),
+       (gst_a52dec_reneg), (gst_a52dec_loop), (plugin_init):
+       * ext/alsa/gstalsa.c: (gst_alsa_get_caps):
+       * ext/alsa/gstalsaplugin.c: (plugin_init):
+       * ext/dts/gstdtsdec.c: (gst_dtsdec_channels),
+       (gst_dtsdec_renegotiate), (gst_dtsdec_loop), (plugin_init):
+       * ext/faad/gstfaad.c: (gst_faad_init), (gst_faad_chanpos_from_gst),
+       (gst_faad_chanpos_to_gst), (gst_faad_sinkconnect),
+       (gst_faad_srcgetcaps), (gst_faad_srcconnect), (gst_faad_chain),
+       (gst_faad_change_state), (plugin_init):
+       * ext/faad/gstfaad.h:
+       * ext/vorbis/vorbis.c: (plugin_init):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+       * gst-libs/gst/audio/Makefile.am:
+       * gst-libs/gst/audio/audio.c: (plugin_init):
+       * gst-libs/gst/audio/multichannel.c:
+       (gst_audio_check_channel_positions),
+       (gst_audio_get_channel_positions),
+       (gst_audio_set_channel_positions),
+       (gst_audio_set_structure_channel_positions_list),
+       (add_list_to_struct), (gst_audio_set_caps_channel_positions_list),
+       (gst_audio_fixate_channel_positions):
+       * gst-libs/gst/audio/multichannel.h:
+       * gst-libs/gst/audio/testchannels.c: (main):
+       * gst/audioconvert/gstaudioconvert.c:
+       (gst_audio_convert_class_init), (gst_audio_convert_init),
+       (gst_audio_convert_dispose), (gst_audio_convert_getcaps),
+       (gst_audio_convert_parse_caps), (gst_audio_convert_link),
+       (gst_audio_convert_fixate), (gst_audio_convert_channels):
+       * gst/audioconvert/plugin.c: (plugin_init):
+         Surround sound support.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_push):
+         Fix position for discont if we're close as well. Nitpicking, but
+         saves a few milliseconds of extra waiting or skipping.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_factory_filter):
+         We sometimes need parsers for playback, so add those too.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * gst/apetag/Makefile.am:
+       * gst/apetag/apedemux.c: (gst_ape_demux_get_type),
+       (gst_ape_demux_base_init), (gst_ape_demux_class_init),
+       (gst_ape_demux_init), (gst_ape_demux_get_src_formats),
+       (gst_ape_demux_get_src_query_types),
+       (gst_ape_demux_handle_src_query), (gst_ape_demux_get_event_mask),
+       (gst_ape_demux_handle_src_event), (gst_ape_demux_handle_event),
+       (gst_ape_demux_typefind_peek), (gst_ape_demux_typefind_get_length),
+       (gst_ape_demux_typefind_suggest), (gst_ape_demux_typefind),
+       (gst_ape_demux_parse_tags), (gst_ape_demux_stream_init),
+       (gst_ape_demux_stream_data), (gst_ape_demux_loop),
+       (gst_ape_demux_change_state):
+       * gst/apetag/apedemux.h:
+       * gst/apetag/apetag.c: (plugin_init):
+       * gst/typefind/gsttypefindfunctions.c: (apetag_type_find),
+       (plugin_init):
+         APE v1/2 tag reader plus typefind function.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_add_element):
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find):
+         Remove hacks for older core. Require newer core version
+         accordingly.
+
+2004-11-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/cdxaparse/Makefile.am:
+       * gst/cdxaparse/gstcdxaparse.c: (gst_cdxaparse_get_type),
+       (gst_cdxaparse_class_init), (gst_cdxaparse_init),
+       (gst_cdxaparse_loop), (gst_cdxaparse_change_state), (plugin_init):
+       * gst/cdxaparse/gstcdxaparse.h:
+       * gst/cdxaparse/gstcdxastrip.c: (gst_cdxastrip_get_type),
+       (gst_cdxastrip_base_init), (gst_cdxastrip_class_init),
+       (gst_cdxastrip_init), (gst_cdxastrip_get_src_formats),
+       (gst_cdxastrip_get_src_query_types),
+       (gst_cdxastrip_handle_src_query), (gst_cdxastrip_get_event_mask),
+       (gst_cdxastrip_handle_src_event), (gst_cdxastrip_strip),
+       (gst_cdxastrip_sync), (gst_cdxastrip_handle_event),
+       (gst_cdxastrip_chain), (gst_cdxastrip_change_state):
+       * gst/cdxaparse/gstcdxastrip.h:
+         SVCD/VCD header stripping separated from CDXA image parsing.
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find),
+       (plugin_init):
+         Add VCD/SVCD header typefinding for VCD/SVCD.
+       * sys/vcd/vcdsrc.c: (gst_vcdsrc_get_type), (gst_vcdsrc_base_init),
+       (gst_vcdsrc_class_init), (gst_vcdsrc_init),
+       (gst_vcdsrc_set_property), (gst_vcdsrc_get_property),
+       (gst_vcdsrc_get_event_mask), (gst_vcdsrc_get_query_types),
+       (gst_vcdsrc_get_formats), (gst_vcdsrc_srcpad_event),
+       (gst_vcdsrc_srcpad_query), (gst_vcdsrc_get),
+       (gst_vcdsrc_open_file), (gst_vcdsrc_close_file),
+       (gst_vcdsrc_change_state), (gst_vcdsrc_msf),
+       (gst_vcdsrc_recalculate), (gst_vcdsrc_uri_get_type),
+       (gst_vcdsrc_uri_get_protocols), (gst_vcdsrc_uri_get_uri),
+       (gst_vcdsrc_uri_set_uri), (gst_vcdsrc_uri_handler_init):
+       * sys/vcd/vcdsrc.h:
+         Fix up, add seeking, querying, URI interface. Works in totem now.
+
+2004-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         back to CVS
+
+=== release 0.8.6 ===
+
+2004-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/it.po:
+       * po/nb.po:
+       * po/nl.po:
+       * po/or.po:
+       * po/sq.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+         releasing 0.8.6, "IOU Love"
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c:
+         Fix unplayable files error handling.  Fixes #158365
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c:
+         Fix broken mp3 typefinding.  Fixes #158375
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c:
+         Fix sync on broken files.  Fixes #158976
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Edward Hervey <bilboed@bilboed.com>
+
+       * ext/libpng/gstpngenc.c:
+         Copy over buffer properties.  Fixes #158832
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Tim-Philipp Müller <t.i.m@zen.co.uk>
+
+       * ext/dvdread/dvdreadsrc.c:
+         Fixes invalid reads (#158462)
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c:
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4lsrc_calls.c:
+         Probe less and cache it.  Fixes #159187.
+
+2004-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videorate/gstvideorate.c:
+         Handle all video formats. Fixes #159186.
+
+2004-11-16  Jan Schmidt  <thaytan@mad.scientist.com>
+       * gst/synaesthesia/gstsynaesthesia.c:
+       (gst_synaesthesia_class_init), (gst_synaesthesia_init),
+       (gst_synaesthesia_dispose), (gst_synaesthesia_finalize),
+       (gst_synaesthesia_sink_link), (gst_synaesthesia_src_getcaps),
+       (gst_synaesthesia_src_link), (gst_synaesthesia_chain),
+       (gst_synaesthesia_change_state), (plugin_init):
+       Fix up synaesthesia to work under different samplerates/ buffer sizes.
+       Force 320x200 output, as that's the only thing the underlying
+       synaesthesia implementation supports. Still needs to be made
+       re-entrant.
+
+2004-11-14  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Fix mpeg2enc configure check (similar to mplex check below).
+
+2004-11-14  Koop Mast  <kwm@rainbow-runner.nl>
+
+       reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+         Fix for gcc-2.95 (fixes #158221).
+
+2004-11-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_add_element):
+         Re-add clock distribution hack (until new core is released).
+         Fixes #158125.
+
+2004-11-13  Arwed v. Merkatz  <v.merkatz@gmx.net>
+       * configure.ac:
+         fix mplex configure check segfaulting on some systems (bug #140994)
+
+2004-11-13  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_pcm_wait):
+         add debugging
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         do a wait when we enter the loop func with no data available to
+         write instead of getting into an 100% CPU loop by just returning and
+         being called again by the scheduler
+
+2004-11-13  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * configure.ac:
+       * ext/libvisual/visual.c: (gst_visual_get_type),
+       (libvisual_log_handler), (gst_visual_getcaps),
+       (gst_visual_srclink), (gst_visual_change_state), (make_valid_name),
+       (plugin_init):
+         Update libvisual to 0.1.7. Link in the debug handling to gstreamer
+       * ext/smoothwave/Makefile.am:
+       * ext/smoothwave/demo-osssrc.c: (main):
+       * ext/smoothwave/gstsmoothwave.c: (gst_smoothwave_class_init),
+       (gst_smoothwave_init), (gst_smoothwave_dispose), (gst_sw_sinklink),
+       (gst_sw_srclink), (gst_smoothwave_chain), (gst_sw_change_state),
+       (plugin_init):
+       * ext/smoothwave/gstsmoothwave.h:
+         Make gstsmoothwave a working element in the 20th century.
+
+       * gst/chart/gstchart.c: (gst_chart_init), (gst_chart_srcconnect):
+         Fix incorrect link function
+
+2004-11-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/volume/gstvolume.c:
+         Allow buffer-frames=0.
+
+2004-11-12 Iain <iaingnome@gmail.com>
+
+       * configure.ac: Check for polypaudio
+
+       * ext/Makefile.am: Build the polyp dir
+
+       * ext/polyp: The polypsink sources.
+
+2004-10-30 Iain <iaingnome@gmail.com>
+
+       * gst/interleave/interleave.c (interleave_unlink): Change the src pads
+       caps to reflect the new number of channels.
+
+2004-11-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         Fix for negotiation order problem. This would show when the
+         ALSA loopfuction was called before any other function. ALSA
+         wouldn't do anything because we're not negotiated yet, leading
+         to an infinite loop. Showed in e.g. Rhythmbox. Fixes #158006.
+
+2004-11-11  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_src_query):
+         No warnings (#157986).
+
+2004-11-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init):
+         Prefer apev1/2 and id3v1 (at end of file) over musepack.
+
+2004-11-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_loop_stream):
+         Signal no-more-pads (so it works in playbin).
+
+2004-11-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/musepack/gstmusepackreader.cpp:
+         Workaround for older core.
+
+2004-11-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/imgconvert.c: (yuv420p_to_yuv422):
+         Actually test for odd width/height rather than testing whether
+         a temporary variable that was 0 before we subtracted 1 is now
+         not equal to zero (which it always is).
+
+2004-11-11  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2_iface_supported):
+       Fix compilation if HAVE_XVIDEO is not defined
+
+2004-11-11  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/v4l/gstv4lelement.c: (gst_v4l_iface_supported):
+       Fix compilation if HAVE_XVIDEO is not defined
+
+2004-11-11  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst/goom/gstgoom.c: (gst_goom_class_init), (gst_goom_init),
+       (gst_goom_dispose), (gst_goom_sinkconnect), (gst_goom_chain),
+       (gst_goom_change_state), (plugin_init):
+       Use the bytestream adapter so goom doesn't depend on the input
+       buffer size.
+       Add a debug category
+
+2004-11-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state):
+         Only set hardware parameters *after* negotiation. Before
+         negotiation, it will set ANY and that seems to cause crashes
+         (see e.g. #151288, #153227).
+
+2004-11-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_get_time):
+         This seems to be antique leftover. It needs to pass error
+         checking.
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_init),
+       (gst_sdlvideosink_deinitsdl), (gst_sdlvideosink_initsdl),
+       (gst_sdlvideosink_destroy), (gst_sdlvideosink_create),
+       (gst_sdlvideosink_sinkconnect), (gst_sdlvideosink_chain):
+         Fix GstXOverlay implementation (#151059).
+
+2004-11-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
+         Don't assert (#157853).
+
+2004-11-10  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
+         Fix bytes/samples confustion.
+       (gst_alsa_sink_mmap), (gst_alsa_sink_loop):
+         Fix for underrun (#144389).
+
+2004-11-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find):
+         Disable halfway-seek for pending release (since it needs a new
+         core release).
+
+2004-11-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c:
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4lsrc_calls.c:
+         add autoprobe-fps property so we can separate autoprobing parts
+
+2004-11-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c:
+       * sys/v4l/v4lsrc_calls.c:
+       initialise fourcc to catch unset fourcc's, and debug
+
+2004-11-09  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/README:
+       * gst/playback/gstdecodebin.c: (close_pad_link), (try_to_link_1):
+       * gst/playback/gstplaybin.c: (gst_play_bin_init),
+       (gst_play_bin_dispose), (gst_play_bin_set_property),
+       (remove_sinks), (setup_sinks), (gst_play_bin_change_state),
+       (gst_play_bin_get_event_masks), (gst_play_bin_send_event),
+       (gst_play_bin_get_formats), (gst_play_bin_convert),
+       (gst_play_bin_get_query_types), (gst_play_bin_query):
+       Cleanups and some more documentation.
+
+2004-11-09  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_class_init),
+       (gst_cacasink_init), (gst_cacasink_chain):
+       * ext/libcaca/gstcacasink.h:
+       Cacasink inherits from VideoSink, so let that store the clock.
+
+2004-11-09  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/README:
+       * gst/playback/gstplaybasebin.c: (group_destroy), (group_is_muted),
+       (add_stream), (unknown_type), (add_element_stream), (no_more_pads),
+       (probe_triggered), (preroll_unlinked), (new_decoded_pad),
+       (gst_play_base_bin_change_state), (gst_play_base_bin_found_tag):
+       * gst/playback/gstplaybin.c: (gen_vis_element), (remove_sinks),
+       (setup_sinks):
+       * gst/playback/gststreaminfo.c: (gst_stream_info_set_mute),
+       (gst_stream_info_is_mute), (gst_stream_info_set_property):
+       * gst/playback/gststreaminfo.h:
+       Updated README.
+       Only switch groups if all streams have muted (EOSed).
+       Send Tags in sync with the stream playback instead of in
+       the playback/preroll phase.
+       Some cleanups, free the fakesrc elements.
+
+2004-11-09  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_caps_internal):
+         buffer-frames property was missing
+       * ext/arts/gst_arts.c:
+         rate missing from sinkcaps
+       * ext/audiofile/gstafparse.c:
+       * ext/audiofile/gstafsink.c:
+       * ext/audiofile/gstafsrc.c:
+       * ext/swfdec/gstswfdec.c:
+         int audio doesn't know buffer-frames
+       * ext/cdparanoia/gstcdparanoia.c:
+         int audio doesn't know chunksize either
+       * ext/nas/nassink.c:
+         it's endianness, not endianess
+       * gst-libs/gst/audio/audio.h:
+         make float standard pad template caps really describe float
+       * gst/law/mulaw.c: (linear_factory):
+         signed only, please
+       * gst/mpegstream/gstdvddemux.c:
+         widths of 20 are not valid
+
+2004-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       Submitted by: Luca Ferretti <elle.uca@infinito.it>
+
+       * po/LINGUAS:
+       * po/it.po:
+         Add Italian
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/README:
+       * gst/playback/gstdecodebin.c: (close_pad_link), (try_to_link_1):
+       * gst/playback/gstplaybasebin.c: (probe_triggered),
+       (gst_play_base_bin_change_state):
+       Updated README, added more comments for fixmes etc..
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_add_element):
+       We can remove this hack now.
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videomixer/videomixer.c: (gst_videomixer_blend_ayuv_ayuv),
+       (gst_videomixer_fill_checker), (gst_videomixer_fill_color),
+       (gst_videomixer_blend_buffers), (gst_videomixer_loop):
+       Only mix AYUV for maximum quality.
+
+2004-11-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (get_relative), (gst_ogg_demux_src_query),
+       (gst_ogg_demux_push), (gst_ogg_pad_push):
+         Let's act as if we're synchronized now! :).
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         Add some debug.
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/alpha/gstalpha.c: (gst_alpha_method_get_type),
+       (gst_alpha_set_property), (gst_alpha_sink_link),
+       (gst_alpha_set_ayuv), (gst_alpha_set_i420),
+       (gst_alpha_chroma_key_ayuv), (gst_alpha_chroma_key_i420),
+       (gst_alpha_init_params), (gst_alpha_chain):
+       Implement alpha functions for AYUV too, this increases
+       accuracy quite a bit.
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_caps_to_pixfmt),
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_caps_remove_format_info):
+       * gst/ffmpegcolorspace/imgconvert.c: (avpicture_get_size),
+       (shrink12), (img_get_alpha_info), (deinterlace_line),
+       (deinterlace_line_inplace):
+       * gst/ffmpegcolorspace/imgconvert_template.h:
+       Added AYUV colorspace and handle RGBA a bit more respectful.
+
+2004-11-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+         Actually always send a discont (cornercase when resending the
+         same serial-tagged chain twice).
+
+2004-11-08  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_clear),
+       (gst_ximagesink_finalize):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_clear),
+       (gst_xvimagesink_finalize): Some more cleanups, leaks fixed and checks.
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/typefind/gsttypefindfunctions.c: (aac_type_find):
+       Don't segfault on NULL data.
+
+2004-11-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (unlinked):
+       * gst/playback/gstplay-marshal.list:
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (gst_play_base_bin_init), (group_create), (get_active_group),
+       (get_building_group), (group_destroy), (group_commit),
+       (queue_overrun), (remove_groups), (add_stream), (unknown_type),
+       (add_element_stream), (no_more_pads), (probe_triggered),
+       (preroll_unlinked), (new_decoded_pad), (removed_decoded_pad),
+       (state_change), (setup_source), (gst_play_base_bin_get_property),
+       (gst_play_base_bin_change_state), (gst_play_base_bin_add_element),
+       (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_class_init),
+       (remove_sinks), (setup_sinks), (gst_play_bin_change_state):
+       Add support for chained ogg files. Prepare for playlist
+       support. This patch introduces the concept of pad groups, which
+       together compose one playable media file.
+
+2004-11-07  David Schleef  <ds@schleef.org>
+
+       * testsuite/gst-lint: Check for pad templates that aren't statically
+       scoped.
+
+2004-11-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/musepack/Makefile.am:
+       * ext/musepack/gstmusepackdec.cpp:
+       * ext/musepack/gstmusepackdec.h:
+       * ext/musepack/gstmusepackreader.cpp:
+       * ext/musepack/gstmusepackreader.h:
+         Add musepack decoder.
+       * ext/faad/gstfaad.c: (gst_faad_base_init):
+         Make pad templates static.
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find),
+       (plugin_init):
+         Add musepack typefinder, make mp3 typefinding work halfway stream,
+         which doesn't actually work yet because id3demux doesn't implement
+         _get_length().
+
+2004-11-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_queue_pads), (gst_ogg_mux_loop):
+         Fix interrupt event handling (#144436).
+
+2004-11-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_do_typefind):
+         Hide unused glory.
+
+2004-11-06  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/vorbis/vorbisenc.c: (raw_caps_factory):
+         Fix weird caps (#157548).
+
+2004-11-06  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/rtp/gstrtpgsmparse.c: (gst_rtpgsm_caps_nego):
+         Add missing NULL terminator (#157543).
+
+2004-11-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcp.h:
+       * gst/tcp/gsttcpclientsink.c:
+       * gst/tcp/gsttcpclientsrc.c:
+       * gst/tcp/gsttcpserversink.c:
+       * gst/tcp/gsttcpserversrc.c:
+         ports can go up to 65535.  Move common defines to gsttcp.h
+
+2004-11-05  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videotestsrc/videotestsrc.c: (paint_setup_Y41B),
+       (paint_hline_Y41B), (paint_setup_Y42B), (paint_hline_Y42B):
+       Added two more colorspaces.
+
+2004-11-05  Wim Taymans  <wim@fluendo.com>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/imgconvert.c: (avpicture_get_size),
+       (yuv422p_to_yuv422), (yuv420p_to_yuv422), (shrink12),
+       (img_convert), (deinterlace_line), (deinterlace_line_inplace):
+       More stride fixes.
+
+2004-11-05  Wim Taymans  <wim@fluendo.com>
+
+       * gst/alpha/gstalpha.c: (gst_alpha_set_property), (gst_alpha_add),
+       (gst_alpha_chroma_key), (gst_alpha_init_params), (gst_alpha_chain):
+       * gst/videomixer/videomixer.c: (gst_videomixer_blend_ayuv_i420),
+       (gst_videomixer_fill_checker), (gst_videomixer_blend_buffers),
+       (gst_videomixer_loop):
+       More stride fixes.
+
+2004-11-05  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstmad.c: (gst_mad_chain):
+         don't overflow data buffer. Flush not needed sync data when syncing
+         failed.
+
+2004-11-04  Wim Taymans  <wim@fluendo.com>
+
+       * gst/alpha/gstalpha.c: (gst_alpha_method_get_type),
+       (gst_alpha_class_init), (gst_alpha_init), (gst_alpha_set_property),
+       (gst_alpha_get_property), (gst_alpha_add), (gst_alpha_chroma_key),
+       (gst_alpha_init_params), (gst_alpha_chain),
+       (gst_alpha_change_state):
+       Updated the chroma keying algorithm with something more
+       sophisticated.
+
+2004-11-03  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videomixer/videomixer.c: (gst_videomixer_blend_ayuv_i420),
+       (gst_videomixer_fill_checker), (gst_videomixer_fill_color),
+       (gst_videomixer_blend_buffers), (gst_videomixer_loop):
+       Fix stride issues. Does not completely work for odd
+       heights.
+
+2004-11-03  Wim Taymans  <wim@fluendo.com>
+
+       * gst/alpha/gstalpha.c: (gst_alpha_method_get_type),
+       (gst_alpha_chroma_key), (gst_alpha_chain):
+       Fix stride issues. Does not completely work for odd
+       heights.
+
+2004-11-03  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps):
+       * gst/videoscale/videoscale.c: (videoscale_find_by_structure):
+       leak fixes
+
+2004-11-03  Wim Taymans  <wim@fluendo.com>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/imgconvert.c: (avpicture_get_size),
+       (avpicture_alloc):
+       * gst/ffmpegcolorspace/imgconvert_template.h:
+       Use correct _fill function to get correct strides.
+
+2004-11-02  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (gst_qtdemux_add_stream), (qtdemux_parse), (qtdemux_parse_tree),
+       (qtdemux_parse_udta), (qtdemux_tag_add), (gst_qtdemux_handle_esds):
+       Change all g_print()s to debugging.  Add a bunch of consistency
+       checks.
+
+2004-11-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_class_init),
+       (try_to_link_1), (get_our_ghost_pad), (remove_element_chain),
+       (unlinked), (no_more_pads), (close_link):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_init),
+       (unknown_type), (add_element_stream), (new_decoded_pad),
+       (removed_decoded_pad), (setup_source):
+       * gst/playback/gststreaminfo.c: (gst_stream_info_get_type),
+       (gst_stream_info_class_init), (gst_stream_info_init),
+       (gst_stream_info_new), (gst_stream_info_dispose),
+       (stream_info_mute_pad), (gst_stream_info_set_property),
+       (gst_stream_info_get_property):
+       * gst/playback/gststreaminfo.h:
+       Fix playback of multiple files.
+       a slightly different approach to handling dynamic pad removals.
+       This one only looks at pads that we have linked.
+
+2004-11-01  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_finalize): fix an "invalid
+       free" warning from libc.
+
+2004-11-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_class_init),
+       (get_unconnected_element), (remove_starting_from), (pad_removed),
+       (close_link):
+         Implement support for dynamic pad changing. We listen to "live"
+         pad removals (i.e. while playing) and re-setup autoplugging
+         after that. Playbasebin/playbin need some more work for this
+         to finally work, but decodebin supports (and replugs) chained
+         ogg now.
+
+2004-11-02  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_class_init), (gst_alsa_dispose),
+       (gst_alsa_finalize):
+       * ext/cdaudio/gstcdaudio.c: (gst_cdaudio_class_init),
+       (gst_cdaudio_finalize):
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_class_init),
+       (cdparanoia_finalize):
+       * ext/divx/gstdivxdec.c: (gst_divxdec_dispose):
+       * ext/divx/gstdivxenc.c: (gst_divxenc_dispose):
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_class_init),
+       (dvdreadsrc_finalize):
+       * ext/flac/gstflacdec.c: (gst_flacdec_class_init),
+       (gst_flacdec_finalize):
+       * ext/flac/gstflacenc.c: (gst_flacenc_class_init),
+       (gst_flacenc_finalize):
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_class_init),
+       (gst_gnomevfssink_finalize):
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_class_init),
+       (gst_gnomevfssrc_finalize):
+       * ext/libfame/gstlibfame.c: (gst_fameenc_class_init),
+       (gst_fameenc_finalize):
+       * ext/nas/nassink.c: (gst_nassink_class_init),
+       (gst_nassink_finalize):
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_finalize),
+       (gst_sdlvideosink_class_init):
+       * ext/sndfile/gstsf.c: (gst_sf_dispose):
+       * gst-libs/gst/mixer/mixertrack.c: (gst_mixer_track_dispose):
+       * gst-libs/gst/tuner/tunerchannel.c: (gst_tuner_channel_dispose):
+       * gst-libs/gst/tuner/tunernorm.c: (gst_tuner_norm_dispose):
+       * gst-libs/gst/xwindowlistener/xwindowlistener.c:
+       (gst_x_window_listener_dispose):
+       * gst/audioscale/gstaudioscale.c:
+       * gst/playondemand/gstplayondemand.c: (play_on_demand_class_init),
+       (play_on_demand_finalize):
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_dispose):
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_chain):
+       * sys/cdrom/gstcdplayer.c: (cdplayer_class_init),
+       (cdplayer_finalize):
+       * sys/glsink/glimagesink.c: (gst_glimagesink_finalize),
+       (gst_glimagesink_class_init):
+       * sys/oss/gstosselement.c: (gst_osselement_class_init),
+       (gst_osselement_finalize):
+       * sys/oss/gstosssink.c: (gst_osssink_dispose):
+       * sys/oss/gstosssrc.c: (gst_osssrc_dispose):
+       * sys/v4l/gstv4lelement.c: (gst_v4lelement_dispose):
+         Fixes a bunch of problems with finalize and dispose functions,
+         either assumptions that dispose is only called once, or not calling
+         the parent class dispose/finalize function
+
+2004-11-01  Stefan Kost  <ensonic@users.sf.net>
+
+       * ext/esd/esdsink.c: (gst_esdsink_init), (gst_esdsink_link):
+         added two api precondition guards
+         use g_strdup with getenv to fix crash when using ENVVAR
+
+2004-11-01  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/esd/esdsink.c: (gst_esdsink_class_init),
+       (gst_esdsink_finalize):
+       Use a finalize function, not dispose, and more importantly,
+       call the parent class finalize function too
+
+2004-11-01  Johan Dahlin  <johan@gnome.org>
+
+       * ext/ogg/gstoggdemux.c:
+       * gst/tags/gstvorbistag.c:
+       Plug leaks.
+
+2004-10-31  Benjamin Otte  <otte@gnome.org>
+
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_chain):
+         lotsa memleaks today. But they're all small...
+
+2004-10-31  Benjamin Otte  <otte@gnome.org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+         another memleak crushed
+
+2004-10-31  Benjamin Otte  <otte@gnome.org>
+
+       * gst/tags/gstvorbistag.c: (gst_tag_to_vorbis_comments):
+         fix memleak
+
+2004-10-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+         Hack to prevent crash when going to READY inside signal handler
+         while this function is active.
+
+2004-10-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/ffmpegcolorspace/Makefile.am:
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/common.h:
+       * gst/ffmpegcolorspace/dsputil.c: (dsputil_static_init):
+       * gst/ffmpegcolorspace/dsputil.h:
+       * gst/ffmpegcolorspace/gstffmpeg.c: (plugin_init):
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_get_palette), (gst_ffmpeg_set_palette),
+       (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_smpfmt_to_caps),
+       (gst_ffmpegcsp_codectype_to_caps), (gst_ffmpeg_caps_to_smpfmt),
+       (gst_ffmpeg_caps_to_pixfmt), (gst_ffmpegcsp_caps_with_codectype),
+       (gst_ffmpegcsp_avpicture_fill):
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.h:
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_caps_remove_format_info), (gst_ffmpegcsp_getcaps),
+       (gst_ffmpegcsp_pad_link), (gst_ffmpegcsp_get_type),
+       (gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
+       (gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
+       (gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
+       (gst_ffmpegcsp_get_property), (gst_ffmpegcolorspace_register):
+       * gst/ffmpegcolorspace/imgconvert.c:
+       (avcodec_get_chroma_sub_sample), (avcodec_get_pix_fmt_name),
+       (avcodec_get_pix_fmt), (avpicture_fill), (avpicture_layout),
+       (avpicture_get_size), (avcodec_get_pix_fmt_loss),
+       (avg_bits_per_pixel), (avcodec_find_best_pix_fmt1),
+       (avcodec_find_best_pix_fmt), (img_copy_plane), (img_copy),
+       (yuv422_to_yuv420p), (uyvy422_to_yuv420p), (uyvy422_to_yuv422p),
+       (yuv422_to_yuv422p), (yuv422p_to_yuv422), (yuv422p_to_uyvy422),
+       (uyvy411_to_yuv411p), (yuv420p_to_yuv422), (C_JPEG_TO_CCIR),
+       (img_convert_init), (img_apply_table), (shrink41), (shrink21),
+       (shrink12), (shrink22), (shrink44), (grow21_line), (grow41_line),
+       (grow21), (grow22), (grow41), (grow44), (conv411),
+       (gif_clut_index), (build_rgb_palette), (bitcopy_n), (mono_to_gray),
+       (monowhite_to_gray), (monoblack_to_gray), (gray_to_mono),
+       (gray_to_monowhite), (gray_to_monoblack), (avpicture_alloc),
+       (avpicture_free), (is_yuv_planar), (img_convert),
+       (get_alpha_info_pal8), (img_get_alpha_info), (deinterlace_line),
+       (deinterlace_line_inplace), (deinterlace_bottom_field),
+       (deinterlace_bottom_field_inplace), (avpicture_deinterlace):
+       * gst/ffmpegcolorspace/imgconvert_template.h:
+       * gst/ffmpegcolorspace/mem.c: (av_malloc), (av_realloc), (av_free):
+       * gst/ffmpegcolorspace/mmx.h:
+       * gst/ffmpegcolorspace/utils.c: (av_mallocz), (av_strdup),
+       (av_fast_realloc), (av_mallocz_static), (av_free_static),
+       (av_freep), (avcodec_get_context_defaults),
+       (avcodec_alloc_context), (avcodec_init):
+         Sync back from gst-ffmpeg. Deprecates ffcolorspace. Adds palette
+         handling plus update from ffmpeg CVS. Large clean-up.
+
+2004-10-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/Makefile.am:
+         We need the marshallers for decodebin, too.
+
+2004-10-30  David Schleef  <ds@schleef.org>
+
+       * gst/typefind/gsttypefindfunctions.c: (qt_type_find): Make
+         quicktime typefinding work with 64-bit offsets.
+
+2004-10-30  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_handle_sink_event):
+         Set EOS on the element when processing an EOS event.
+       * ext/speex/gstspeexdec.h:
+       * ext/speex/gstspeexenc.h:
+         Only keep a const ptr to the mode
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data),
+       (gst_riff_create_audio_template_caps):
+         Allow WMAV3, with up to 6 channels.
+       * gst/asfdemux/gstasfmux.c: (gst_asfmux_request_new_pad):
+         Don't call gst_pad_set_event_function on a sink pad.
+       * gst/mpegstream/gstdvddemux.c:
+       (gst_dvd_demux_get_subpicture_stream),
+       (gst_dvd_demux_set_cur_audio), (gst_dvd_demux_set_cur_subpicture):
+         Copy the explicit caps that were set across to the cur_* pads,
+         instead of trying to use a possibly non-existent negotiated caps.
+         Reset the type of subpicture pads to UNKNOWN after calling
+         init_stream, so that the caps get set.
+
+2004-10-29  Martin Pitt  <martin.pitt@canonical.com>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_chunk):
+         Don't touch buffer if it is of size 0 (fixes #151064).
+
+2004-10-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_push), (gst_ogg_pad_push):
+         Synchronized discont handling.
+
+2004-10-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
+       (gst_ogg_demux_push):
+         Make seeking sort-of exact again (fixes #156387).
+
+2004-10-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (unknown_type),
+       (add_element_stream), (new_decoded_pad),
+       (gst_play_base_bin_change_state):
+       * gst/playback/gststreaminfo.c: (gst_stream_info_class_init),
+       (gst_stream_info_init), (gst_stream_info_new),
+       (gst_stream_info_dispose), (gst_stream_info_get_property):
+       * gst/playback/gststreaminfo.h:
+         Make caps explicitely available. Makes testing for unsupported
+         types possible. Improves error reporting.
+
+2004-10-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/audioconvert/gstaudioconvert.c:
+       (gst_audio_convert_buffer_to_default_format):
+         Really don't touch read-only buffers (#156563).
+
+2004-10-29  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewd by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
+         Fix memleak (#155223).
+
+2004-10-29  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/.cvsignore:
+       * gst/tcp/gstmultifdsink.c: (gst_sync_method_get_type),
+       (gst_multifdsink_class_init), (gst_multifdsink_init),
+       (gst_multifdsink_add), (gst_multifdsink_remove),
+       (gst_multifdsink_remove_client_link), (is_sync_frame),
+       (gst_multifdsink_new_client),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_set_property),
+       (gst_multifdsink_get_property):
+       * gst/tcp/gstmultifdsink.h:
+       Added burst on connect sync_method, deprecated sync_clients,
+       streamlined the sync code some more.
+
+2004-10-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (thread_error), (setup_source),
+       (gst_play_base_bin_change_state):
+         Improve error reporting.
+
+2004-10-28  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/fdsetstress.c: (mess_some_more), (run_test), (main):
+       * gst/tcp/gstfdset.c: (nearest_pow), (resize), (ensure_size),
+       (gst_fdset_new), (gst_fdset_free), (gst_fdset_set_mode),
+       (gst_fdset_fd_ctl_write), (gst_fdset_fd_ctl_read),
+       (gst_fdset_fd_has_closed), (gst_fdset_fd_has_error),
+       (gst_fdset_fd_can_read), (gst_fdset_fd_can_write),
+       (gst_fdset_wait):
+       Added more locks around fdset structures. Fixed/reworked
+       the poll array resizing code.
+       Added stress test for fdset.
+
+2004-10-28  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
+       fix build
+
+2004-10-28  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link):
+         fix link function to always query channels and query width for
+         floats
+       * configure.ac:
+         add equalizer dir
+       * gst/equalizer/Makefile.am:
+       * gst/equalizer/gstiirequalizer.c: (gst_iir_equalizer_get_type),
+       (gst_iir_equalizer_base_init), (gst_iir_equalizer_class_init),
+       (gst_iir_equalizer_init), (gst_iir_equalizer_finalize),
+       (arg_to_scale), (setup_filter),
+       (gst_iir_equalizer_compute_frequencies),
+       (gst_iir_equalizer_set_property), (gst_iir_equalizer_get_property),
+       (gst_iir_equalizer_filter_inplace), (gst_iir_equalizer_setup),
+       (plugin_init):
+         add an equalizer
+
+2004-10-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       Submitted by: Kjartan Maraas <kmaraas@broadpark.no>
+
+       * po/LINGUAS:
+       * po/nb.po:
+         Added Norwegian Bokmaal translation
+
+2004-10-27  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+         Don't break on options (fixes #156488).
+
+2004-10-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/cdaudio/Makefile.am:
+       * sys/Makefile.am:
+         fix build on older automake
+
+2004-10-26  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_video_getcaps),
+       (gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop):
+       Allow a little margin when negotiating the framerate.
+
+2004-10-26  Stefan Kost  <ensonic@users.sf.net>
+
+       * gst/level/gstlevel.c:
+         synchonised naming of pads and pad-templates
+
+2004-10-26  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
+       (gst_ogg_demux_handle_event), (_find_chain_get_unknown_part),
+       (_find_streams_check), (gst_ogg_demux_push):
+       Fix EOS again. Needs to be done in a better way. We should not
+       remove the pad if there is no new chained stream.
+
+2004-10-26 Iain <iaingnome@gmail.com>
+
+       * ext/ogg/gstoggdemux.c (gst_ogg_pad_new): Free the tag list.
+       * gst/audioscale/gstaudioscale.c (gst_audioscale_link): Free the copy
+       of the caps.
+       * gst/interleave/interleave.c (interleave_class_init): Hook up release
+       pad.
+       (interleave_release_pad): Remove the pad.
+       * gst/level/gstlevel.c: Allow the level to take 1 or 2 channels.
+       * sys/sunaudio/gstsunaudio.c (gst_sunaudio_setparams): Pay attention to
+       the set device.
+       * sys/xvimage/xvimagesink.c (gst_xvimagesink_get_xv_support): Free the
+       attrs
+       (gst_xvimagesink_xcontext_clear): Free the xcontext.
+       (gst_xvimagesink_finalize): Free the par.
+
+2004-10-26  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavimux.c: (gst_avimux_audsinkconnect),
+       (gst_avimux_stop_file):
+         First calculate the rate, and only then use it. Hdr.rate is a
+         multiple and not a derivative of hdr.scale. Scale is not the
+         same as blockalign but is solely related to rate.
+
+2004-10-26  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_init),
+       (gst_gnomevfssink_handle_event), (gst_gnomevfssink_chain):
+         Implement seeking.
+
+2004-10-25  James Henstridge  <james@jamesh.id.au>
+
+       Reviewed by:  David Schleef  <ds@schleef.org>
+
+       * examples/gstplay/player.c: (got_stream_length), (main):
+       * examples/seeking/cdplayer.c: (update_scale):
+       * examples/seeking/seek.c: (format_value), (update_scale):
+       * examples/seeking/spider_seek.c: (format_value), (update_scale),
+       (stop_seek):
+       Build fixes on AMD64.
+
+2004-10-25  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       reviewed by: Ronald Bultje <rbultje at gnome dot org>
+
+       * sys/v4l/v4l_calls.c: (gst_v4l_get_chan_names):
+       Fix for some v4l cards which hang in v4lsrc
+
+2004-10-25  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_remove),
+       (gst_ogg_demux_push), (gst_ogg_chains_clear):
+       Make sure to remove the pad when a new chain is
+       encountered. Set some vars to NULL so we don't try
+       to reference freed memory.
+
+2004-10-25  Wim Taymans  <wim@fluendo.com>
+
+       * examples/seeking/Makefile.am:
+       * examples/seeking/cdplayer.c: (update_scale):
+       * examples/seeking/chained.c: (unlinked), (new_pad), (main):
+       * examples/seeking/playbin.c: (make_playerbin_pipeline),
+       (format_value), (update_scale), (iterate), (start_seek),
+       (stop_seek), (print_media_info), (play_cb), (pause_cb), (stop_cb),
+       (print_usage), (main):
+       Added some more examples, update others.
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_update_metadata):
+       * ext/speex/gstspeexdec.c: (speex_dec_chain):
+       * ext/theora/theoradec.c: (theora_dec_chain):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+         Add codec-name metadata.
+
+2004-10-25  Takao Fujiwara  <Takao.Fujiwara@Sun.COM>
+
+       Reviewd by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+       * ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
+       * ext/alsa/gstalsamixertrack.h:
+       * po/POTFILES.in:
+         ALSA mixer track label internationalization (#154054).
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         Export bitrate as metadata.
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+       * ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
+       * ext/alsa/gstalsamixertrack.h:
+         Fix names, fix loop.
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/speex/gstspeexdec.c: (gst_speex_dec_init),
+       (speex_dec_convert):
+         sinkconvert function so oggdemux can get the file length (totem).
+
+2004-10-25  James Morrison  <ja2morri@csclub.uwaterloo.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_chunk):
+         Don't push incomplete packets.
+       * gst/typefind/gsttypefindfunctions.c: (m4a_type_find):
+         Fix MPEG-4 audio typefinding.
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/Makefile.am:
+       * sys/v4l/gstv4l.c: (plugin_init):
+       * sys/v4l/gstv4lelement.c: (gst_v4lelement_get_type),
+       (gst_v4lelement_init), (gst_v4lelement_dispose),
+       (gst_v4lelement_change_state):
+       * sys/v4l/gstv4lelement.h:
+       * sys/v4l/gstv4lxoverlay.c: (gst_v4l_xoverlay_open),
+       (gst_v4l_xoverlay_close), (idle_refresh),
+       (gst_v4l_xoverlay_set_xwindow_id):
+       * sys/v4l/gstv4lxoverlay.h:
+       * sys/v4l/v4l-overlay_calls.c:
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l2/Makefile.am:
+       * sys/v4l2/gstv4l2.c: (plugin_init):
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2element_get_type),
+       (gst_v4l2element_init), (gst_v4l2element_dispose),
+       (gst_v4l2element_change_state):
+       * sys/v4l2/gstv4l2element.h:
+       * sys/v4l2/gstv4l2xoverlay.c: (gst_v4l2_xoverlay_open),
+       (gst_v4l2_xoverlay_close), (idle_refresh),
+       (gst_v4l2_xoverlay_set_xwindow_id):
+       * sys/v4l2/gstv4l2xoverlay.h:
+       * sys/v4l2/v4l2-overlay_calls.c:
+       * sys/v4l2/v4l2_calls.h:
+         Remove client-side overlay handling, use the X-server v4l plugin
+         for that. Nicer overlay, less code. Also make the plugin
+         compileable without X (but then without overlay, obviously).
+         Makes xwindowlistener obsolete, should we remove that?
+
+2004-10-25  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosssrc.c: (gst_osssrc_get_time), (gst_osssrc_get),
+       (gst_osssrc_src_query):
+       * sys/oss/gstosssrc.h:
+         OK, so people want offset in DEFAULT. This time, actually fix all
+         cases.
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_getcaps):
+         Add FPS properly.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfmux.c:
+       * gst/avi/gstavimux.c:
+         Framerate.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2element_set_property):
+         Fix properties (channel, norm, frequency).
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2element_get_property):
+         Flag typo.
+       * sys/v4l2/v4l2_calls.c: (gst_v4l2_set_defaults):
+         No warnings.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_clear_format_list):
+         Fix hang.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2element.h:
+         Yet Another Hack (tm) for kernel header borkedness.
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_init),
+       (gst_v4l2src_v4l2fourcc_to_caps), (gst_v4l2_fourcc_from_structure),
+       (gst_v4l2src_link), (gst_v4l2src_getcaps),
+       (gst_v4l2src_change_state):
+       * sys/v4l2/gstv4l2src.h:
+       * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_capture_init),
+       (gst_v4l2src_capture_start), (gst_v4l2src_capture_stop):
+         Fix caps, keep track of state, work.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_getcaps):
+         Quiet.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosssrc.c: (gst_osssrc_get):
+         Don't mix bytes and samples.
+
+2004-10-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggmux.c:
+         Basic pad template which accepts OGM tracks, speex, flac, vorbis
+         and theora. Any is incorrect.
+       * gst/asfdemux/gstasfmux.c: (gst_asfmux_vidsink_link):
+         Fix caps.
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_base_init):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_base_init),
+       (gst_v4lmjpegsrc_init), (gst_v4lmjpegsrc_srcconnect),
+       (gst_v4lmjpegsrc_getcaps), (gst_v4lmjpegsrc_change_state):
+       * sys/v4l/gstv4lmjpegsrc.h:
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_src_link), (gst_v4lsrc_getcaps),
+       (gst_v4lsrc_change_state):
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_capture_start),
+       (gst_v4lmjpegsrc_capture_stop):
+         Fix caps. Keep track of internal state. Work.
+
+2004-10-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/Makefile.am:
+         Fix the build fixes.
+
+2004-10-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (_find_chain_seek),
+       (gst_ogg_pad_push):
+         Check for pad availability before using it.
+       * ext/ogg/gstoggdemux.c: (_find_chain_process):
+         Fix parsing of chained ogg. Needs more work on the decoder side.
+
+2004-10-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/spectrum/Makefile.am:
+       * gst/spectrum/demo-osssrc.c: (spectrum_chain), (main),
+       (idle_func):
+         Fix demo and reenable it. Yes, I'm currently playing with audio
+         analysis tools
+
+2004-10-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+         We love it if files that start at zero work too...
+
+2004-10-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate):
+         Handle files with missing EOS headers.
+
+2004-10-21  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/tcp/gsttcpserversink.c:
+       (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_init_send):
+       Zero some variables first (need for accept not to return EINVAL)
+
+2004-10-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (gst_ogg_pad_push):
+       * ext/theora/theoradec.c: (theora_dec_sink_convert),
+       (theora_dec_chain):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
+       (gst_vorbis_dec_init), (vorbis_dec_convert), (vorbis_dec_chain):
+         Seeking and querying finetune.
+
+2004-10-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/raw1394/Makefile.am:
+         fix the build
+
+2004-10-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate):
+         Wrong return.
+       * gst/playback/Makefile.am:
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_class_init):
+       * gst/playback/gstplay-marshal.list:
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init):
+         Fix marshallers.
+
+2004-10-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event):
+         Silence.
+
+2004-10-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (gst_ogg_pad_populate),
+       (gst_ogg_pad_push):
+         Yay for non-lineair granulepos in theora.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_video_getcaps),
+       (gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop):
+       * ext/dv/gstdvdec.h:
+       Make sure we renegotiate aspect ratio when the camera switches.
+
+2004-10-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (gst_ogg_pad_push):
+         Start at zero.
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         Skip headers. Bad idea for chained ogg, but fixes seeking.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       I swear, this is the last time I touch this.
+
+2004-10-18  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (gst_ogg_pad_populate),
+       (_read_bos_process), (gst_ogg_demux_iterate), (gst_ogg_pad_new):
+         Faster seeking.
+       * ext/theora/theoradec.c: (theora_dec_sink_convert):
+         Time-to-default conversion.
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+         Don't error on unknown packets, just skip. We should probably
+         read them if we want to support chained ogg.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       Added cdaudio to wrong list.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       Revive cdaudio.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_video_getcaps),
+       (gst_dvdec_video_link), (gst_dvdec_push):
+       * ext/jpeg/gstsmokeenc.c: (gst_smokeenc_class_init),
+       (gst_smokeenc_resync), (gst_smokeenc_chain):
+       Fix mimetype on smoke encoder.
+       Add aspect ratio to dvdec. Not sure if these
+       values are correct though....
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_class_init):
+       Fix vorbis property descriptions and ranges.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate):
+       Really do nothing when no data is available.
+       Go to the playing state when the stream is not seekable
+       instead of failing.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/cdaudio/gstcdaudio.c: (_do_init), (gst_cdaudio_base_init),
+       (gst_cdaudio_get_event_masks), (gst_cdaudio_send_event),
+       (gst_cdaudio_query), (plugin_init), (cdaudio_uri_get_type),
+       (cdaudio_uri_get_protocols), (cdaudio_uri_get_uri),
+       (cdaudio_uri_set_uri), (cdaudio_uri_handler_init):
+       Added uri handler for cd://
+       Port to new API.
+
+2004-10-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_class_init),
+       (gst_decode_bin_init), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (no_more_pads), (close_link), (type_found):
+       * gst/playback/gstplaybasebin.c: (gen_preroll_element),
+       (remove_prerolls), (unknown_type), (add_element_stream),
+       (new_decoded_pad), (setup_source), (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_link_stream):
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_vis_element), (remove_sinks), (setup_sinks):
+       * gst/playback/gststreaminfo.c: (gst_stream_type_get_type),
+       (gst_stream_info_get_type), (gst_stream_info_class_init),
+       (gst_stream_info_init), (gst_stream_info_new),
+       (gst_stream_info_dispose), (stream_info_mute_pad),
+       (gst_stream_info_set_property), (gst_stream_info_get_property):
+       * gst/playback/gststreaminfo.h:
+       Add sink padtemplate to decodebin.
+       Added some more comments.
+       Make queue size configurable in playbasebin.
+       Added possibility to use elements as sinks (ex cdaudio).
+
+2004-10-15  Wim Taymans  <wim@fluendo.com>
+
+       * ext/speex/gstspeexenc.c: (gst_speexenc_class_init),
+       (gst_speexenc_chain):
+       Fix speex timestamps so that it gets muxed properly.
+
+2004-10-15  Wim Taymans  <wim@fluendo.com>
+
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_get_type),
+       (gst_dv1394src_base_init), (gst_dv1394src_class_init),
+       (gst_dv1394src_init), (gst_dv1394src_dispose),
+       (gst_dv1394src_iso_receive), (gst_dv1394src_discover_avc_node),
+       (gst_dv1394src_change_state), (gst_dv1394src_get_event_mask),
+       (gst_dv1394src_event), (gst_dv1394src_get_formats),
+       (gst_dv1394src_convert), (gst_dv1394src_get_query_types),
+       (gst_dv1394src_query), (gst_dv1394src_uri_get_type),
+       (gst_dv1394src_uri_get_protocols), (gst_dv1394src_uri_get_uri),
+       (gst_dv1394src_uri_set_uri), (gst_dv1394src_uri_handler_init):
+       * ext/raw1394/gstdv1394src.h:
+       Added conversion/query functions.
+       Update buffer timestamps,
+       Added signals.
+       Added uri dv:// so it might play from the firewire in playbin.
+       Fix a possible leak.
+       Added debugging.
+
+2004-10-15  Wim Taymans  <wim@fluendo.com>
+
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_class_init),
+       (gst_dv1394src_init), (gst_dv1394src_set_property),
+       (gst_dv1394src_get_property), (gst_dv1394src_iso_receive),
+       (gst_dv1394src_discover_avc_node), (gst_dv1394src_change_state):
+       * ext/raw1394/gstdv1394src.h:
+       Added AV/C VTR control support needed for some cameras.
+       Added automatic port detection.
+       Added properties for selecting the channel.
+       The configure.ac script is not yet updated to reflect the
+       new libavc1394 and librom1394 dependencies.
+
+2004-10-15  Wim Taymans  <wim@fluendo.com>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (qtdemux_parse), (gst_qtdemux_handle_esds):
+       An esds box is not a container.
+       Fix parsing of mp4v boxes.
+       Do not try to renegotiate fps for each frame. Need to
+       find a better method. This should fix mp4 playback.
+
+2004-10-14  David Schleef  <ds@schleef.org>
+
+       * configure.ac: update for swfdec-0.3 and liboil-0.2
+       * ext/swfdec/gstswfdec.c: update for swfdec-0.3
+       * ext/swfdec/gstswfdec.h: same
+       * gst/videofilter/gstvideobalance.c: update for liboil-0.2
+       * gst/videotestsrc/videotestsrc.c: same
+
+2004-10-14  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_remove_client_link),
+       (is_sync_frame), (gst_multifdsink_new_client),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_change_state):
+       Turn warnings into info.
+       Don't allow a state change in the streaming thread.
+
+2004-10-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/oggvorbisenc.c:
+       * ext/vorbis/vorbisdec.c:
+         fix template sample rate
+
+2004-10-13  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mad/gstmad.c: (gst_mad_check_caps_reset), (gst_mad_chain):
+       Decoding the header first fixes some problems in resyncing
+       in more mp3s.
+
+2004-10-12  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_vis_element), (remove_sinks), (setup_sinks):
+       Added vis plugin support, need to configure the vis
+       element to activate it.
+
+2004-10-12  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_get),
+       (gst_gnomevfssrc_srcpad_query), (gst_gnomevfssrc_srcpad_event):
+         Some debug.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_reset),
+       (gst_avi_demux_handle_src_event), (gst_avi_demux_read_superindex),
+       (gst_avi_demux_read_subindexes), (gst_avi_demux_add_stream),
+       (gst_avi_demux_stream_index), (gst_avi_demux_skip),
+       (gst_avi_demux_sync), (gst_avi_demux_stream_scan),
+       (gst_avi_demux_massage_index), (gst_avi_demux_stream_header):
+       * gst/avi/gstavidemux.h:
+         Support for openDML-2.0 indx/ix## chunks. Support for broken index
+         recovery (where, if part of the index is broken, we will still read
+         the rest of the index and recover the broken part by stream
+         scanning). More broken media support. EOS workarounds. General AVI
+         braindamage headache recovery. Aspirin included.
+
+2004-10-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_open),
+       (cdparanoia_event), (cdparanoia_query):
+         Get rid of hideous lead-in.
+
+2004-10-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (setup_source):
+       Wrong var used to get g_list_next.
+
+2004-10-11  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_class_init),
+       (cdparanoia_get), (cdparanoia_open):
+         Report discid as metadata, add duration.
+
+2004-10-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (setup_source):
+       Cleanup the previous pipeline a little earlier for the
+       case that a source element provides raw data.
+
+2004-10-11  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         reset v1 tag offset when there is no v1 tag. Fixes id3demux always
+         consuming the last 128 bytes, even though it was valid mp3 data.
+
+2004-10-10  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_palette_to_caps),
+       (gst_v4lsrc_getcaps), (gst_v4lsrc_get):
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay):
+       Change g_warnings to GST_WARNING_OBJECT and fix colourspace issue
+
+2004-10-10  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_src_link), (gst_v4lsrc_getcaps):
+       Fix for webcams that support only specific width or height
+
+2004-10-09  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_stop_file):
+         Fix wrong discont event setup (fixes #154967).
+
+2004-10-09  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/auparse/gstauparse.c: (gst_auparse_chain):
+         Error out on invalid data (fixes #154807).
+
+2004-10-09  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/dvdread/dvdreadsrc.c: (_read):
+         Make titles > 0 work again (fixes #154834).
+
+2004-10-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_template_caps):
+         WMV3 missing in template caps.
+
+2004-10-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_massage_index):
+         OK, so the original code was too strict. It makes random AVI files
+         hang for seconds upon opening, which is unacceptable and is far
+         beyond the original goal of getting multiple chunks for one-chunk
+         sounc stream files. So now do just that.
+
+2004-10-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (setup_source),
+       (gst_play_base_bin_change_state):
+         Actually clean up streaminfo if output fails. This would trigger
+         if, for example, there was no CD in the drive. No preroll, so
+         a streaminfo structure is created, but the subsequent state change
+         of the thread fails.
+       * gst/playback/gstplaybin.c: (gst_play_bin_change_state):
+         Don't change state if parent failed.
+
+2004-10-08  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (gst_play_bin_class_init),
+       (gst_play_bin_init), (gst_play_bin_get_property), (handoff),
+       (gen_video_element), (remove_sinks):
+         Add small bits of code for screenshot handling.
+
+2004-10-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybin.c: (gst_play_bin_set_property),
+       (gen_video_element), (gen_audio_element), (setup_sinks):
+       Don't assume the user provided sinks are named "sink"...
+
+2004-10-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (gen_preroll_element),
+       (unknown_type), (setup_source), (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_link_stream):
+       Do not try to autoplug sources that generate raw streams like
+       cdparanoia.
+       disconnect the preroll overrun signal when we don't need it anymore.
+
+2004-10-08  Milosz Derezynski  <internalerror.rez@fhtw-berlin.de>
+
+       * ext/cdparanoia/gstcdparanoia.c: (_do_init),
+       Added reworked patch from #154903 from milosz derezynski (deadchip).
+
+2004-10-08  Wim Taymans  <wim@fluendo.com>
+
+       * ext/cdparanoia/gstcdparanoia.c: (_do_init),
+       (cdparanoia_base_init), (cdparanoia_class_init), (cdparanoia_init),
+       (cdparanoia_dispose), (cdparanoia_get), (cdparanoia_change_state),
+       (cdparanoia_convert), (cdparanoia_uri_get_type),
+       (cdparanoia_uri_get_protocols), (cdparanoia_uri_get_uri),
+       (cdparanoia_uri_set_uri), (cdparanoia_uri_handler_init):
+       * ext/cdparanoia/gstcdparanoia.h:
+       This adds the cdda://<tracknum> uri.
+
+2004-10-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_class_init),
+       (gst_decode_bin_init), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (no_more_pads), (close_link), (type_found):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_class_init),
+       (unknown_type), (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_link_stream):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_init),
+       (gst_play_bin_set_property), (gen_video_element),
+       (gen_audio_element), (setup_sinks):
+       * gst/playback/gststreaminfo.c: (gst_stream_type_get_type),
+       (gst_stream_info_get_type), (gst_stream_info_class_init),
+       (gst_stream_info_init), (gst_stream_info_new),
+       (gst_stream_info_dispose), (stream_info_mute_pad),
+       (gst_stream_info_set_property), (gst_stream_info_get_property):
+       * gst/playback/gststreaminfo.h:
+       Reuse the audio and video bins.
+       Some internal cleanups in the stream selection code.
+
+2004-10-08  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sink_link),
+       (gst_ximagesink_set_xwindow_id), (gst_ximagesink_init):
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_set_xwindow_id), (gst_xvimagesink_init):
+       * sys/xvimage/xvimagesink.h: Reverting Ronald's changes as the issue is
+       not coming from those elements. Moreover these elements should not keep
+       the xid they have been given when in NULL state.
+
+2004-10-07  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sink_link),
+       (gst_ximagesink_set_xwindow_id), (gst_ximagesink_init):
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_set_xwindow_id), (gst_xvimagesink_init):
+       * sys/xvimage/xvimagesink.h:
+         Actually only create a new toplevel window if we're not gonna
+         embed it right after.
+
+2004-10-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (play_base_bin_mute_pad),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream):
+       * gst/playback/gstplaybin.c: (setup_sinks):
+       Implement muting/unmuting of streams, mute streams that are not
+       used.
+
+2004-10-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/typefind/gsttypefindfunctions.c: (ac3_type_find),
+       (plugin_init):
+       Added lame audio/x-ac3 typefind function.
+
+2004-10-06  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * configure.ac:
+         bump nano to cvs
+
+=== release 0.8.5 ===
+
+2004-10-06  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+         releasing 0.8.5, "Take You On"
+
+2004-10-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_init),
+       (find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
+       (no_more_pads), (close_link), (type_found):
+       * gst/playback/gstplaybasebin.c: (new_decoded_pad):
+       * gst/playback/gstplaybin.c: (gen_video_element):
+       Do not signal the no_more_pads after the first pad when
+       we are plugging a non dynamic element with multiple
+       output pads (like swfdec, dvdec, ...).
+
+2004-10-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         bump for prerelease
+
+2004-10-06  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/wavparse/gstwavparse.c:
+         add ATRAC3 to STATIC CAPS to fix a warning
+
+       * gst/matroska/ebml-read.c:
+       * gst-libs/gst/riff/riff-read.c:
+         fix typos
+
+2004-10-06  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst-libs/gst/riff/riff-media.c:
+         generate caps for ATRAC3 audio streams
+
+       * gst/realmedia/rmdemux.c:
+         generate caps for ATRAC3 audio streams
+
+2004-10-06  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/wavparse/Makefile.am
+       * gst/wavparse/riff.h
+       * gst/wavparse/wavparse.vcproj
+         riff.h removal (unused and duplication with riff-ids.h)
+
+2004-10-06  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/wavparse/gstwavparse.h
+         remove duplicated defines for audio codec codes
+
+       * gst-libs/gst/riff/riff-ids.h
+       * gst/wavenc/riff.h:
+         add "4CC" code for ATRAC3 audio streams
+         add "4CC" code for ITU_G721_ADPCM (unused for now)
+
+2004-10-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/flx/gstflxdec.c: (gst_flxdec_init), (gst_flxdec_loop):
+       Actually _do_ negotiation. Pass gdouble as arg instead
+       of guint64 for the framerate.
+
+2004-10-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_init),
+       (find_compatibles), (close_pad_link), (try_to_link_1),
+       (no_more_pads), (close_link), (type_found):
+       * gst/playback/gstplaybasebin.c: (new_decoded_pad):
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element):
+       Set state on newly added element to READY so that negotiation
+       can happen ASAP.
+       Addes some more debug info.
+       Do not try to plug pads with multiple caps structures or ANY
+       because it is too dangerous since we do not do dynamic
+       replugging.
+
+2004-10-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       written by: Gora Mohanty <gora_mohanty@yahoo.co.in>
+
+       * po/LINGUAS:
+       * po/or.po:
+         add Oriya translation
+
+2004-10-05  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_massage_index):
+         Prevent overwrite of size member. Makes audio sound crappy.
+
+2004-10-05  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init):
+       Add rmvb to the list of known RealMedia extensions
+
+2004-10-05  Wim Taymans  <wim@fluendo.com>
+
+       * ext/libmng/gstmngdec.c: (gst_mngdec_loop), (mngdec_error),
+       (mngdec_openstream), (mngdec_closestream),
+       (mngdec_handle_sink_event), (mngdec_readdata),
+       (mngdec_gettickcount), (mngdec_settimer), (mngdec_processheader),
+       (mngdec_getcanvasline), (mngdec_refresh),
+       (gst_mngdec_change_state):
+       Set the framerate correctly.
+
+2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_massage_index):
+         There was something wrong with the index massaging.
+
+2004-10-04  Wim Taymans  <wim@fluendo.com>
+
+       * ext/jpeg/gstjpeg.c: (smoke_type_find), (plugin_init):
+       * ext/jpeg/gstsmokedec.c: (gst_smokedec_init),
+       (gst_smokedec_chain):
+       * ext/jpeg/gstsmokedec.h:
+       * ext/jpeg/gstsmokeenc.c: (gst_smokeenc_class_init),
+       (gst_smokeenc_init), (gst_smokeenc_resync), (gst_smokeenc_chain):
+       * ext/jpeg/gstsmokeenc.h:
+       * ext/jpeg/smokecodec.c: (smokecodec_encode_new),
+       (smokecodec_decode_new), (smokecodec_info_free),
+       (smokecodec_set_quality), (smokecodec_get_quality),
+       (smokecodec_set_threshold), (smokecodec_get_threshold),
+       (smokecodec_set_bitrate), (smokecodec_get_bitrate),
+       (find_best_size), (abs_diff), (put), (smokecodec_encode_id),
+       (smokecodec_encode), (smokecodec_parse_id),
+       (smokecodec_parse_header), (smokecodec_decode):
+       * ext/jpeg/smokecodec.h:
+       * ext/jpeg/smokeformat.h:
+       Updated smoke, new bitstream, allows embedding in ogg.
+
+2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event):
+         Fix seeking in some files. All this code is no longer needed (and
+         actually breaks stuff) because we now synchronize the full index
+         right when reading the header.
+
+2004-10-04  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       configure update for libmng.
+
+2004-10-04  Wim Taymans  <wim@fluendo.com>
+
+       * ext/libmng/Makefile.am:
+       * ext/libmng/gstmng.c: (plugin_init):
+       * ext/libmng/gstmng.h:
+       * ext/libmng/gstmngdec.c: (gst_mngdec_get_type),
+       (gst_mngdec_base_init), (gst_mngdec_class_init),
+       (gst_mngdec_sinklink), (gst_mngdec_init), (gst_mngdec_src_getcaps),
+       (gst_mngdec_loop), (gst_mngdec_get_property),
+       (gst_mngdec_set_property), (mngdec_error), (mngdec_openstream),
+       (mngdec_closestream), (mngdec_handle_sink_event),
+       (mngdec_readdata), (mngdec_gettickcount), (mngdec_settimer),
+       (mngdec_processheader), (mngdec_getcanvasline), (mngdec_refresh),
+       (gst_mngdec_change_state):
+       * ext/libmng/gstmngdec.h:
+       * ext/libmng/gstmngenc.c: (gst_mngenc_get_type),
+       (mng_caps_factory), (raw_caps_factory), (gst_mngenc_base_init),
+       (gst_mngenc_class_init), (gst_mngenc_sinklink), (gst_mngenc_init),
+       (gst_mngenc_chain), (gst_mngenc_get_property),
+       (gst_mngenc_set_property):
+       * ext/libmng/gstmngenc.h:
+       Added basic MNG decoder. Needs more work. The encoder does
+       not work yet.
+
+2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_handle_sink_event),
+       (gst_rmdemux_loop), (gst_rmdemux_add_stream),
+       (gst_rmdemux_parse_mdpr), (gst_rmdemux_dump_mdpr):
+         Don't hang on length=0 chunks. Some negotiation fixes. Signal
+         no-more-pads.
+
+2004-10-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         you need at least 1.0.4 of speex
+
+2004-10-04 Iain <iaingnome@gmail.com>
+
+       * ext/speex/gstspeexdec.h: Revert the includes changes.
+
+       * ext/speex/gstspeexenc.[ch]: Revert the includes changes.
+
+2004-09-30 Iain <iaingnome@gmail.com>
+
+       * sys/sunaudio/gstsunaudio.c (gst_sunaudiosink_open): Use the device
+       found during init or set as a property instead of hardcoding /dev/audio
+
+2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_class_init),
+       (gst_rmdemux_init), (gst_rmdemux_handle_sink_event),
+       (gst_rmdemux_loop), (gst_rmdemux_add_stream), (re_hexdump_bytes),
+       (re_dump_pascal_string), (gst_rmdemux_dump__rmf),
+       (gst_rmdemux_dump_prop), (gst_rmdemux_parse_mdpr),
+       (gst_rmdemux_dump_mdpr), (gst_rmdemux_dump_indx),
+       (gst_rmdemux_dump_data):
+         Use debug category, fix EOS handling. filesrc ! rmdemux now
+         works.
+
+2004-10-04  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index),
+       (gst_avi_demux_stream_scan), (sort), (gst_avi_demux_massage_index),
+       (gst_avi_demux_stream_header), (gst_avi_demux_stream_data):
+         Improve allocation, cutting and sorting of the index. How takes a
+         few seconds instead of minutes.
+
+2004-10-03  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_parse_mdpr):
+         fixed compilation
+
+2004-10-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_template_caps):
+         Add wing commander format mimetype/fourccs.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_massage_index):
+         Don't crash if some value is 0.
+
+2004-10-02  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_template_caps):
+         Add DIB fourcc (raw, palettized 8-bit RGB).
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_vids_with_data):
+         Oops, fix strf_data reading bug.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
+         Use a non-NULL tag.
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):
+         Time for hacks. Sorry Dave. At least one quicktime movie (a
+         trailer) that I've encountered contains multiple video tracks.
+         One of those is the actual video track, the other are one-frame
+         tracks (images). Unfortunately, the number of frames according
+         to the trak header is 1 for each, so that doesn't help. So
+         instead, I look at the duration and discard tracks with a
+         duration shorter than 20% of the length of the stream. Better
+         than nothing.
+
+2004-10-01  Christian Schaller <christian@fluendo.com>
+
+       * ext/ivorbis/vorbis.c:
+         Patch from Phil Blundell (Bug 152341)
+
+2004-10-01  Wim Taymans  <wim@fluendo.com>
+
+       * ext/speex/gstspeexdec.c: (gst_speex_dec_class_init),
+       (speex_dec_get_formats), (speex_dec_convert),
+       (speex_dec_src_query), (speex_dec_src_event), (speex_dec_event),
+       (speex_dec_chain), (gst_speexdec_get_property),
+       (gst_speexdec_set_property):
+       Small cleanups.
+
+2004-10-01  Wim Taymans  <wim@fluendo.com>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_class_init),
+       (gst_wavparse_stream_init), (gst_wavparse_fmt),
+       (gst_wavparse_other), (gst_wavparse_loop),
+       (gst_wavparse_pad_convert), (gst_wavparse_pad_query),
+       (gst_wavparse_srcpad_event):
+       * gst/wavparse/gstwavparse.h:
+       Added some more debugging info.
+       Fix the case where the length of the file is 0.
+       Make sure we seek to sample borders.
+
+2004-10-01  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/README:
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_factory_filter),
+       (gst_decode_bin_init), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (no_more_pads), (close_link), (type_found):
+       Add some debug info to decodebin, update README
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/dvdnav/dvdnavsrc.c: (dvdnav_handle_navigation_event):
+         Don't use g_print(); use GST_DEBUG().
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_queue_pads):
+         Handle EOS properly.
+
+2004-10-01  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_init), (gst_faad_sinkconnect),
+       (gst_faad_chain), (gst_faad_change_state):
+       * ext/faad/gstfaad.h:
+         Allow playback of raw (unframed) MPEG AAC files (#148993).
+
+2004-10-01  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
+         Throw error if we didn't recognize the stream. Fixes #152289.
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_link):
+         Fix negotiation.
+
+2004-10-01  Francis Labonte  <francis_labonte@hotmail.com>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
+         Fix memleak.
+
+2004-10-01  Balamurali Viswanathan  <balamurali.viswanathan@wipro.com>
+
+       Reviewed by: Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/sunaudio/gstsunaudio.c: (gst_sunaudiosink_setparams):
+         Solve #152805.
+       * sys/sunaudio/gstsunmixer.c: (gst_sunaudiomixer_set_mute):
+         Solve 152806.
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_audio_caps_with_data):
+         Add codec_data handling (like asfdemux used to do).
+       * gst/asfdemux/gstasf.c: (plugin_init):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+       (gst_asf_demux_add_audio_stream), (gst_asf_demux_add_video_stream):
+         Use riff-media for caps creation instead of our own (mostly
+         broken) copy of its functions.
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_try_capture):
+         Don't actually error out if we get another return value than
+         -EINVAL. Opposite to what I first thought, drivers have random
+         return values for this, although -EINVAL is the expected return
+         value. Since this is not fatal, we shouldn't use
+         GST_ELEMENT_ERROR() but just GST_ERROR_OBJECT().
+
+2004-10-01  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/dvdread/dvdreadsrc.c: (dvdreadsrc_class_init),
+       (dvdreadsrc_init), (dvdreadsrc_dispose), (dvdreadsrc_set_property),
+       (dvdreadsrc_get_property), (_open), (_seek), (_read),
+       (dvdreadsrc_get), (dvdreadsrc_open_file),
+       (dvdreadsrc_change_state):
+         Fix. Don't do one big huge loop around the whole DVD, that will
+         cache all data and thus eat sizeof(dvd) (several GB) before we
+         see something.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek):
+         Actually NULL'ify event after using it.
+       * gst/matroska/ebml-read.c: (gst_ebml_read_use_event),
+       (gst_ebml_read_handle_event), (gst_ebml_read_element_id),
+       (gst_ebml_read_element_length), (gst_ebml_read_element_data),
+       (gst_ebml_read_seek), (gst_ebml_read_skip):
+         Handle events.
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init),
+       (gst_dvd_demux_init), (gst_dvd_demux_get_audio_stream),
+       (gst_dvd_demux_get_subpicture_stream), (gst_dvd_demux_plugin_init):
+         Fix timing (this will probably break if I seek using menus, but
+         I didn't get there yet). VOBs and normal DVDs should now work.
+         Add a mpeg2-only pad with high rank so this get autoplugged for
+         MPEG-2 movies.
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_base_init),
+       (gst_mpeg_demux_class_init), (gst_mpeg_demux_init),
+       (gst_mpeg_demux_new_output_pad), (gst_mpeg_demux_get_video_stream),
+       (gst_mpeg_demux_get_audio_stream),
+       (gst_mpeg_demux_get_private_stream), (gst_mpeg_demux_parse_packet),
+       (gst_mpeg_demux_parse_pes), (gst_mpeg_demux_plugin_init):
+         Use this as second rank for MPEG-1 and MPEG-2. Still use this for
+         MPEG-1 but use dvddemux for MPEG-2.
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init),
+       (gst_mpeg_parse_init), (gst_mpeg_parse_new_pad),
+       (gst_mpeg_parse_parse_packhead):
+         Timing. Only add pad template if it exists. Add sink template from
+         class and not from ourselves. This means we will always use the
+         correct sink template even if it is not the one defined in this
+         file.
+
+2004-09-29  Wim Taymans  <wim@fluendo.com>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_packet),
+       (gst_mpeg_demux_parse_pes):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
+       Fix playback of mpeg again, timestamps where screwed up by
+       patch 1.61.
+
+2004-09-29  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_src_query):
+         Only return true if we actually filled something in. Prevents
+         player applications from showing a random length for flac files.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_class_init),
+       (gst_riff_read_use_event), (gst_riff_read_handle_event),
+       (gst_riff_read_seek), (gst_riff_read_skip), (gst_riff_read_strh),
+       (gst_riff_read_strf_vids_with_data),
+       (gst_riff_read_strf_auds_with_data), (gst_riff_read_strf_iavs):
+         OK, ok, so I implemented event handling. Apparently it's normal
+         that we receive random events at random points without asking
+         for it.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_reset),
+       (gst_avi_demux_src_convert), (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_handle_src_event), (gst_avi_demux_stream_index),
+       (gst_avi_demux_sync), (gst_avi_demux_stream_scan),
+       (gst_avi_demux_massage_index), (gst_avi_demux_stream_header),
+       (gst_avi_demux_handle_seek), (gst_avi_demux_process_next_entry),
+       (gst_avi_demux_stream_data), (gst_avi_demux_loop):
+       * gst/avi/gstavidemux.h:
+         Implement non-lineair chunk handling and subchunk processing.
+         The first solves playback of AVI files where the audio and video
+         data of individual buffers that we read are not synchronized.
+         This should not happen according to the wonderful AVI specs, but
+         of course it does happen in reality. It is also a prerequisite for
+         the second. Subchunk processing allows us to cut chunks in small
+         pieces and process each of these pieces separately. This is
+         required because I've seen several AVI files with incredibly large
+         audio chunks, even some files with only one audio chunk for the
+         whole file. This allows for proper playback including seeking.
+         This patch is supposed to fix all AVI A/V sync issues.
+       * gst/flx/gstflxdec.c: (gst_flxdec_class_init),
+       (flx_decode_chunks), (flx_decode_color), (gst_flxdec_loop):
+         Work.
+       * gst/modplug/gstmodplug.cc:
+         Proper return value setting for the query() function.
+       * gst/playback/gstplaybasebin.c: (setup_source):
+         Being in non-playing state (after, e.g., EOS) is not necessarily
+         a bad thing. Allow for that. This fixes playback of short files.
+         They don't actually playback fully now, because the clock already
+         runs. This means that small files (<500kB) with a small length
+         (<2sec) will still not or barely play. Other files, such as mod
+         or flx, will work correctly, however.
+
+2004-09-28  Wim Taymans  <wim@fluendo.com>
+
+       * ext/speex/gstspeex.c: (plugin_init):
+       * ext/speex/gstspeexdec.c: (gst_speex_dec_base_init),
+       (gst_speex_dec_class_init), (speex_dec_get_formats),
+       (speex_get_event_masks), (speex_get_query_types),
+       (gst_speex_dec_init), (speex_dec_convert), (speex_dec_src_query),
+       (speex_dec_src_event), (speex_dec_event), (speex_dec_chain),
+       (gst_speexdec_get_property), (gst_speexdec_set_property),
+       (speex_dec_change_state):
+       * ext/speex/gstspeexdec.h:
+       * ext/speex/gstspeexenc.c: (gst_speexenc_get_formats),
+       (gst_speexenc_get_type), (speex_caps_factory), (raw_caps_factory),
+       (gst_speexenc_base_init), (gst_speexenc_class_init),
+       (gst_speexenc_sinkconnect), (gst_speexenc_convert_src),
+       (gst_speexenc_convert_sink), (gst_speexenc_get_query_types),
+       (gst_speexenc_src_query), (gst_speexenc_init),
+       (gst_speexenc_get_tag_value), (comment_init), (comment_add),
+       (gst_speexenc_metadata_set1), (gst_speexenc_set_metadata),
+       (gst_speexenc_setup), (gst_speexenc_buffer_from_data),
+       (gst_speexenc_push_buffer), (gst_speexenc_set_header_on_caps),
+       (gst_speexenc_chain), (gst_speexenc_get_property),
+       (gst_speexenc_set_property), (gst_speexenc_change_state):
+       * ext/speex/gstspeexenc.h:
+       Rewrote speex encoder, make sure it can be embedded in ogg.
+       Implemented speex decoder.
+
+2004-09-28  Christian Schaller <christian@fluendo.com>
+
+       * configure.ac:
+       Remove kioslave plugin. Markey is brewing a new working one
+       * ext/Makefile.am: Remove kioslave plugin
+       * ext/kio: remove
+       * gst-plugins.spec.in: remove kio plugin from spec
+
+2004-09-27  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_remove_client_link),
+       (is_sync_frame), (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_new_client),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients):
+       * gst/tcp/gstmultifdsink.h:
+       Make syncing to keyframes actually work for new clients and lagging
+       clients.
+
+2004-09-26  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/debug/gstnavigationtest.c: (gst_navigationtest_class_init),
+       (gst_navigationtest_handle_src_event), (draw_box_planar411),
+       (gst_navigationtest_planar411), (gst_navigationtest_change_state):
+       * gst/debug/gstnavigationtest.h:
+         make navigationtest display button-press and button-release events
+
+2004-09-26 Iain <iaingnome@gmail.com>
+
+       * gst/interleave/interleave.c (all_channels_new_media): Checks if all
+       the channels have received a new media event.
+       (interleave_buffered_loop): Compresses a new media event on all
+       channels into one.
+
+2004-09-26 Iain <iaingnome@gmail.com>
+
+       * gst/wavenc/gstwavenc.c (gst_wavenc_chain): Company says we need to
+       call the sinkpad's default event handler and not the srcpads. He also
+       says this is confusing :)
+       (gst_wavenc_stop_file): Company says that seek events only go upstream
+       we should send a discontinuous downstream instead.
+
+2004-09-25  Christian Schaller <christian@fluendo.com>
+
+       * Update SPEC file to be usable in conjunction with Fedora Core,
+         Fedora.us and freshrpms packages
+       * Fix typo in multifilesrc test Makefile
+
+2004-09-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (new_decoded_pad):
+       Only signal the no_more_pads signal when we have
+       added the stream to our list.
+
+2004-09-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (remove_prerolls),
+       (new_decoded_pad):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (setup_sinks):
+       Don't try to preroll or decode more than one audio/video
+       track.
+
+2004-09-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
+         Throw error if we failed to find a suitable output. This should
+         throw an error if we successfully set up a pipeline (e.g. because
+         we recognized a media file) but found no decodable streams in it
+         (e.g. because it contains only media stream types for which we
+         have no decoders, or because it's not a media type).
+
+2004-09-23  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/dirac/Makefile.am:
+       * ext/dirac/gstdirac.cc:
+       * ext/dirac/gstdiracdec.cc:
+       * ext/dirac/gstdiracdec.h:
+         Do something. Don't actually know if this works because I don't
+         have a demuxer yet.
+       * ext/gsm/gstgsmdec.c: (gst_gsmdec_getcaps):
+         Add channels=1 to caps returned from _getcaps().
+       * ext/ogg/gstogmparse.c: (gst_ogm_audio_parse_get_type),
+       (gst_ogm_video_parse_get_type), (gst_ogm_audio_parse_base_init),
+       (gst_ogm_video_parse_base_init), (gst_ogm_parse_init),
+       (gst_ogm_audio_parse_init), (gst_ogm_video_parse_init),
+       (gst_ogm_parse_sink_convert), (gst_ogm_parse_chain),
+       (gst_ogm_parse_change_state):
+         Separate between audio/video so ogmaudioparse actually uses the
+         audio pad templates. Both audio and video work now, including
+         autoplugging. Also use sometimes-srcpad hack.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek):
+         Handle events better. Don't hang on infinite loops.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_class_init),
+       (gst_avi_demux_init), (gst_avi_demux_reset),
+       (gst_avi_demux_src_convert), (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_stream_header), (gst_avi_demux_stream_data),
+       (gst_avi_demux_change_state):
+       * gst/avi/gstavidemux.h:
+         Improve A/V sync. Still not perfect.
+       * gst/matroska/ebml-read.c: (gst_ebml_read_seek),
+       (gst_ebml_read_skip):
+         Handle events better.
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event),
+       (gst_qtdemux_loop_header), (qtdemux_parse_trak),
+       (qtdemux_audio_caps):
+         Add IMA4. Improve event handling. Save offset after a seek when
+         the headers are at the end of the file so that we don't end up in
+         an infinite loop.
+       * gst/typefind/gsttypefindfunctions.c: (qt_type_find):
+         Add low-priority typefind support for files with no length.
+
+2004-09-23  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * testsuite/multifilesink/Makefile.am:
+       fix typo
+
+2004-09-22  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_destroy):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls): Fix
+       mistakes from thaytan's patches.
+
+2004-09-23  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_destroy):
+         For completeness, XSync in the destroy function as xvimage does.
+
+2004-09-23  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_getcaps):
+          Correct caps negotiation
+       * gst/volume/gstvolume.c: (volume_chain_float),
+       (volume_chain_int16):
+          Modify debug output to be little more informative
+       * sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_destroy):
+         Add XSync calls after detaching from the shared memory segment to
+         avoid a crash.
+
+2004-09-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_init),
+       (gst_ogg_mux_next_buffer), (gst_ogg_mux_loop):
+       * ext/vorbis/vorbis.c: (plugin_init):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_init),
+       (gst_vorbisenc_chain):
+       * ext/vorbis/vorbisenc.h:
+       remove explicit newmedia support from oggmux and vorbisenc
+       add debug category to vorbisenc
+       * gst/multifilesink/gstmultifilesink.c:
+       (gst_multifilesink_class_init), (gst_multifilesink_init),
+       (gst_multifilesink_dispose), (gst_multifilesink_set_location),
+       (gst_multifilesink_set_property), (gst_multifilesink_next_file),
+       (gst_multifilesink_handle_event), (gst_multifilesink_chain),
+       (plugin_init):
+       * gst/multifilesink/gstmultifilesink.h:
+       add support for streamheader in multifilesink
+
+2004-09-22  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (_read_var_length), (_read_guid),
+       (gst_asf_demux_process_segment), (gst_asf_demux_handle_data),
+       (gst_asf_demux_process_chunk), (gst_asf_demux_handle_sink_event):
+         Prevent infinite loops. More correct error reporting.
+       * gst/auparse/gstauparse.c: (gst_auparse_chain):
+         Error out if negotiation fails.
+       * gst/playback/gstplaybasebin.c: (setup_source),
+       (gst_play_base_bin_change_state), (gst_play_base_bin_error),
+       (gst_play_base_bin_found_tag):
+         Error/tag forwarding. Pre-roll fixes for source errors on state
+         changes (e.g. "file does not exist") to prevent hangs.
+
+2004-09-21  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * testsuite/multifilesink/Makefile.am:
+       * testsuite/multifilesink/lame_test.c: (gst_newmedia_base_init),
+       (gst_newmedia_class_init), (gst_newmedia_init),
+       (gst_newmedia_chain), (gst_newmedia_trigger), (test_format),
+       (newfile_signal), (test_signal), (main):
+       * testsuite/multifilesink/multifilesrc_test.c: (main):
+       * testsuite/multifilesink/oggtheora_test.c:
+       (gst_newmedia_base_init), (gst_newmedia_class_init),
+       (gst_newmedia_init), (gst_newmedia_chain), (gst_newmedia_trigger),
+       (test_format), (newfile_signal), (test_signal), (main):
+       * testsuite/multifilesink/oggvorbis_test.c:
+       (gst_newmedia_base_init), (gst_newmedia_class_init),
+       (gst_newmedia_init), (gst_newmedia_chain), (gst_newmedia_trigger),
+       (test_format), (newfile_signal), (test_signal), (main):
+       * testsuite/multifilesink/wavenc_test.c: (gst_newmedia_base_init),
+       (gst_newmedia_class_init), (gst_newmedia_init),
+       (gst_newmedia_chain), (gst_newmedia_trigger), (test_format),
+       (newfile_signal), (test_signal), (main):
+       New media tests
+
+2004-09-20  Christian Schaller <christian@fluendo.com>
+
+       * Fix mikmod license to LGPL as they have relicensed
+       * Move Dirac and Effectv into LGPL section of README_license
+
+2004-09-20  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_check_caps_reset),
+       (gst_mad_change_state):
+         Allow for mp3 rate/channels changes. However, only very
+         conservatively. Reason that we *have* to enable this is smiply
+         because the mad find_sync() function is not good enough, it will
+         regularly sync on random data as valid frames and therefore make
+         us provide random caps as *final* caps of the stream. The best fix
+         I could think of is to simply require several of the same stream
+         changes in a row before we change caps.
+         The actual testcase that works now is #
+       * ext/ogg/Makefile.am:
+       * ext/ogg/gstogg.c: (plugin_init):
+       * ext/ogg/gstogmparse.c:
+         OGM support (video only for now; I need an audio sample file).
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+       (gst_asf_demux_process_stream), (gst_asf_demux_video_caps),
+       (gst_asf_demux_add_video_stream):
+         WMV extradata.
+       * gst/playback/gstplaybasebin.c: (unknown_type):
+         Don't error out on single unknown-types after all. It's wrong.
+         If we found type of video and audio but not of a subtitle stream,
+         it will still error out (which is unwanted). Will find a better fix
+         later on.
+       * gst/typefind/gsttypefindfunctions.c: (ogmvideo_type_find),
+       (ogmaudio_type_find), (plugin_init):
+         OGM support.
+
+2004-09-20  Johan Dahlin  <johan@gnome.org>
+
+       * ext/jpeg/gstjpegdec.c (gst_jpegdec_chain): Allocate the buffer
+       after setting caps.
+
+2004-09-19  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_init), (gst_wavenc_chain):
+       * gst/wavenc/gstwavenc.h:
+       Added newmedia support to wavenc
+
+2004-09-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (gst_fdset_fd_has_closed),
+       (gst_fdset_fd_has_error), (gst_fdset_fd_can_read),
+       (gst_fdset_fd_can_write), (gst_fdset_wait):
+       * gst/tcp/gstmultifdsink.c: (gst_client_status_get_type),
+       (gst_multifdsink_init), (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_get_stats),
+       (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_handle_clients),
+       (gst_multifdsink_close), (gst_multifdsink_change_state):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
+       (gst_tcpserversink_removed):
+       Small cleanups in fdset.c
+       Use a hastable to map fd to the client structure for faster
+       lookup in _remove and get_stats.
+       Added virtual function to close the fds.
+       Handle clients even when the select/poll call was unblocked because
+       of a command.
+       Implement syncing to keyframe in the recovery procedure.
+
+2004-09-16 Iain <iaingnome@gmail.com>
+
+       * gst/audioconvert/gstaudioconvert.c (_fixate_caps_to_int): Free the
+       try caps.
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_get_audio_stream):
+         Caps are only set if the type of the stream is unknown, but this
+         is initialized in ->init_stream(), so set to UNKNOWN after calling
+         ->init_stream() so that capsnego starts.
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_stream_data):
+         Just hardcode for raw audio then. AVI audio sucks.
+
+2004-09-15  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps):
+       * gst/matroska/matroska-mux.c: (audiosink_templ),
+       (gst_matroska_mux_audio_pad_link):
+       * gst/typefind/gsttypefindfunctions.c: (tta_caps), (plugin_init):
+       Use audio/x-ttafile for tta files and audio/x-tta for raw tta frames.
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_stream_data):
+         Try to fix a/v sync issues.
+
+2004-09-15  David Schleef  <ds@schleef.org>
+
+       * configure.ac: remove NASM check, since we don't use it.  Update
+       dirac check to 0.4
+       * ext/dirac/gstdiracdec.cc: update to current 0.4 API
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+       Initialized variables.
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_loop_header), (qtdemux_parse), (qtdemux_parse_trak),
+       (gst_qtdemux_handle_esds), (qtdemux_audio_caps): Fix seeking, add
+       SVQ3 format
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_add_stream), (gst_avi_demux_stream_data):
+       * gst/avi/gstavidemux.h:
+         Fix for compressed audio (mp3) timestamp generation. How did this
+         ever work?
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_property):
+         Volume is a double not a float.
+
+2004-09-15  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_change_state):
+       Don't close the fd in multifdsink as we didn't open it in the
+       first place. Some cleanups.
+
+2004-09-15  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
+       Fix the case where the muxer would mark pages as delta
+       frames when they are not (vorbis only ogg).
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c: (state_change), (setup_source),
+       (gst_play_base_bin_change_state):
+         Handle the case where we failed to setup a clear pipeline. This
+         will throw an error (or EOS, another nice case) and if you don't
+         catch that, the app will wait for the signal forever (and thus
+         hang).
+
+2004-09-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssink.c:
+       (gst_gnomevfssink_uri_get_protocols):
+       * ext/gnomevfs/gstgnomevfssrc.c:
+       (gst_gnomevfssrc_uri_get_protocols):
+       * ext/gnomevfs/gstgnomevfsuri.c: (gst_gnomevfs_get_supported_uris):
+       * ext/gnomevfs/gstgnomevfsuri.h:
+         Use _uri_new() instead of _open(), so it doesn't take as long and
+         Christophe's computer won't hang.
+       * gst/playback/gstplaybasebin.c: (unknown_type):
+         Throw error on unknown media type, so apps actually display it.
+
+2004-09-14  Brian Cameron  <brian.cameron@sun.com
+
+       * tools/gst-launch-ext-m.m:  Changed ~ to $ENV{HOME} to allow
+         this script to work on Solaris since bash shell handles echo
+         differenly than bash.
+
+2004-09-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstplaybasebin.c: (queue_overrun), (no_more_pads),
+       (setup_source), (gst_play_base_bin_set_property),
+       (gst_play_base_bin_add_element):
+       * gst/playback/gstplaybin.c: (gst_play_bin_send_event):
+       Some more work on making sure seeking pauses the pipeline and
+       that changing the uri actually does something.
+
+2004-09-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (gst_fdset_wait):
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_close):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_init_send),
+       (gst_tcpserversink_close):
+       Be a bit more paranoid when freeing memory.
+
+2004-09-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream),
+       (qtdemux_parse_trak):
+         Don't crash by dividing by zero (see sample movie in #126922).
+
+2004-09-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_audio_caps):
+         Don't touch non-existing data (fixes crash on file in #140147).
+
+2004-09-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/playback/gstplaybasebin.c:
+       (gst_play_base_bin_dispose), (gst_play_base_bin_set_property):
+         Handle double disposals, and proper change of URIs.
+
+2004-09-13  Martin Eikermann <meiker@upb.de>
+
+       * gst/mpegstream/gstmpegparse.c:
+         fix synchronistation for streams recorded from digital PCR
+         fixes bug #119376
+
+2004-09-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/Makefile.am:
+       * ext/gnomevfs/gstgnomevfs.c: (plugin_init):
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_get_type),
+       (gst_gnomevfssink_dispose), (gst_gnomevfssink_init),
+       (gst_gnomevfssink_uri_get_type),
+       (gst_gnomevfssink_uri_get_protocols),
+       (gst_gnomevfssink_uri_get_uri), (gst_gnomevfssink_uri_set_uri),
+       (gst_gnomevfssink_uri_handler_init),
+       (gst_gnomevfssink_set_property), (gst_gnomevfssink_get_property),
+       (gst_gnomevfssink_open_file), (gst_gnomevfssink_close_file):
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_get_type),
+       (gst_gnomevfssrc_init), (gst_gnomevfssrc_dispose),
+       (gst_gnomevfssrc_uri_get_type),
+       (gst_gnomevfssrc_uri_get_protocols), (gst_gnomevfssrc_uri_get_uri),
+       (gst_gnomevfssrc_uri_set_uri), (gst_gnomevfssrc_uri_handler_init),
+       (gst_gnomevfssrc_set_property), (gst_gnomevfssrc_get_property),
+       (gst_gnomevfssrc_open_file), (gst_gnomevfssrc_close_file):
+       * ext/gnomevfs/gstgnomevfsuri.c: (gst_gnomevfs_get_supported_uris):
+       * ext/gnomevfs/gstgnomevfsuri.h:
+         Add URI support to Gnome-VFS plugins. Tries to load a fixed list
+         of fake URIs to see which this version of Gnome-VFS likes, and
+         uses that for the Gst-URI interface. Makes playbin support http://
+         streams. Also fix up some stupid behaviour in gnomevfssrc.
+
+2004-09-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_update),
+       (gst_alsa_mixer_get_volume), (gst_alsa_mixer_set_volume),
+       (gst_alsa_mixer_set_mute), (gst_alsa_mixer_set_record),
+       (gst_alsa_mixer_set_option), (gst_alsa_mixer_get_option):
+         Update mixer (to sync with other sessions) if we try to obtain
+         a new value. This makes alsamixer work accross applications.
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_get_time):
+         Only call sync functions if we're running, else alsalib asserts.
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query):
+         Sometimes fails to compile. Possibly a gcc bug.
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element):
+         Add a reference to an application-provided object, because we lose
+         this same reference if we add it to the bin. If we don't do this,
+         we can only use this object once and thus crash if we go from
+         ready to playing, back to ready and back to playing again.
+         Also add an audioscale element because several cheap soundcards -
+         like mine - don't support all samplerates.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get),
+       (gst_ximagesink_xcontext_clear), (gst_ximagesink_change_state):
+         Fix wrong order or PAR calls. Makes automatically obtained PAR
+         from the X server atually being used.
+
+2004-09-12  David Schleef  <ds@schleef.org>
+
+       Fixes: #151879, #151881, #151882, #151883, #151884, #151886,
+       #151887, #152102, #152247.
+       * examples/indexing/indexmpeg.c: 64-bit warning fixes.
+       * examples/seeking/cdparanoia.c: same
+       * examples/seeking/cdplayer.c: same
+       * examples/seeking/seek.c: same
+       * examples/seeking/spider_seek.c: same
+       * examples/seeking/vorbisfile.c: same
+       * examples/stats/mp2ogg.c: same
+       * ext/esd/esdsink.c: (gst_esdsink_class_init),
+       (gst_esdsink_dispose): Dispose of element properly.
+       * ext/ivorbis/vorbisfile.c: (gst_ivorbisfile_seek): 64-bit warning
+       fixes.
+       * ext/nas/nassink.c: (gst_nassink_class_init),
+       (gst_nassink_dispose): Dispose of element correctly.
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_chain): Fix leak.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
+       (gst_ximagesink_ximage_new), (gst_ximagesink_ximage_destroy):
+       Fix 64-bit warning.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy):
+       Fix 64-bit warning.
+
+2004-09-12  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * configure.ac : change speex detection as 1.1.6 now uses
+         .pc/pkg-config and they changed their headers location.
+
+2004-09-09  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       * gst/matroska/matroska-mux.h:
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
+       (gst_matroska_mux_start), (gst_matroska_mux_finish),
+       (gst_matroska_mux_write_data):
+         Write multiple blocks/frames per cluster.
+               Write meta-seek information (seek heads).
+
+2004-09-09  Scott Wheeler <wheeler@kde.org>
+
+       * gst/gstplaybin.c: (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_set_property), (gst_play_bin_get_property),
+       (gen_audio_element), (gen_audio_element):
+         Add a volume element / property to the pipeline.
+
+2004-09-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videomixer/videomixer.c: (gst_videomixer_blend_buffers):
+       Copy timestamps from the master pad to the output buffers.
+
+2004-09-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/raw1394/gstdv1394src.c:
+         throw errors when applicable
+
+2004-09-01  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       * gst/matroska/ebml-ids.h:
+       * gst/matroska/ebml-read.c: (gst_ebml_read_date):
+       * gst/matroska/ebml-write.c: (gst_ebml_write_date):
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_finish):
+         automatically convert unix time <-> ebml time when reading/writing
+         a date, use gst_ebml_write_uint to write CUETIME,
+         not gst_ebml_write_date.
+       * gst/matroska/matroska-ids.h:
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_create_uid),
+       (gst_matroska_mux_reset), (gst_matroska_mux_audio_pad_link),
+       (gst_matroska_mux_track_header), (gst_matroska_mux_start),
+       (gst_matroska_mux_write_data):
+         Write track and segment UIDs, write muxing date, write
+         TRACKDEFAULTDURATION for TTA audio, write BLOCKDURATION if known.
+         Create cues for audio only files.
+
+2004-08-31  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+       * ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
+         Re-commit ALSA switches.
+       * gst/adder/gstadder.c: (gst_adder_loop):
+         64-bit fix (#151416).
+       * gst/debug/progressreport.c: (gst_progressreport_report):
+         64-bit fix (#151419).
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_contents):
+         64-bit fix (#151420).
+       * gst/playback/test3.c: (update_scale):
+         64-bit fix (#151421).
+
+2004-08-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         bump nano to cvs
+
+=== release 0.8.4 ===
+
+2004-08-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: releasing 0.8.4, "Alias"
+
+2004-08-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/theora/Makefile.am:
+         fix makefile.  Fixes #151462.
+
+2004-08-30  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (gst_fdset_free), (gst_fdset_wait):
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_add),
+       (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write):
+       * gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_init_send):
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_init_receive):
+       Fix some memory leaks.
+
+2004-08-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       Patch by: David Schleef
+
+       * configure.ac:
+       * sys/Makefile.am:
+         rename our detection macro for V4L2.  Fixes #151236.
+
+2004-08-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       Patch by: David Schleef
+
+       * configure.ac:
+         check to define LAMEPRESET.  Fixes #151232.
+
+2004-08-27  David Schleef  <ds@schleef.org>
+
+       * sys/glsink/glimagesink.c: (gst_glimagesink_ximage_put),
+       (gst_glimagesink_xwindow_new), (gst_glimagesink_xcontext_get),
+       (gst_glimagesink_fixate):  Move local variable declarations to
+       make gcc-2.95 happy.
+
+2004-08-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         bump nano for prerelease
+
+2004-08-27  David Schleef  <ds@schleef.org>
+
+       * sys/sunaudio/Makefile.am: Add sunaudiosrc patch from Bala
+       * sys/sunaudio/gstsunaudiosrc.c:
+       * sys/sunaudio/gstsunaudiosrc.h:
+
+2004-08-27 Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       * gst/matroska/ebml-read.c: (gst_ebml_peed_id), (gst_ebml_read_element_id),
+       handle EOS correctly
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_link):
+       * gst/matroska/matroska-mux.h:
+       added BITMAPINFOHEADER structure, mux video/x-divx and video/x-xvid in
+       VFW compatibility mode
+
+2004-08-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Zaheer Abbas Merali
+
+       * ext/ogg/gstoggmux.c:
+       * ext/vorbis/vorbisenc.c:
+       * ext/vorbis/vorbisenc.h:
+         handle NEWMEDIA
+
+2004-08-26 Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       * gst/matroska/ebml-write.c: (gst_ebml_write_float),
+       fix byte order reversion on little endian machines.
+       * gst/matroska/matroska-mux.c: (audiosink_templ),
+       (gst_matroska_mux_audio_pad_link):
+       add TTA codec to the list of supported codecs.
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_init),
+       (gst_matroska_mux_start), (gst_matroska_mux_finish),
+       (gst_matroska_mux_write_data):
+       * gst/matroska/matroska-mux.h:
+       write segment duration correctly, write muxing app string, fixes bugs
+       #140897 and #140898.
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_loop),
+       wait for all pads to be negotiated before starting to mux.
+
+2004-08-26  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_init), (gst_lame_chain):
+       * ext/lame/gstlame.h:
+       Added new media support to lame
+
+2004-08-25 Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_blockgroup),
+       send vorbis headers at the beginning of a stream, fixes bug #141554.
+       Interpret BLOCKDURATION and set buffer duration accordingly, fixes
+       bug #148950.
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps),
+       (gst_matroska_demux_plugin_init):
+       * gst/matroska/matroska-ids.h:
+       enable demuxing of TTA audio streams, fixes bug #148951.
+       * gst/typefind/gsttypefindfunctions.c: (tta_type_find), (plugin_init),
+       enable typefinding for TTA audio files, fixes bug #148711.
+       * ext/xvid/gstxviddec.c: (gst_xviddec_chain),
+       set XVID_LOWDELAY flag for decoding so xvid always returns an image,
+       fixes playback of packed bitstream and xvid with bframes, bug #135407.
+
+2004-08-24  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head),
+       (gst_riff_read_element_data), (gst_riff_read_seek),
+       (gst_riff_read_skip): fix infinite loop in wavparse, fixes bug
+       #144616, patch reviewed by Ronald and committed by Christophe Fergeau
+       <teuf@gnome.org>
+
+2004-08-23 Iain <iaingnome@gmail.com>
+
+       * ext/mad/gstid3tag.c (gst_mad_id3_to_tag_list): Special case COMM
+       tags. They appear to be handled differently to normal.
+       (tag_list_to_id3_tag_foreach): Ditto.
+
+2004-08-22  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
+       Make sure we never send -1 granulepos.
+
+2004-08-20  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_loop):
+       I will accept bitchslappings with non sharp objects.
+
+2004-08-20  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       Clean up the test for lame presets
+
+2004-08-19  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       * ext/lame/Makefile.am:
+       * ext/lame/gstlame.c: (gst_lame_class_init),
+       (gst_lame_set_property), (gst_lame_get_property), (gst_lame_setup):
+       Only enable lame presets if version of lame has presets in API
+
+2004-08-19  Jan Schmidt  <thaytan@mad.scientist.com>
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_init), (gst_udpsrc_get):
+       * gst/udp/gstudpsrc.h:
+         Don't call gst_pad_push in a get function. Fixes #150449
+
+2004-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (gst_fdset_free), (gst_fdset_set_mode),
+       (gst_fdset_get_mode), (gst_fdset_add_fd), (gst_fdset_remove_fd),
+       (gst_fdset_fd_ctl_write), (gst_fdset_fd_ctl_read),
+       (gst_fdset_fd_has_closed), (gst_fdset_fd_has_error),
+       (gst_fdset_fd_can_read), (gst_fdset_fd_can_write),
+       (gst_fdset_wait):
+       * gst/tcp/gstfdset.h:
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_add),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write):
+       * gst/tcp/gstmultifdsink.h:
+       Some extra checks in gstfdset.
+       Only use send() when the fd is a socket. Don't try to
+       read from write only fds.
+
+2004-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (gst_fdset_add_fd), (gst_fdset_remove_fd),
+       (gst_fdset_fd_ctl_write), (gst_fdset_fd_ctl_read),
+       (gst_fdset_fd_has_closed), (gst_fdset_fd_has_error),
+       (gst_fdset_fd_can_read), (gst_fdset_fd_can_write),
+       (gst_fdset_wait):
+       Add more locking and bounds checking.
+
+2004-08-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (ensure_size), (gst_fdset_wait):
+       Realloc test fdset in the lock and right before starting
+       the poll call. Bump the limit to 4096.
+
+2004-08-17  David Schleef  <ds@schleef.org>
+
+       * sys/sunaudio/Makefile.am:
+       * sys/sunaudio/gstsunaudio.c: Fix caps to handle full range
+       of rates and channels.  Make debugging less obnoxious.
+
+       Patch from Balamurali Viswanathan implementing a mixer for
+       Sun audio.  (bug #144091):
+       * sys/sunaudio/gstsunelement.c:
+       * sys/sunaudio/gstsunelement.h:
+       * sys/sunaudio/gstsunmixer.c:
+       * sys/sunaudio/gstsunmixer.h:
+
+2004-08-17  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/audioscale/gstaudioscale.c:
+       * gst/audioscale/gstaudioscale.h:
+       made audioscale resample from any sample rate to any sample rate
+
+2004-08-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/libpng/gstpngdec.c:
+         error out on unsupported types
+
+2004-08-17  Iain <iaingnome@gmail.com>
+
+       * ext/flac/gstflacenc.c (gst_flacenc_update_quality): Only set the
+       mid_side and loose_mid_side properties if its a stereo stream.
+
+2004-08-17  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (gst_theora_dec_class_init),
+       (theora_get_formats), (theora_dec_src_convert),
+       (theora_dec_sink_convert), (theora_dec_src_query),
+       (theora_dec_src_event), (theora_dec_event), (theora_dec_chain):
+       Add a debug line.
+
+2004-08-17  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_iterate),
+       (gst_ogg_pad_push):
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_init),
+       (gst_ogg_mux_request_new_pad), (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_buffer_from_page), (gst_ogg_mux_push_page),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
+       Mark delta units in the muxer.
+       Try to decode the packet after an out-of-sync error from
+       libogg.
+
+2004-08-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_init), (gst_multifdsink_add),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_set_property), (gst_multifdsink_get_property):
+       * gst/tcp/gstmultifdsink.h:
+       Added option to send a keyframe to clients as the first buffer.
+       Make timeout property writable.
+
+2004-08-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Wim Taymans
+
+       * gst/tcp/gstfdset.c:
+       * gst/tcp/gstmultifdsink.c:
+         fix index comparison, should include 0
+
+2004-08-16  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstfdset.c: (ensure_size), (gst_fdset_new),
+       (gst_fdset_add_fd), (gst_fdset_remove_fd),
+       (gst_fdset_fd_has_closed), (gst_fdset_fd_has_error),
+       (gst_fdset_fd_can_read), (gst_fdset_fd_can_write),
+       (gst_fdset_wait):
+         copy when reallocing for poll so the select arguments don't get
+         changed during the call
+
+2004-08-16  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_border_mode_get_type),
+       (gst_theora_enc_class_init), (theora_enc_sink_link),
+       (theora_buffer_from_packet), (theora_enc_chain):
+       Fix bug where buffers were not marked as keyframes
+       correctly.
+
+2004-08-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_vbrmode_get_type),
+       (gst_lame_preset_get_type), (gst_lame_class_init):
+       describe the enum values for vbr mode and presets more verbosely
+
+2004-08-13  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_mode_get_type),
+       (gst_lame_quality_get_type), (gst_lame_padding_get_type),
+       (gst_lame_preset_get_type), (gst_lame_class_init), (gst_lame_init),
+       (gst_lame_set_property), (gst_lame_get_property), (gst_lame_setup):
+       * ext/lame/gstlame.h:
+       add preset property to lame so it can use lame presets
+
+2004-08-13  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_get_property):
+       whoops forgot break, thanks teuf
+
+2004-08-13  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_vbrmode_get_type),
+       (gst_lame_class_init), (gst_lame_src_getcaps),
+       (gst_lame_sink_link), (gst_lame_init), (gst_lame_set_property),
+       (gst_lame_get_property), (gst_lame_setup):
+       * ext/lame/gstlame.h:
+       fix lame's broken vbr stuff, allow it to resample if need be, and also
+       make xing header optional
+
+2004-08-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_src_getcaps), (gst_lame_init):
+       added getcaps function so samplerate doesnt get fixated to silly values
+
+2004-08-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_src_link):
+       revert previous fix
+
+2004-08-12  Johan Dahlin  <johan@gnome.org>
+
+       * sys/v4l/gstv4lelement.c (gst_v4l_iface_supported): Remove bogus
+       checks. Doesn't matter what state we are in. Interfaces are a
+       compile time thing, not runtime. It also broke the python bindings.
+
+2004-08-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_src_link):
+       made source pad link function check if sinkpad is ok..fixes the problem
+       where core fixates the output rate of lame stupidly
+
+2004-08-12  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_src_link), (gst_v4lsrc_fixate):
+       * sys/v4l/v4l_calls.c:
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_set_capture):
+         fix fixate function to handle nonsimple caps.
+         remove bogus check in _link
+         cleanups
+
+2004-08-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_class_init), (gst_lame_init):
+       set default compression ratio parameter to 0.0 so bitrate parameter
+       works :)
+
+2004-08-11  David Schleef  <ds@schleef.org>
+
+       * gst/tcp/gstfdset.c: Fix compile problem on OS/X.
+
+2004-08-11  David Schleef  <ds@schleef.org>
+
+       * gst/mpeg1sys/gstmpeg1systemencode.c: Oops, this was correct
+       before.
+
+2004-08-11  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/video/videosink.h: Change copyright block to LGPL.
+
+2004-08-11  David Schleef  <ds@schleef.org>
+
+       * ext/pango/gsttextoverlay.c: Add copyright block and fix plugin
+         license field
+       * gst-libs/gst/idct/Makefile.am: Remove mmx/sse code
+       * gst-libs/gst/video/gstvideosink.c: Change copyright block to
+         LGPL.
+       * gst/auparse/gstauparse.c: Fix plugin license field.
+       * gst/monoscope/gstmonoscope.c: Fix plugin license field.
+       * gst/mpeg1sys/gstmpeg1systemencode.c: Fix plugin license field.
+       * gst/rtp/gstrtp.c: Fix plugin license field.
+
+2004-08-11  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/gstfdset.c: (gst_fdset_mode_get_type), (nearest_pow),
+       (ensure_size), (gst_fdset_new), (gst_fdset_free),
+       (gst_fdset_set_mode), (gst_fdset_get_mode), (gst_fdset_add_fd),
+       (gst_fdset_remove_fd), (gst_fdset_fd_ctl_write),
+       (gst_fdset_fd_ctl_read), (gst_fdset_fd_has_closed),
+       (gst_fdset_fd_has_error), (gst_fdset_fd_can_read),
+       (gst_fdset_fd_can_write), (gst_fdset_wait):
+       * gst/tcp/gstfdset.h:
+       * gst/tcp/gstmultifdsink.c: (gst_unit_type_get_type),
+       (gst_multifdsink_class_init), (gst_multifdsink_init),
+       (gst_multifdsink_add), (gst_multifdsink_remove),
+       (gst_multifdsink_clear), (gst_multifdsink_get_stats),
+       (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_client_queue_data),
+       (gst_multifdsink_client_queue_caps),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_set_property),
+       (gst_multifdsink_get_property), (gst_multifdsink_init_send),
+       (gst_multifdsink_close):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
+       (gst_tcpserversink_init), (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_handle_wait), (gst_tcpserversink_init_send),
+       (gst_tcpserversink_close):
+       * gst/tcp/gsttcpserversink.h:
+       Abstracted away the select call, implemented poll (yes we ran into
+       the 1024 limit in production).
+
+2004-08-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcpplugin.c:
+         improve debuggging, remove assert
+
+2004-08-10  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_unit_type_get_type),
+       (gst_client_status_get_type), (gst_multifdsink_class_init),
+       (gst_multifdsink_init), (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_set_property),
+       (gst_multifdsink_get_property):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcp-marshal.list:
+       Starting to prepare for specifying buffer time in other units
+       than buffers. Expose remove reason in signal.
+
+2004-08-10  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_clear),
+       (gst_multifdsink_remove_client_link),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_client_queue_data),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_handle_clients),
+       (gst_multifdsink_chain), (gst_multifdsink_close):
+       * gst/tcp/gstmultifdsink.h:
+       Added more debugging info. Changed the way clients are
+       removed from the lists. Fixed a bug where a bad file descriptor
+       could cause many clients to be removed.
+
+2004-08-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/videotestsrc/gstvideotestsrc.c: (generate_capslist):
+         allow all pixel-aspect-ratios, not just 1:1
+
+2004-08-09  David Schleef  <ds@schleef.org>
+
+       * sys/glsink/ARB_multitexture.h:  Remove old files.
+       * sys/glsink/EXT_paletted_texture.h:
+       * sys/glsink/NV_register_combiners.h:
+       * sys/glsink/gstgl_nvimage.c:
+       * sys/glsink/gstgl_pdrimage.c:
+       * sys/glsink/gstgl_rgbimage.c:
+       * sys/glsink/gstglsink.c:
+       * sys/glsink/gstglsink.h:
+       * sys/glsink/gstglxwindow.c:
+       * sys/glsink/regcomb_yuvrgb.c:
+
+2004-08-09  David Schleef  <ds@schleef.org>
+
+       Patch from Gernot Ziegler <gz@lysator.liu.se> rewriting the
+       GL sink plugin.  (Bug #147302)
+
+       * configure.ac: Test for OpenGL
+       * sys/Makefile.am: Use test for OpenGL
+       * sys/glsink/Makefile.am:
+       * sys/glsink/glimagesink.c: rewrite
+       * sys/glsink/glimagesink.h: rewrite
+
+2004-08-09  David Schleef  <ds@schleef.org>
+
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_base_init):  Only allow
+       sane framerates.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get): same
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support): same
+       * testsuite/gst-lint: Test for G_GUINT64_FORMAT usage near gettext.
+
+2004-08-09  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_get_stats),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_handle_clients):
+       Do a bit more logging, make the client_read code more robust.
+
+2004-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_init_source),
+       (gst_jpegdec_fill_input_buffer), (gst_jpegdec_skip_input_data),
+       (gst_jpegdec_resync_to_restart), (gst_jpegdec_term_source),
+       (gst_jpegdec_init), (gst_jpegdec_chain):
+       * gst/multipart/multipartdemux.c: (gst_multipart_demux_init),
+       (gst_multipart_demux_chain), (gst_multipart_demux_change_state):
+         cleanups, debugging fixes and memleak plugging
+
+2004-08-09  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (gst_theora_dec_class_init),
+       (theora_get_formats), (theora_dec_src_convert),
+       (theora_dec_sink_convert), (theora_dec_src_query),
+       (theora_dec_src_event), (theora_dec_event), (theora_dec_chain),
+       (theora_dec_change_state):
+       Don't crash on missing header packets.
+
+2004-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/sq.po:
+         Added Albanian translation (Laurent Dhima)
+       * po/cs.po:
+         updated
+
+2004-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/lame/gstlame.c:
+         fix/add debugging
+
+2004-08-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c:
+       * sys/xvimage/xvimagesink.c:
+         assign all TOO_LAZY's to a real category.  Thanks to Warthy Warthog.
+
+2004-08-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_get_stats),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_handle_clients):
+       Make sure we don't try to read more from a client that what
+       ioctl says us or we deadlock.
+
+2004-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_src_link),
+       (gst_videotestsrc_change_state), (gst_videotestsrc_src_query),
+       (gst_videotestsrc_handle_src_event), (gst_videotestsrc_get):
+         decouple running_time and n_frames so it can handle changing
+         framerate while running
+
+2004-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/nl.po:
+       * po/sv.po:
+         updated translations
+
+2004-08-04  Benjamin Otte  <otte@gnome.org>
+
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_get_capslist), (generate_capslist),
+       (plugin_init):
+         generate the list of supported caps at startup and reuse it instead
+         of always generating it
+
+2004-07-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_pad_link):
+         whoops, last checkin broke normal build
+
+2004-08-03  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_get_volume),
+       (gst_alsa_mixer_set_volume), (gst_alsa_mixer_set_mute),
+       (gst_alsa_mixer_set_record), (gst_alsa_mixer_set_option),
+       (gst_alsa_mixer_get_option):
+       * ext/dvdnav/dvdnavsrc.c: (dvdnav_get_event_name),
+       (dvdnavsrc_print_event):
+       * ext/ogg/gstoggdemux.c: (_find_chain_process), (gst_ogg_print):
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_pad_link),
+       (gst_ogg_mux_pad_unlink):
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_pad_link),
+       (gst_multipart_mux_pad_unlink):
+       * gst/videofilter/gstvideobalance.c:
+       (gst_videobalance_colorbalance_set_value):
+       * gst/videomixer/videomixer.c: (gst_videomixer_pad_link),
+       (gst_videomixer_pad_unlink):
+       * po/uk.po:
+       * sys/oss/gstossmixer.c:
+       * sys/v4l/gstv4lcolorbalance.c:
+       * sys/v4l/gstv4ltuner.c:
+       * sys/v4l/v4lsrc_calls.c:
+       * sys/v4l2/gstv4l2colorbalance.c:
+       * sys/v4l2/gstv4l2tuner.c:
+         compile fixes for --disable-gst-debug, G_DISABLE_ASSERT and friends
+
+2004-08-03  Benjamin Otte  <otte@gnome.org>
+
+       * examples/dynparams/filter.c: (ui_control_create):
+       * examples/gstplay/player.c: (print_tag):
+       * ext/alsa/gstalsa.c: (gst_alsa_request_new_pad):
+       * ext/gdk_pixbuf/gstgdkanimation.c:
+       (gst_gdk_animation_iter_may_advance):
+       * ext/jack/gstjack.c: (gst_jack_request_new_pad):
+       * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list),
+       (tag_list_to_id3_tag_foreach), (gst_id3_tag_handle_event):
+       * ext/vorbis/oggvorbisenc.c: (gst_oggvorbisenc_get_tag_value):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_get_tag_value):
+       * ext/xine/xineaudiodec.c: (gst_xine_audio_dec_chain):
+       * gst-libs/gst/media-info/media-info-test.c: (print_tag):
+       * gst/sine/demo-dparams.c: (main):
+       * gst/tags/gstvorbistag.c: (gst_tag_to_vorbis_comments):
+       * testsuite/alsa/formats.c: (create_pipeline):
+       * testsuite/alsa/sinesrc.c: (sinesrc_force_caps), (sinesrc_get):
+         fixes for G_DISABLE_ASSERT and friends
+       * gst/typefind/gsttypefindfunctions.c: (aac_type_find),
+       (mp3_type_frame_length_from_header), (mp3_type_find),
+       (plugin_init):
+         require mp3 typefinding to have at least MIN_HEADERS valid headers
+         add typefinding for AAC adts files
+
+2004-08-04  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * sys/ximage/ximagesink.c:
+       (gst_ximagesink_calculate_pixel_aspect_ratio):
+       * sys/xvimage/xvimagesink.c:
+       (gst_xvimagesink_calculate_pixel_aspect_ratio):
+       Make sure we calculate pixel-aspect-ratio using floating point maths
+
+2004-08-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/uk.po:
+         updated translation
+
+2004-08-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get):
+         add debugging for display PAR calculation
+
+2004-08-02  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Fix mikmod CFLAGS.
+
+2004-07-27  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioscale/gstaudioscale.c:
+       - fix templates to only support S16, it's the only format that works
+       - make caps nego code use try_set_caps_nonfixed and fixation instead
+       of try_set_caps twice, which is not nice for autopluggers
+       - change rank to secondary, so autopluggers can pick it up after
+       audioconvert
+
+2004-08-02  Iain <iain@prettypeople.org>
+
+       * gst/interleave/interleave.c (interleave_init),
+       (interleave_request_new_pad),
+       (interleave_pad_removed),
+       (interleave_buffered_loop): Use the real pad count, not the artificial
+       one.
+
+2004-08-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: bump nano back to development
+
+=== release 0.8.3 ===
+
+2004-08-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: releasing 0.8.3, "Water"
+
+2004-08-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/xvimage/xvimagesink.c:
+       (gst_xvimagesink_calculate_pixel_aspect_ratio),
+       (gst_xvimagesink_xcontext_clear), (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_change_state), (gst_xvimagesink_buffer_alloc),
+       (gst_xvimagesink_set_property), (gst_xvimagesink_get_property),
+       (gst_xvimagesink_init), (gst_xvimagesink_class_init):
+       * sys/xvimage/xvimagesink.h:
+         apply similar PAR fixes as to ximagesink
+
+2004-08-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch from: Benjamin Otte
+
+       * ext/lame/gstlame.c: (gst_lame_src_link), (gst_lame_init):
+         add link function to lame.  Fixes #148986.
+
+2004-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * gst/multipart/multipartmux.c (gst_multipart_mux_next_buffer):
+       fix debugging log
+
+2004-07-30  David Schleef  <ds@schleef.org>
+
+       * gst/videomixer/Makefile.am: Fix things that should have been
+       fixed in the last checkin.
+
+2004-07-30  David Schleef  <ds@schleef.org>
+
+       * gst/multipart/Makefile.am: Fix things that should have been
+       fixed in the last checkin.
+
+2004-07-30  David Schleef  <ds@schleef.org>
+
+       * testsuite/multifilesink/Makefile.am: Fix unused variable.
+
+2004-07-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         bump nano for prerelease
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/nl.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+         updates
+
+2004-07-30  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_remove),
+       (gst_multifdsink_clear), (gst_multifdsink_get_stats),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_handle_clients):
+       * gst/tcp/gstmultifdsink.h:
+       Recover from a select with a bad file descriptor by removing
+       the client.
+
+2004-07-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         fix requirement of core
+       * gst-libs/gst/play/play.c: (gst_play_error_plugin),
+       (gst_play_pipeline_setup):
+         don't use colorspace element.  do use hermescolorspace element.
+         make macro to get a colorspace element.
+         mark strings for translation.
+       * po/POTFILES.in:
+         add play.c
+       * po/af.po:
+       * po/az.po:
+       * po/cs.po:
+       * po/en_GB.po:
+       * po/hu.po:
+       * po/nl.po:
+       * po/sr.po:
+       * po/sv.po:
+       * po/uk.po:
+         update translations
+
+2004-07-30  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/libpng/gstpngenc.c: (gst_pngenc_class_init):
+       fix default for newmedia flag
+
+2004-07-30  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (gst_theora_dec_class_init),
+       (gst_theora_dec_init), (theora_get_formats),
+       (theora_dec_src_convert), (theora_dec_sink_convert),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
+       (theora_dec_chain), (theora_dec_set_property),
+       (theora_dec_get_property):
+       * ext/theora/theoraenc.c: (gst_border_mode_get_type),
+       (gst_theora_enc_class_init), (gst_theora_enc_init),
+       (theora_enc_sink_link), (theora_enc_chain),
+       (theora_enc_set_property), (theora_enc_get_property):
+       Added cropping option to theora decoder.
+       Added border option to theora encoder.
+
+2004-07-30  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/libpng/gstpngenc.c: (gst_pngenc_class_init),
+       (gst_pngenc_init), (gst_pngenc_chain), (gst_pngenc_get_property),
+       (gst_pngenc_set_property):
+       * ext/libpng/gstpngenc.h:
+       Added newmedia support to pngenc so now gst-launch-0.8 videotestsrc ! ffmpegcolorspace ! pngenc snapshot=false newmedia=true ! multifilesink location=blah%d.png works as expected
+
+2004-07-30  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (theora_enc_sink_link), (theora_enc_chain),
+       (theora_enc_set_property), (theora_enc_get_property):
+       Fix encoding of non-multiple-of-16 video.
+
+2004-07-29  David Schleef  <ds@schleef.org>
+
+       * configure.ac: make test for audiofile more strict
+
+2004-07-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init):
+         give different names to typefind functions
+
+2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_calculate_pixel_aspect_ratio),
+       (gst_ximagesink_xcontext_get), (gst_ximagesink_getcaps),
+       (gst_ximagesink_sink_link), (gst_ximagesink_change_state),
+       (gst_ximagesink_set_xwindow_id), (gst_ximagesink_set_property),
+       (gst_ximagesink_get_property), (gst_ximagesink_init):
+       * sys/ximage/ximagesink.h:
+         allocate PAR's dynamically.
+         use autodetected PAR if no object-set PAR is given.
+         add workaround for directfb's X not setting physical size.
+         fix to xvimagesink will follow tomorrow.
+
+2004-07-28  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/lame/gstlame.c: (gst_lame_chain): send tag events downstream
+       * ext/shout2/gstshout2.c: (gst_shout2send_protocol_get_type),
+       (gst_shout2send_get_type), (gst_shout2send_set_clock),
+       (gst_shout2send_class_init), (gst_shout2send_init),
+       (set_shout_metadata), (gst_shout2send_set_metadata),
+       (gst_shout2send_chain), (gst_shout2send_set_property),
+       (gst_shout2send_get_property), (gst_shout2send_connect),
+       (gst_shout2send_change_state):
+       * ext/shout2/gstshout2.h:
+       - fix for sending mp3 audio to icecast2 server, if pad link function not
+       called before PAUSED state
+       - added option to use GStreamer clock sync (as opposed to libshout's own sync)
+       - added tagging support for mp3 audio broadcasted
+       * gst/monoscope/gstmonoscope.c: (gst_monoscope_class_init):
+       debug info
+
+2004-07-28  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query),
+       (gst_ogg_demux_push):
+       Return query failure when we don't know the length of
+       an ogg stream insteda of returning TRUE with a bogus value.
+
+2004-07-28  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (theora_get_formats),
+       (theora_dec_src_convert), (theora_dec_sink_convert),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
+       (theora_dec_chain):
+       Don't screw up the 1 Chroma for 1 luma sample situation when we
+       have an odd offset/width by adding a black border in those cases.
+
+2004-07-28  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (theora_get_formats),
+       (theora_dec_src_convert), (theora_dec_sink_convert),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
+       (theora_dec_chain):
+       * ext/theora/theoraenc.c: (theora_enc_sink_link):
+       Added first attempt at cropping of the image as required by the
+       theora spec. We need more properties in the caps (offset_x,
+       offset_y,stride) to implement this correctly.
+
+2004-07-28  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dvdnav/README:
+         Update the README to use dvddemux
+       * ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_getcaps):
+         Ensure getcaps returns a subset of the template caps
+       * gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_base_init),
+       (gst_mpeg2subt_init):
+         Ensure getcaps returns a subset of the template caps
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_class_init),
+       (gst_dvd_demux_init), (gst_dvd_demux_get_video_stream),
+       (gst_dvd_demux_get_subpicture_stream),
+       (gst_dvd_demux_send_subbuffer), (gst_dvd_demux_set_cur_subpicture):
+       * gst/mpegstream/gstdvddemux.h:
+         Set the explicit caps on the current_video pad before pushing
+         anything
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
+       (gst_mpeg_demux_get_audio_stream):
+         Free caps used to gst_pad_set_explicit_caps, which takes a const
+         GstCaps *
+
+2004-07-28  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: update GStreamer requirement to 0.8.4 because of
+         GstFraction.
+
+2004-07-28  Wim Taymans  <wim@fluendo.com>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt),
+       (gst_wavparse_handle_seek), (gst_wavparse_srcpad_event):
+       Add the pad to the element after setting up the caps. This
+       makes it a lot easier to autoplug.
+
+2004-07-27  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/median/gstmedian.c:
+       * gst/mpeg2subt/gstmpeg2subt.c:
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegpacketize.c:
+       * gst/rtjpeg/gstrtjpeg.c:
+       * gst/rtjpeg/gstrtjpegdec.c:
+       * gst/rtjpeg/gstrtjpegenc.c:
+       * gst/sine/gstsinesrc.c:
+       * gst/smooth/gstsmooth.c:
+       * gst/smpte/gstsmpte.c:
+       * gst/smpte/gstsmpte.h:
+       * gst/stereo/gststereo.c:
+       * gst/videofilter/gstgamma.c:
+       * gst/videofilter/gstvideobalance.c:
+       * gst/videofilter/gstvideofilter.c:
+       * gst/videofilter/gstvideoflip.c:
+       * gst/videoscale/gstvideoscale.c:
+       * gst/videoscale/videoscale.c:
+       * gst/videotestsrc/gstvideotestsrc.c:
+       * gst/videotestsrc/videotestsrc.c:
+       * gst/wavenc/gstwavenc.c:
+       * gst/wavparse/gstwavparse.c:
+         fix local includes and 64 bits constants
+
+2004-07-27  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * win32/gst.sln:
+       * gst-libs/gst/*/*.vcproj:
+       * gst/*/*.vcproj:
+         more working plugins
+
+2004-07-27  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * testsuite/alsa/Makefile.am:
+       * testsuite/alsa/srcstate.c:
+       add test for alsasrc changing state
+
+2004-07-27  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/silence/gstsilence.c: (gst_silence_init), (gst_silence_link),
+       (gst_silence_get):
+       * gst/silence/gstsilence.h:
+       fix silence generation for 16bit raw audio
+
+2004-07-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_metadata),
+       (gst_matroska_demux_video_caps), (gst_matroska_demux_plugin_init):
+       * gst/mpegaudio/common.c:
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_class_init),
+       (gst_videoscale_getcaps), (gst_videoscale_link),
+       (gst_videoscale_src_fixate), (gst_videoscale_init),
+       (gst_videoscale_finalize):
+       * gst/videoscale/gstvideoscale.h:
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_get_capslist):
+       * gst/wavenc/gstwavenc.c:
+       * sys/oss/gstossmixer.c: (fill_labels):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_calculate_pixel_aspect_ratio),
+       (gst_ximagesink_xcontext_get), (gst_ximagesink_fixate),
+       (gst_ximagesink_getcaps), (gst_ximagesink_sink_link),
+       (gst_ximagesink_chain), (gst_ximagesink_set_xwindow_id),
+       (gst_ximagesink_set_property), (gst_ximagesink_get_property),
+       (gst_ximagesink_init), (gst_ximagesink_class_init):
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c:
+       (gst_xvimagesink_calculate_pixel_aspect_ratio),
+       (gst_xvimagesink_xcontext_get), (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc),
+       (gst_xvimagesink_set_property), (gst_xvimagesink_get_property),
+       (gst_xvimagesink_init), (gst_xvimagesink_class_init):
+       * sys/xvimage/xvimagesink.h:
+         first batch of pixel aspect ratio commits.
+
+2004-07-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_class_init), (gst_ffmpegcolorspace_chain):
+       * gst/ffmpegcolorspace/imgconvert.c: (avpicture_fill):
+         handle stride, needs work if we want to move stride handling
+         upstream, but works correctly for our purposes.
+
+2004-07-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/README:
+         add testing examples
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_link),
+       (gst_videoscale_chain):
+       * gst/videoscale/videoscale.c: (gst_videoscale_setup),
+       (gst_videoscale_get_size):
+         add get_size function that handles stride like videotestsrc.
+         fixes conversion for YUV formats for as much as I can test them.
+
+2004-07-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
+       (gst_ximagesink_ximage_new), (gst_ximagesink_ximage_destroy):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
+       (gst_xvimagesink_xvimage_put):
+         further cleanups, logging, error handling and synchronizing
+
+2004-07-27  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videomixer/videomixer.c: (gst_videomixer_pad_get_type),
+       (gst_videomixer_pad_class_init), (gst_videomixer_pad_get_property),
+       (gst_videomixer_pad_set_property),
+       (gst_videomixer_pad_sinkconnect), (gst_videomixer_pad_init),
+       (gst_video_mixer_background_get_type), (gst_videomixer_get_type),
+       (gst_videomixer_class_init), (gst_videomixer_init),
+       (gst_videomixer_getcaps), (gst_videomixer_request_new_pad),
+       (gst_videomixer_blend_ayuv_i420), (pad_zorder_compare),
+       (gst_videomixer_sort_pads), (gst_videomixer_fill_checker),
+       (gst_videomixer_fill_color), (gst_videomixer_fill_queues),
+       (gst_videomixer_blend_buffers), (gst_videomixer_update_queues),
+       (gst_videomixer_loop), (plugin_init):
+       Be a nicer negotiation citizen and provide a getcaps function on
+       the srcpad. This also fixes a crash when resizing.
+
+2004-07-27  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new): Some fixes to image size calculation.
+
+2004-07-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/libpng/gstpngdec.c: (gst_pngdec_src_getcaps):
+       * ext/libpng/gstpngenc.c: (gst_pngenc_class_init),
+       (gst_pngenc_init), (gst_pngenc_chain), (gst_pngenc_get_property),
+       (gst_pngenc_set_property):
+       * ext/libpng/gstpngenc.h:
+       Added snapshot property to pngenc.
+       removed g_print from pngdec
+
+2004-07-27  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/ac3parse/ac3parse.vcproj
+       * gst/adder/adder.vcproj
+       * gst/alpha/alpha.vcproj
+       * gst/alpha/alphacolor.vcproj
+       * gst/asfdemux/asf.vcproj
+       * gst/audioconvert/audioconvert.vcproj
+       * gst/audiorate/audiorate.vcproj
+       * gst/audioscale/audioscale.vcproj
+       * gst/auparse/auparse.vcproj
+       * gst/avi/avi.vcproj
+       * gst/cdxaparse/cdxaparse.vcproj
+       * gst/chart/chart.vcproj
+       * gst/colorspace/colorspace.vcproj
+       * gst/cutter/cutter.vcproj
+       * gst/debug/debug.vcproj
+       * gst/debug/efence.vcproj
+       * gst/debug/navigationtest.vcproj
+       * gst/deinterlace/deinterlace.vcproj
+       * gst/effectv/effectv.vcproj
+       * gst/ffmpegcolorspace/ffmpegcolorspace.vcproj
+       * gst/filter/filter.vcproj
+       * gst/flx/flxdec.vcproj
+       * gst/goom/goom.vcproj
+       * gst/interleave/interleave.vcproj
+       * gst/law/alaw.vcproj
+       * gst/law/mulaw.vcproj
+       * gst/matroska/matroska.vcproj
+       * gst/median/median.vcproj
+       * gst/mixmatrix/mixmatrix.vcproj
+       * gst/mpeg1sys/mpeg1systemencode.vcproj
+       * gst/mpeg1videoparse/mp1videoparse.vcproj
+       * gst/mpeg2sub/mpeg2subt.vcproj
+       * gst/mpegaudio/mpegaudio.vcproj
+       * gst/mpegaudioparse/mpegaudioparse.vcproj
+       * gst/mpegstream/mpegstream.vcproj
+       * gst/multifilesink/multifilesink.vcproj
+       * gst/multipart/multipart.vcproj
+       * gst/oneton/oneton.vcproj
+       * gst/overlay/overlay.vcproj
+       * gst/passthrough/passthrough.vcproj
+       * gst/qtdemux/qtdemux.vcproj
+       * gst/realmedia/rmdemux.vcproj
+       * gst/rtjpeg/rtjpeg.vcproj
+       * gst/rtp/rtp.vcproj
+       * gst/silence/silence.vcproj
+       * gst/sine/sinesrc.vcproj
+       * gst/smooth/smooth.vcproj
+       * gst/smpte/smpte.vcproj
+       * gst/spectrum/spectrum.vcproj
+       * gst/speed/speed.vcproj
+       * gst/stereo/stereo.vcproj
+       * gst/switch/switch.vcproj
+       * gst/tags/tagedit.vcproj
+       * gst/tcp/tcp.vcproj
+       * gst/typefind/typefindfunctions.vcproj
+       * gst/udp/udp.vcproj
+       * gst/videobox/videobox.vcproj
+       * gst/videocrop/videocrop.vcproj
+       * gst/videodrop/videodrop.vcproj
+       * gst/videofilter/gamma.vcproj
+       * gst/videofilter/videobalance.vcproj
+       * gst/videofilter/videofilter.vcproj
+       * gst/videofilter/videoflip.vcproj
+       * gst/videoflip/videoflip.vcproj
+       * gst/videomixer/videomixer.vcproj
+       * gst/videorate/videorate.vcproj
+       * gst/videoscale/videoscale.vcproj
+       * gst/videotestsrc/videotestsrc.vcproj
+       * gst/virtualdub/virtualdub.vcproj
+       * gst/volenv/volenv.vcproj
+       * gst/volume/volume.vcproj
+       * gst/wavenc/wavenc.vcproj
+       * gst/wavparse/wavparse.vcproj
+       * gst/y4m/y4menc.vcproj
+       * gst-libs/gst/audio/audio.vcproj
+       * gst-libs/gst/audio/audiofilter.vcproj
+       * gst-libs/gst/colorbalance/colorbalance.vcproj
+       * gst-libs/gst/idct/idtc.vcproj
+       * gst-libs/gst/media-info/media-info.vcproj
+       * gst-libs/gst/mixer/mixer.vcproj
+       * gst-libs/gst/navigation/navigation.vcproj
+       * gst-libs/gst/play/play.vcproj
+       * gst-libs/gst/propertyprobe/propertyprobe.vcproj
+       * gst-libs/gst/resample/resample.vcproj
+       * gst-libs/gst/riff/riff.vcproj
+       * gst-libs/gst/tuner/tuner.vcproj
+       * gst-libs/gst/video/video.vcproj
+       * gst-libs/gst/xoverlay/xoverlay.vcproj
+         avoid problems with math.h, fix release dependancy
+         rename GStreamer-0.8.lib to libgstreamer.lib
+
+2004-07-27  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_decorate):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_decorate): When
+       the atom is not available we have to unlock the mutex. Fixes #148023
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst-libs/gst/media-info/media-info.h:
+         issue for a vararg macro with MSVC
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/effectv/effectv.vcproj
+       * gst-libs/gst/idct/idct.vcproj:
+       * gst-libs/gst/media-info/media-info.vcproj:
+       * gst-libs/gst/navigation/navigation.vcproj:
+       * gst-libs/gst/propertyprobe/propertyprobe.vcproj:
+       * gst-libs/gst/video/video.vcproj:
+       * gst-libs/gst/xoverlay/xoverlay.vcproj:
+         fixes for build problems
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst-libs/gst/audio/audio.def:
+       * gst-libs/gst/audio/riff.def:
+         add some definitions needed by plugins
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/asfdemux/gstasfmux.c
+         Fix some 64 bits constants to be glib friendly
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/ac3parse/gstac3parse.c
+       * gst/audioscale/gstaudioscale.c
+       * gst/auparse/gstauparse.c
+       * gst/colorspace/gstcolorspace.c
+       * gst/colorspace/yuv2rgb.h
+         local include fixes
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * win32/gst.sln
+         add more plugins to the build
+
+2004-07-26  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
+       (gst_ximagesink_ximage_new): Some more fixes to image size calculation.
+
+2004-07-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/level/gstlevel.c: (gst_level_link), (gst_level_chain),
+       (gst_level_set_property), (gst_level_get_property),
+       (gst_level_base_init), (gst_level_class_init):
+         add debugging categories.  cleanups.
+
+2004-07-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/videoscale.c: (gst_videoscale_setup),
+       (gst_videoscale_planar411), (gst_videoscale_planar400),
+       (gst_videoscale_packed422), (gst_videoscale_packed422rev),
+       (gst_videoscale_scale_nearest_str1),
+       (gst_videoscale_scale_nearest_str2),
+       (gst_videoscale_scale_nearest_str4),
+       (gst_videoscale_scale_nearest_16bit),
+       (gst_videoscale_scale_nearest_24bit):
+         fixed stride issues
+         tested with 320x240 -> 321, 322, 324 x240
+         tested with YV12, I420, YUY2, UYVY
+         fixed packed422rev (don't think it could have worked before)
+         by testing with UYVY
+
+2004-07-26  Benjamin Otte  <otte@gnome.org>
+
+       * ext/lame/gstlame.c: (gst_lame_sink_link), (gst_lame_init),
+       (gst_lame_chain), (gst_lame_setup), (gst_lame_change_state),
+       (plugin_init):
+         add debugging category, add error checks like checking return values
+         of setup calls, make sure it still works after
+         PLAYING=>NULL=>PLAYING, fix encoding of mono streams
+
+2004-07-26  Wim Taymans  <wim@fluendo.com>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
+       (gst_mpeg_demux_get_audio_stream),
+       (gst_mpeg_demux_process_private):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_data):
+       Check for error codes from the negotiation functions. Make sure
+       we really set the pad caps when a new pad is created.
+
+2004-07-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_caps_to_pix_fmt):
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.h:
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_pad_link):
+         don't make function do two things at the same time without reason.
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/ac3parse/ac3parse.vcproj
+       * gst/adder/adder.vcproj
+       * gst/alpha/alpha.vcproj
+       * gst/alpha/alphacolor.vcproj
+       * gst/asfdemux/asf.vcproj
+       * gst/audioconvert/audioconvert.vcproj
+       * gst/audiorate/audiorate.vcproj
+       * gst/audioscale/audioscale.vcproj
+       * gst/auparse/auparse.vcproj
+       * gst/avi/avi.vcproj
+       * gst/cdxaparse/cdxaparse.vcproj
+       * gst/chart/chart.vcproj
+       * gst/colorspace/colorspace.vcproj
+       * gst/cutter/cutter.vcproj
+       * gst/debug/debug.vcproj
+       * gst/debug/efence.vcproj
+       * gst/debug/navigationtest.vcproj
+       * gst/deinterlace/deinterlace.vcproj
+       * gst/effectv/effectv.vcproj
+       * gst/ffmpegcolorspace/ffmpegcolorspace.vcproj
+       * gst/filter/filter.vcproj
+       * gst/flx/flxdec.vcproj
+       * gst/goom/goom.vcproj
+       * gst/interleave/interleave.vcproj
+       * gst/law/alaw.vcproj
+       * gst/law/mulaw.vcproj
+       * gst/matroska/matroska.vcproj
+       * gst/median/median.vcproj
+       * gst/mixmatrix/mixmatrix.vcproj
+       * gst/mpeg1sys/mpeg1systemencode.vcproj
+       * gst/mpeg1videoparse/mp1videoparse.vcproj
+       * gst/mpeg2sub/mpeg2subt.vcproj
+       * gst/mpegaudio/mpegaudio.vcproj
+       * gst/mpegaudioparse/mpegaudioparse.vcproj
+       * gst/mpegstream/mpegstream.vcproj
+       * gst/multifilesink/multifilesink.vcproj
+       * gst/multipart/multipart.vcproj
+       * gst/oneton/oneton.vcproj
+       * gst/overlay/overlay.vcproj
+       * gst/passthrough/passthrough.vcproj
+       * gst/qtdemux/qtdemux.vcproj
+       * gst/realmedia/rmdemux.vcproj
+       * gst/rtjpeg/rtjpeg.vcproj
+       * gst/rtp/rtp.vcproj
+       * gst/silence/silence.vcproj
+       * gst/sine/sinesrc.vcproj
+       * gst/smooth/smooth.vcproj
+       * gst/smpte/smpte.vcproj
+       * gst/spectrum/spectrum.vcproj
+       * gst/speed/speed.vcproj
+       * gst/stereo/stereo.vcproj
+       * gst/switch/switch.vcproj
+       * gst/tags/tagedit.vcproj
+       * gst/tcp/tcp.vcproj
+       * gst/typefind/typefindfunctions.vcproj
+       * gst/udp/udp.vcproj
+       * gst/videobox/videobox.vcproj
+       * gst/videocrop/videocrop.vcproj
+       * gst/videodrop/videodrop.vcproj
+       * gst/videofilter/gamma.vcproj
+       * gst/videofilter/videobalance.vcproj
+       * gst/videofilter/videofilter.vcproj
+       * gst/videofilter/videoflip.vcproj
+       * gst/videoflip/videoflip.vcproj
+       * gst/videomixer/videomixer.vcproj
+       * gst/videorate/videorate.vcproj
+       * gst/videoscale/videoscale.vcproj
+       * gst/videotestsrc/videotestsrc.vcproj
+       * gst/virtualdub/virtualdub.vcproj
+       * gst/volenv/volenv.vcproj
+       * gst/volume/volume.vcproj
+       * gst/wavenc/wavenc.vcproj
+       * gst/wavparse/wavparse.vcproj
+       * gst/y4m/y4menc.vcproj
+         more plugins supported under windows
+
+2004-07-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
+       (gst_ximagesink_ximage_put), (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_chain), (gst_ximagesink_buffer_alloc):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc):
+         Add debugging statements.  Use the sizes as returned by the
+         *CreateImage calls.
+
+2004-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * gst/tcp/gsttcpclientsrc.c (gst_tcpclientsrc_get): Make sure that
+       the pad is negotiated.
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c (gst_ffmpegcolorspace_chain): Ditto
+
+2004-07-26  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst-libs/gst/colorbalance/colorbalance.vcproj:
+       * gst-libs/gst/idct/idct.vcproj:
+       * gst-libs/gst/media-info/media-info.vcproj:
+       * gst-libs/gst/mixer/mixer.vcproj:
+       * gst-libs/gst/navigation/navigation.vcproj:
+       * gst-libs/gst/play/play.vcproj:
+       * gst-libs/gst/propertyprobe/propertyprobe.vcproj:
+       * gst-libs/gst/resample/resample.vcproj:
+       * gst-libs/gst/tuner/tuner.vcproj:
+       * gst-libs/gst/video/video.vcproj:
+       * gst-libs/gst/xoverlay/xoverlay.vcproj:
+         more plugins supported under windows
+
+2004-07-25 Iain <iain@prettypeople.org>
+
+       * gst/wavparse/gstwavparse.c (gst_wavparse_fmt): Set the caps on the
+       pad now rather than when the pad is created because state changes wipe
+       explicit caps (fixes #148043).
+
+2004-07-25  Sebastien Cote  <sc5@hermes.usherb.ca>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstmad.c:
+         fix mad plugin crashing on Sun (fixes #148289)
+
+2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/avi/avi.def:
+       * gst/avi/avi.vcproj:
+       * gst/matroska/matroska.def:
+       * gst/matroska/matroska.vcproj:
+         remove unused .def files
+
+2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst-libs/gst/audio/gstaudiofilter.c:
+         Clean the local include
+
+2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * win32/gst.sln:
+       * gst-libs/gst/audio/audio.def:
+       * gst-libs/gst/audio/audio.vcproj:
+       * gst-libs/gst/audio/audiofilter.vcproj:
+       * gst-libs/gst/audio/riff.def:
+       * gst-libs/gst/audio/riff.vcproj:
+       * gst-libs/gst/gst-libs.def:
+       * gst-libs/gst/gst-libs.vcproj:
+       * gst/avi/avi.vcproj:
+       * gst/avi/avi.vcproj:
+         Copy the files where needed after building, cleaner projects
+
+2004-07-25  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * gst/matroska/ebml-write.c:
+         Fix some 64 bits constants to be glib friendly
+
+2004-07-24  Steve Lhomme  <steve.lhomme@free.fr>
+
+       * win32/gst.sln:
+       * gst-libs/gst/gst-libs.def:
+       * gst-libs/gst/gst-libs.vcproj:
+       * gst/matroska/matroska.def:
+       * gst/matroska/matroska.vcproj:
+         Add the preliminary canvas to build plugins on Win32
+
+2004-07-23  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+         don't enfore negotiation from source side, it breaks
+         sinesrc ! audioconvert ! osssink
+
+2004-07-22  David Schleef  <ds@schleef.org>
+
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init): Add typefind
+       for ELF files, since they can easily be recognized as audio/mpeg.
+       (bug #147441)
+
+2004-07-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/videoscale.c: (gst_videoscale_setup),
+       (gst_videoscale_planar411), (gst_videoscale_scale_nearest_32bit),
+       (gst_videoscale_scale_nearest_24bit),
+       (gst_videoscale_scale_nearest_16bit):
+         fix 16bit and 24bit for stride (24bit might need testing)
+         don't pretend we do more than one algorithm
+
+2004-07-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       * gst/Makefile.am:
+       * gst/multifilesink/Makefile.am:
+       * gst/multifilesink/gstmultifilesink.c:
+       (gst_multifilesink_get_formats),
+       (gst_multifilesink_get_query_types), (_do_init),
+       (gst_multifilesink_base_init), (gst_multifilesink_class_init),
+       (gst_multifilesink_init), (gst_multifilesink_dispose),
+       (gst_multifilesink_set_location), (gst_multifilesink_set_property),
+       (gst_multifilesink_get_property), (gst_multifilesink_open_file),
+       (gst_multifilesink_close_file), (gst_multifilesink_next_file),
+       (gst_multifilesink_pad_query), (gst_multifilesink_handle_event),
+       (gst_multifilesink_chain), (gst_multifilesink_change_state),
+       (gst_multifilesink_uri_get_type),
+       (gst_multifilesink_uri_get_protocols),
+       (gst_multifilesink_uri_get_uri), (gst_multifilesink_uri_set_uri),
+       (gst_multifilesink_uri_handler_init), (plugin_init):
+       * gst/multifilesink/gstmultifilesink.h:
+       * testsuite/Makefile.am:
+       * testsuite/multifilesink/Makefile.am:
+       * testsuite/multifilesink/fakesrc_test.c: (gst_newmedia_base_init),
+       (gst_newmedia_class_init), (gst_newmedia_init),
+       (gst_newmedia_chain), (gst_newmedia_trigger), (test_format),
+       (newfile_signal), (test_signal), (main):
+       multifilesink plugin for creating new files every time a new media
+       discontinuity event occurs
+
+2004-07-22  Wim Taymans  <wim@fluendo.com>
+
+       * gst/alpha/Makefile.am:
+       * gst/alpha/gstalphacolor.c: (gst_alpha_color_get_type),
+       (gst_alpha_color_base_init), (gst_alpha_color_class_init),
+       (gst_alpha_color_init), (gst_alpha_color_set_property),
+       (gst_alpha_color_get_property), (gst_alpha_color_sink_link),
+       (transform), (gst_alpha_color_chain),
+       (gst_alpha_color_change_state), (plugin_init):
+       Stupid plugin to to RGBA to AYUV conversion because none of
+       the colorspace plugins can handle that yet.
+
+2004-07-22  Wim Taymans  <wim@fluendo.com>
+
+       * examples/seeking/seek.c: (update_scale), (main):
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
+       (gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
+       (gst_decode_bin_init), (gst_decode_bin_dispose),
+       (find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
+       (no_more_pads), (close_link), (type_found),
+       (gst_decode_bin_set_property), (gst_decode_bin_get_property),
+       (plugin_init):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
+       (gst_play_base_bin_class_init), (gst_play_base_bin_init),
+       (gst_play_base_bin_dispose), (queue_overrun),
+       (gen_preroll_element), (remove_prerolls), (unknown_type),
+       (no_more_pads), (new_stream), (setup_source),
+       (gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
+       (play_base_eos), (gst_play_base_bin_change_state),
+       (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_unlink_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybin.c: (gen_video_element),
+       (gen_audio_element):
+       * gst/playback/gststreaminfo.h:
+       More playback updates, attempt to fix things after the state change
+       breakage.
+
+2004-07-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/videoscale.c: (gst_videoscale_planar411),
+       (gst_videoscale_scale_nearest_16bit):
+         comment algorithm
+
+2004-07-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_class_init), (gst_videotestsrc_src_link),
+       (gst_videotestsrc_init), (gst_videotestsrc_get),
+       (gst_videotestsrc_set_pattern), (gst_videotestsrc_set_property),
+       (gst_videotestsrc_get_property):
+       * gst/videotestsrc/gstvideotestsrc.h:
+       * gst/videotestsrc/videotestsrc.c:
+       * gst/videotestsrc/videotestsrc.h:
+         cleanup and commenting
+
+2004-07-21  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_init),
+       (gst_ogg_demux_get_formats), (gst_ogg_demux_src_query),
+       (gst_ogg_demux_src_event), (gst_ogg_demux_src_convert),
+       (gst_ogg_demux_handle_event), (gst_ogg_demux_seek_before),
+       (_find_chain_get_unknown_part), (_find_streams_check),
+       (gst_ogg_demux_push), (gst_ogg_pad_push):
+       * ext/theora/theoradec.c: (theora_get_formats),
+       (theora_dec_src_convert), (theora_dec_sink_convert),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
+       (theora_dec_chain):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
+       (vorbis_dec_convert), (vorbis_dec_src_query),
+       (vorbis_dec_src_event), (vorbis_dec_event):
+       More seeking fixes, oggdemux now supports seeking to time and
+       uses the downstream element to convert granulepos to time.
+       Seeking in theora-only ogg files now works.
+
+2004-07-21  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (gst_theora_dec_init),
+       (theora_get_formats), (theora_get_event_masks),
+       (theora_get_query_types), (theora_dec_src_convert),
+       (theora_dec_sink_convert), (theora_dec_src_query),
+       (theora_dec_src_event), (theora_dec_event), (theora_dec_chain):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
+       (vorbis_get_event_masks), (vorbis_get_query_types),
+       (gst_vorbis_dec_init), (vorbis_dec_convert),
+       (vorbis_dec_src_query), (vorbis_dec_src_event), (vorbis_dec_event):
+       Added query/convert/formats functions to vorbis and theora decoders
+       so that the outside world can use them too. Fixed seeking on an
+       ogg/theora/vorbis file by disabling the seeking seeking on the
+       theora srcpad.
+
+2004-07-21  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
+       (gst_ximagesink_renegotiate_size), (gst_ximagesink_sink_link),
+       (gst_ximagesink_chain), (gst_ximagesink_set_xwindow_id): Optimize
+       images creation for both elements. We don't create the image on caps
+       nego or renego, we just destroy the internal one if present if it does
+       not match the needs. The chain function takes care of creating a new
+       image when needed.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
+       (gst_xvimagesink_xwindow_decorate), (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc),
+       (gst_xvimagesink_set_xwindow_id): Additionally xvimage now contains
+       the image format information. The buffer pool checks for the context
+       image format and discard images with different formats.
+       * sys/xvimage/xvimagesink.h: Adding im_format in the xvimage structure.
+
+2004-07-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_chain):
+         no point in doing any chaining if the pad we want to push from
+         isn't usable.
+
+2004-07-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data):
+         Fix double end-to-native symbol conversion (#148021).
+
+2004-07-20  David Schleef  <ds@schleef.org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_decorate):
+       Don't use an Atom that doesn't exist.
+
+2004-07-20  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_get_stats),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer):
+       * gst/tcp/gstmultifdsink.h:
+       More multifdsink stats. Avoid deadlock by releasing locks
+       before sending out a signal.
+
+2004-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/hu.po:
+         added Hungarian translation (Laszlo Dvornik)
+
+2004-07-20  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer):
+       * gst/tcp/gsttcp-marshal.list:
+       Fixed the stupid marshal definition.
+
+2004-07-20  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_init), (gst_multifdsink_add),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_queue_buffer), (gst_multifdsink_chain),
+       (gst_multifdsink_set_property), (gst_multifdsink_get_property),
+       (gst_multifdsink_init_send):
+       * gst/tcp/gstmultifdsink.h:
+       Added more stats, added timeout for a client, fixed some typos
+       and added some comments.
+
+2004-07-20  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
+       (gst_multifdsink_add), (gst_multifdsink_get_stats),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_write):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcp-marshal.list:
+       Added get_stats method that returns a GValueArray of
+       stats values.
+
+2004-07-19  Benjamin Otte  <otte@gnome.org>
+
+       * ext/ladspa/gstladspa.c: (gst_ladspa_base_init):
+         make sure longname, description and author are valid UTF-8
+
+2004-07-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_change_state),
+       (gst_ximagesink_set_property):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_change_state),
+       (gst_xvimagesink_set_property):
+         make sure SYNCHRONOUS is respected after getting the X context
+
+2004-07-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_handle_src_event),
+       (gst_matroska_demux_parse_blockgroup):
+       * gst/matroska/matroska-ids.h:
+         add BlockReference tag and ignore it to clear out log.
+         ignore NAVIGATION events to clear out log.
+
+2004-07-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_class_init),
+       (gst_matroska_demux_add_stream):
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init):
+         add debug categories
+
+2004-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * ext/libpng/Makefile.am:
+       * ext/libpng/gstpng.c: (plugin_init):
+       * ext/libpng/gstpngdec.c: (user_error_fn), (user_warning_fn),
+       (gst_pngdec_get_type), (gst_pngdec_base_init),
+       (gst_pngdec_class_init), (gst_pngdec_sinklink), (gst_pngdec_init),
+       (gst_pngdec_src_getcaps), (user_read_data), (gst_pngdec_chain):
+       * ext/libpng/gstpngdec.h:
+       Added png decoder.
+
+2004-07-16  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xerror),
+       (gst_ximagesink_check_xshm_calls), (gst_ximagesink_ximage_new),
+       (gst_ximagesink_ximage_destroy), (gst_ximagesink_sink_link),
+       (gst_ximagesink_chain), (gst_ximagesink_buffer_free),
+       (gst_ximagesink_buffer_alloc):
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_free),
+       (gst_xvimagesink_buffer_alloc):
+       * sys/xvimage/xvimagesink.h: Getting the 2 video sinks synchronized
+       again. Using internal data pointer of the x(v)image to store image's
+       data to be coherent with the buffer alloc mechanism. Investigated the
+       image destruction code to be sure that everything gets freed correctly.
+
+2004-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_vids_with_data),
+       (gst_riff_read_strf_auds_with_data):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_add_stream), (gst_avi_demux_stream_header):
+       Make sure we don't create 0 sized subbuffers in riff-read.
+       Signal the no more pads signal after reading the avi header.
+
+2004-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
+       (gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
+       (gst_decode_bin_init), (gst_decode_bin_dispose),
+       (find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
+       (no_more_pads), (close_link), (type_found),
+       (gst_decode_bin_set_property), (gst_decode_bin_get_property),
+       (gst_decode_bin_change_state), (plugin_init):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
+       (gst_play_base_bin_class_init), (gst_play_base_bin_init),
+       (gst_play_base_bin_dispose), (queue_overrun),
+       (gen_preroll_element), (remove_prerolls), (unknown_type),
+       (no_more_pads), (new_stream), (setup_source),
+       (gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
+       (play_base_eos), (gst_play_base_bin_change_state),
+       (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_unlink_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybasebin.h:
+       Better error recovery. Added configurable preroll queue size. Faster
+       detection of no-more-pads.
+
+2004-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/video/video.h:
+       Added 32 bits RGBA. Not sure if we should use another mime-type
+       for alpha rgb. Currently the presence of the alpha_mask property
+       signals an alpha channel.
+
+2004-07-16  Wim Taymans  <wim@fluendo.com>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support):
+       FPS seems to be 0.0 to MAX everywhere else.
+
+2004-07-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         mp42/mp43 (no caps) exist too.
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps):
+         Set pixel_width/height; we've got them in-caps.
+       * gst/typefind/gsttypefindfunctions.c: (plugin_init):
+       * gst/wavparse/gstwavparse.c: (plugin_init):
+         Both are valid primary.
+       * sys/oss/gstossmixer.c:
+         Remove i18n hack and enable translations.
+
+2004-07-15  Benjamin Otte  <otte@gnome.org>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy):
+         fix for non-shm xv. Original patch by Tim Ringenbach (fixes #147248)
+
+2004-07-15  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio),
+       (gst_alsa_sw_params_dump), (gst_alsa_hw_params_dump),
+       (gst_alsa_close_audio):
+         disable some of the debugging code for now. Writing debugging to a
+         buffer is broken in current alsalib releases.
+
+2004-07-12  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_buffer):
+         use bufferpools
+
+2004-07-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/theora/theoradec.c: (gst_theora_dec_class_init),
+       (theora_dec_src_query), (theora_dec_event):
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init):
+         add debugging categories.  Remove \n's.
+
+2004-07-13  Johan Dahlin  <johan@gnome.org>
+
+       * gst/playback/gstplaybin.c (gst_play_bin_set_property)
+       (gst_play_bin_get_property): Impl.
+
+2004-07-13  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_seek_before):
+       When trying to find the stream length, seek back N pages
+       instead of just one, where N is the number of streams in
+       the current chain.
+
+2004-07-13  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data),
+       (gst_riff_create_audio_caps),
+       (gst_riff_create_audio_template_caps):
+       * gst-libs/gst/riff/riff-media.h:
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_vids_with_data),
+       (gst_riff_read_strf_auds_with_data), (gst_riff_read_strf_auds):
+       * gst-libs/gst/riff/riff-read.h:
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
+       (gst_avi_demux_add_stream):
+       Set codec_data on caps for avidemuxer.
+
+2004-07-12  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Fix test for Objective C
+
+2004-07-12  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_get_capslist),
+       (gst_gdk_pixbuf_chain):
+         Add svg and pcx to template caps, and ensure that getcaps returns a
+         subset of the template caps.
+         Copy each row manually for output, as gdkpixbuf may pad the
+         rowstride to a 32-bit word boundary.
+
+2004-07-12  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_audio_caps),
+       (gst_riff_create_video_template_caps):
+       Fix the template caps to include some more media types.
+
+2004-07-12  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
+       (compare_ranks), (print_feature), (gst_decode_bin_init),
+       (gst_decode_bin_dispose), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (new_pad), (close_link), (type_found),
+       (gst_decode_bin_set_property), (gst_decode_bin_get_property),
+       (gst_decode_bin_change_state), (plugin_init):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
+       (gst_play_base_bin_class_init), (gst_play_base_bin_init),
+       (gst_play_base_bin_dispose), (queue_overrun),
+       (gen_preroll_element), (remove_prerolls), (no_more_pads),
+       (new_stream), (setup_source), (gst_play_base_bin_set_property),
+       (gst_play_base_bin_get_property), (play_base_eos),
+       (gst_play_base_bin_change_state), (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_unlink_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_type),
+       (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_dispose), (gst_play_bin_set_property),
+       (gst_play_bin_get_property), (gen_video_element),
+       (gen_audio_element), (remove_sinks), (setup_sinks),
+       (gst_play_bin_change_state), (gst_play_bin_get_event_masks),
+       (gst_play_bin_send_event), (gst_play_bin_get_formats),
+       (gst_play_bin_convert), (gst_play_bin_get_query_types),
+       (gst_play_bin_query), (plugin_init):
+       * gst/playback/test4.c: (main):
+       More fixes on reusing of the element.
+
+2004-07-11  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstmad.c: (normal_seek):
+         allow seeking for other methods than just SET
+
+2004-07-11  Andy Wingo  <wingo@pobox.com>
+
+       * gst/audioconvert/gstaudioconvert.c (gst_audio_convert_link): For
+       float, "any" caps -> buffer_frames=[0,MAX].
+
+       * gst/interleave/interleave.c (interleave_getcaps): Seems the core
+       doesn't intersect our caps with the template any more. Do it
+       ourselves.
+       (interleave_buffered_loop): Use g_newa instead of malloc/free.
+
+2004-07-09  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
+       (compare_ranks), (print_feature), (gst_decode_bin_init),
+       (gst_decode_bin_dispose), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (new_pad), (close_link), (type_found),
+       (gst_decode_bin_set_property), (gst_decode_bin_get_property),
+       (gst_decode_bin_change_state), (plugin_init):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
+       (gst_play_base_bin_class_init), (gst_play_base_bin_init),
+       (gst_play_base_bin_dispose), (queue_overrun),
+       (gen_preroll_element), (remove_prerolls), (no_more_pads),
+       (new_stream), (setup_source), (gst_play_base_bin_set_property),
+       (gst_play_base_bin_get_property), (play_base_eos),
+       (gst_play_base_bin_change_state), (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_unlink_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_type),
+       (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_dispose), (gst_play_bin_set_property),
+       (gst_play_bin_get_property), (gen_video_element),
+       (gen_audio_element), (remove_sinks), (setup_sinks),
+       (gst_play_bin_change_state), (gst_play_bin_get_event_masks),
+       (gst_play_bin_send_event), (gst_play_bin_get_formats),
+       (gst_play_bin_convert), (gst_play_bin_get_query_types),
+       (gst_play_bin_query), (plugin_init):
+       * gst/playback/test4.c: (main):
+       Work on object reuse and seeking.
+
+2004-07-09  Wim Taymans  <wim@fluendo.com>
+
+       * examples/seeking/seek.c: (iterate):
+       Don't consume all CPU in the idle loop.
+
+2004-07-09  Wim Taymans  <wim@fluendo.com>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_new_output_pad),
+       (gst_mpeg_demux_parse_packet), (gst_mpeg_demux_process_private):
+       Add pad to element *after* setting the pad functions so that
+       the scheduler can use the correct ones.
+
+2004-07-09  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (theora_dec_from_granulepos),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_chain):
+       Sync to keyframe after seek
+
+2004-07-09  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
+       (gst_alsa_sink_loop), (gst_alsa_sink_change_state):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_change_state):
+       * ext/libvisual/visual.c: (gst_visual_change_state):
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_change_state):
+       * ext/theora/theoradec.c: (theora_dec_change_state):
+       * ext/theora/theoraenc.c: (theora_enc_change_state):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_change_state):
+       * gst-libs/gst/navigation/navigation.c:
+       * gst/adder/gstadder.c: (gst_adder_change_state):
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain),
+       (gst_audio_convert_get_buffer):
+       * gst/multipart/multipartdemux.c:
+       (gst_multipart_demux_change_state):
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_change_state):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_change_state):
+       * gst/playback/gstplaybin.c: (gst_play_bin_change_state):
+       * gst/videoscale/gstvideoscale.c:
+       (gst_videoscale_handle_src_event):
+       * gst/volume/gstvolume.c: (volume_chain_int16):
+         don't assert in state change, this should be done by the base
+         GstElement class.
+         various debugging fixes.
+
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * configure.ac:
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup),
+       (gst_play_dispose), (gst_play_set_location),
+       (gst_play_set_data_src), (gst_play_set_video_sink),
+       (gst_play_set_audio_sink), (gst_play_set_visualization),
+       (gst_play_connect_visualization), (gst_play_get_sink_element),
+       (gst_play_get_all_by_interface):
+       * gst-libs/gst/play/play.h:
+         add new method to get elements implementing an interface.
+         add various error logging
+
+2004-07-08  Wim Taymans  <wim@fluendo.com>
+
+       * examples/seeking/seek.c: (make_dv_pipeline), (make_avi_pipeline),
+       (make_mpeg_pipeline), (make_mpegnt_pipeline),
+       (make_playerbin_pipeline), (query_durations_elems),
+       (query_durations_pads), (query_positions_elems),
+       (query_positions_pads), (update_scale), (iterate), (stop_seek),
+       (main):
+       Added playbin seeking example.
+
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * gst-libs/gst/play/play.c: (gst_play_set_location),
+       (gst_play_set_data_src), (gst_play_set_video_sink),
+       (gst_play_set_audio_sink), (gst_play_set_visualization),
+       (gst_play_connect_visualization), (gst_play_get_framerate):
+         use a macro to look up elements from hash table
+
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup),
+       (gst_play_get_length_callback), (gst_play_set_location),
+       (gst_play_seek_to_time), (gst_play_set_data_src),
+       (gst_play_set_video_sink), (gst_play_set_audio_sink),
+       (gst_play_set_visualization), (gst_play_connect_visualization),
+       (gst_play_get_sink_element):
+       - add debugging info
+       - fix looking up sink elements by iterating over complete caps
+       - put everything except for source and autoplugger in a complete bin
+
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_drain_audio):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_flush_one_pad),
+       (gst_alsa_sink_check_event), (gst_alsa_sink_mmap),
+       (gst_alsa_sink_write), (gst_alsa_sink_loop):
+       * ext/alsa/gstalsasink.h:
+       - add debugging info
+       - clean up schizophrenia of data/buffer/event
+       - fix double event unref error
+
+2004-07-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/Makefile.am:
+       Add headers to noinst
+
+2004-07-08  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * tools/gst-launch-ext-m.m:
+       * tools/gst-launch-ext.1.in:
+         convert to the third millenium
+
+2004-07-07  David Schleef  <ds@schleef.org>
+
+       * sys/dxr3/Makefile.am: noinst_SOURCES should be nodist_SOURCES
+
+2004-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/Makefile.am:
+       * gst/playback/README:
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
+       (compare_ranks), (print_feature), (gst_decode_bin_init),
+       (gst_decode_bin_dispose), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (new_pad), (close_link), (type_found),
+       (gst_decode_bin_set_property), (gst_decode_bin_get_property),
+       (plugin_init):
+       * gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
+       (gst_play_base_bin_class_init), (gst_play_base_bin_init),
+       (gst_play_base_bin_dispose), (rebuild_pipeline), (queue_overrun),
+       (gen_preroll_element), (no_more_pads), (new_stream),
+       (setup_source), (gst_play_base_bin_set_property),
+       (gst_play_base_bin_get_property), (gst_play_base_bin_change_state),
+       (gst_play_base_bin_add_element),
+       (gst_play_base_bin_remove_element),
+       (gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
+       (gst_play_base_bin_unlink_stream),
+       (gst_play_base_bin_get_streaminfo):
+       * gst/playback/gstplaybasebin.h:
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_type),
+       (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_dispose), (gst_play_bin_set_property),
+       (gst_play_bin_get_property), (gen_video_element),
+       (gen_audio_element), (setup_sinks), (gst_play_bin_change_state),
+       (gst_play_bin_get_event_masks), (gst_play_bin_send_event),
+       (gst_play_bin_get_formats), (gst_play_bin_convert),
+       (gst_play_bin_get_query_types), (gst_play_bin_query),
+       (plugin_init):
+       * gst/playback/gststreaminfo.c: (gst_stream_type_get_type),
+       (gst_stream_info_get_type), (gst_stream_info_class_init),
+       (gst_stream_info_init), (gst_stream_info_new),
+       (gst_stream_info_dispose), (gst_stream_info_set_property),
+       (gst_stream_info_get_property):
+       * gst/playback/gststreaminfo.h:
+       * gst/playback/test.c: (gen_video_element), (gen_audio_element),
+       (main):
+       * gst/playback/test2.c: (main):
+       * gst/playback/test3.c: (update_scale), (main):
+       More playbin fixes. Added README. Do better element filtering.
+       Added base class to preroll media. Added test apps.
+
+2004-07-07  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_flush_decoder):
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         various debugging improvements.  Reset stream to next picture
+         instead of sequence header, otherwise seeks cannot work.
+
+2004-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videobox/gstvideobox.c: (gst_video_box_fill_get_type),
+       (gst_video_box_class_init), (gst_video_box_set_property),
+       (gst_video_box_i420), (gst_video_box_ayuv), (gst_video_box_chain):
+       Use pad_alloc where possible.
+
+2004-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * sys/oss/gstosselement.c: (gst_osselement_reset),
+       (gst_osselement_parse_caps):
+       * sys/oss/gstosselement.h:
+       * sys/oss/gstosssrc.c: (gst_osssrc_get):
+       Fix offset on osssrc.
+
+2004-07-07  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theora.c: (plugin_init):
+       * ext/theora/theoradec.c: (theora_dec_from_granulepos),
+       (theora_dec_src_query), (theora_dec_chain):
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (theora_enc_sink_link), (theora_buffer_from_packet),
+       (theora_push_packet), (theora_enc_chain):
+       Fix theora granulepos calculation.
+       Fix overflow in duration/position calculation.
+       Bump rank to PRIMARY for theoradec.
+       Use granulepos of last packet to calculate position.
+       Set keyframe flag on buffers when needed.
+
+2004-07-06  David Schleef  <ds@schleef.org>
+
+       * gst/playback/Makefile.am: 'test' in bin_PROGRAMS?  Are you
+       serious?  (Fixed, obviously.)
+
+2004-07-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/cs.po:
+         added Czech translation (Miloslav Trmac)
+
+2004-07-05  Wim Taymans  <wim@fluendo.com>
+
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
+       (compare_ranks), (gst_decode_bin_init), (gst_decode_bin_dispose),
+       (find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
+       (close_link), (type_found), (gst_decode_bin_set_property),
+       (gst_decode_bin_get_property), (gst_decode_bin_get_event_masks),
+       (gst_decode_bin_send_event), (gst_decode_bin_get_formats),
+       (gst_decode_bin_convert), (gst_decode_bin_get_query_types),
+       (gst_decode_bin_query), (plugin_init):
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_type),
+       (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_dispose), (rebuild_pipeline), (get_audio_element),
+       (get_video_element), (new_pad), (setup_source),
+       (gst_play_bin_set_property), (gst_play_bin_get_property),
+       (gst_play_bin_change_state), (gst_play_bin_add_element),
+       (gst_play_bin_remove_element), (gst_play_bin_get_event_masks),
+       (gst_play_bin_send_event), (gst_play_bin_get_formats),
+       (gst_play_bin_convert), (gst_play_bin_get_query_types),
+       (gst_play_bin_query), (gst_play_bin_get_clock), (plugin_init):
+       * gst/playback/test.c: (main):
+       More fixes, cleaned up playbin, make it use decodebin. Added
+       threaded property to playbin.
+
+2004-07-05  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * gst/playback/Makefile.am:
+       * gst/playback/decodetest.c: (main):
+       * gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
+       (gst_decode_bin_class_init), (gst_decode_bin_factory_filter),
+       (compare_ranks), (gst_decode_bin_init), (gst_decode_bin_dispose),
+       (find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
+       (close_link), (type_found), (gst_decode_bin_set_property),
+       (gst_decode_bin_get_property), (gst_decode_bin_change_state),
+       (gst_decode_bin_get_event_masks), (gst_decode_bin_send_event),
+       (gst_decode_bin_get_formats), (gst_decode_bin_convert),
+       (gst_decode_bin_get_query_types), (gst_decode_bin_query),
+       (plugin_init):
+       * gst/playback/gstplaybin.c: (gst_play_bin_get_type),
+       (gst_play_bin_class_init), (gst_play_bin_init),
+       (gst_play_bin_dispose), (gen_default_output), (rebuild_pipeline),
+       (collect_sink_pads), (find_compatibles), (close_pad_link),
+       (try_to_link_1), (new_pad), (close_link), (type_found),
+       (setup_source), (gst_play_bin_set_property),
+       (gst_play_bin_get_property), (gst_play_bin_factory_filter),
+       (compare_ranks), (gst_play_bin_collect_factories),
+       (gst_play_bin_change_state), (gst_play_bin_add_element),
+       (gst_play_bin_remove_element), (gst_play_bin_get_event_masks),
+       (gst_play_bin_send_event), (gst_play_bin_get_formats),
+       (gst_play_bin_convert), (gst_play_bin_get_query_types),
+       (gst_play_bin_query), (gst_play_bin_get_clock), (plugin_init):
+       * gst/playback/test.c: (main):
+       Added some playback helper elements and some test apps, very alpha
+       still.
+
+2004-07-04  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_xrun_recovery):
+         only restart audio when we indeed have an xrun to fix repeated
+         xruns. Fix suggested by Giuliano Pochini.
+
+2004-07-03  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/gstalsaplugin.c: (gst_alsa_error_wrapper): Disable
+       call to gst_debug_log() if debugging is disabled (bug #145118)
+
+2004-07-03  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_xrun_recovery):
+         use our own functions for restarting the alsa device.
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         I should apply patches myself - use MIN for the third argument, not
+         the second, this fixes seeking
+
+2004-07-02  David Schleef  <ds@schleef.org>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_class_init),
+       (gst_flacdec_write):  Actually, GST_PAD_CAPS() has nothing to
+       do with the logic.
+
+2004-07-02  David Schleef  <ds@schleef.org>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_write):  Set duration on
+       output buffers.  Fix logic mistake.  (bug #144866)
+
+2004-07-02  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/xoverlay/Makefile.am: xoverlay no longer depends
+       on X.  (bug #144753)
+
+2004-07-02  David Schleef  <ds@schleef.org>
+
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_setup),
+       (gst_wavenc_stop_file): Switch to GST_WRITE_UINT32_LE macros
+       (bug #144624)
+       * sys/oss/gstosselement.c: (gst_osselement_probe_caps),
+       (gst_osselement_rate_probe_check): Add another workaround for
+       buggy drivers (bug #145336)
+
+2004-07-02  David Schleef  <ds@schleef.org>
+
+       * gst/tcp/gstmultifdsink.c: (gst_multifdsink_handle_client_write):
+       Most systems don't have MSG_NOSIGNAL.
+
+2004-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/tuner/Makefile.am:
+         (hopefully) fix both install and dist and make error message useful.
+         needs testing across automakes.
+
+2004-07-02  Benjamin Otte  <otte@gnome.org>
+
+       * ext/ogg/gstogg.c: (plugin_init):
+         we require bytestream now
+       * ext/ogg/gstoggdemux.c:
+         huge diff to implement chain setup in a fast and generic way. This
+         improves tag reading and startup of huge files (read: Theora videos)
+         quite a bit. It probably contains bugs, too, so please test.
+         Seeking is not improved to the fast method.
+
+2004-06-29  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+       * ext/ogg/gstoggmux.c:
+       Fix memleak in oggdemux when running unconnected pads.
+       doc update in mux, start working on keyframe mode.
+
+2004-06-29  Benjamin Otte  <otte@gnome.org>
+
+       * sys/oss/gstosssink.c:
+       * sys/oss/gstosssrc.c:
+         advertise correct template caps - we indeed do non-native endianness
+         and 8bit audio has no endianness
+       * sys/ximage/ximagesink.c: (gst_ximagesink_getcaps):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_getcaps):
+         avoid (wrong) duplications in getcaps function and return
+         template caps
+
+2004-06-29  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_recover_policy_get_type),
+       (gst_multifdsink_class_init), (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_clear),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_client_queue_data),
+       (gst_multifdsink_client_queue_caps),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_thread),
+       (gst_multifdsink_init_send), (gst_multifdsink_close):
+       Fix wrong GList iteration that could crash the server when
+       more then 2 clients disconnect at the same time. Read all the
+       pending commands in one batch to recover from command storms under
+       very heavy load.
+
+2004-06-28  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videomixer/videomixer.c: (gst_videomixer_pad_get_type),
+       (gst_videomixer_pad_class_init), (gst_videomixer_pad_get_property),
+       (gst_videomixer_pad_set_property),
+       (gst_videomixer_pad_sinkconnect), (gst_videomixer_pad_init),
+       (gst_video_mixer_background_get_type), (gst_videomixer_get_type),
+       (gst_videomixer_class_init), (gst_videomixer_init),
+       (gst_videomixer_request_new_pad), (gst_videomixer_blend_ayuv_i420),
+       (pad_zorder_compare), (gst_videomixer_sort_pads),
+       (gst_videomixer_fill_checker), (gst_videomixer_fill_color),
+       (gst_videomixer_fill_queues), (gst_videomixer_blend_buffers),
+       (gst_videomixer_update_queues), (gst_videomixer_loop),
+       (plugin_init):
+       Avoid divide by zero, choose masterpad as the pad with the highest
+       framerate.
+
+2004-06-27  Julien Moutte  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_decorate),
+       (gst_ximagesink_xwindow_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_decorate),
+       (gst_xvimagesink_xwindow_new): I prefer locking the mutex in the
+       function directly. We might want to call it from somewhere else one day.
+
+2004-06-27  Julien Moutte  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_decorate),
+       (gst_ximagesink_xwindow_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_decorate),
+       (gst_xvimagesink_xwindow_new): Trying to fix the random behaviour of
+       window decorations.
+
+2004-06-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_class_init), (gst_dvdec_init),
+       (gst_dvdec_video_getcaps), (gst_dvdec_video_link),
+       (gst_dvdec_push), (gst_dvdec_loop), (gst_dvdec_change_state),
+       (gst_dvdec_set_property), (gst_dvdec_get_property):
+       * ext/dv/gstdvdec.h:
+       Implement drop_factor property to lower the framerate with
+       a factor.
+
+2004-06-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/tuner/Makefile.am:
+         unbreak Company's fix that didn't install the -enum.h files
+
+2004-06-27  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_push), (gst_dvdec_loop),
+       (gst_dvdec_change_state):
+       * ext/dv/gstdvdec.h:
+       Fix timestamp, duration and offset of the buffers.
+
+2004-06-27  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gstmultifdsink.c: (gst_recover_policy_get_type),
+       (gst_multifdsink_class_init), (gst_multifdsink_add),
+       (gst_multifdsink_remove), (gst_multifdsink_clear),
+       (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_client_queue_data),
+       (gst_multifdsink_client_queue_caps),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_thread),
+       (gst_multifdsink_init_send), (gst_multifdsink_close):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcpserversink.c:
+       (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_handle_select), (gst_tcpserversink_close):
+       More multifdsink fixes, more recovery policy fixes.
+       Removed stupid g_print
+
+2004-06-26  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/gstmultifdsink.c: (gst_recover_policy_get_type),
+       (gst_multifdsink_get_type), (gst_multifdsink_base_init),
+       (gst_multifdsink_class_init), (gst_multifdsink_init),
+       (gst_multifdsink_debug_fdset), (gst_multifdsink_client_remove),
+       (gst_multifdsink_handle_client_read),
+       (gst_multifdsink_client_queue_data),
+       (gst_multifdsink_client_queue_caps),
+       (gst_multifdsink_client_queue_buffer),
+       (gst_multifdsink_handle_client_write),
+       (gst_multifdsink_recover_client), (gst_multifdsink_queue_buffer),
+       (gst_multifdsink_handle_clients), (gst_multifdsink_thread),
+       (gst_multifdsink_chain), (gst_multifdsink_set_property),
+       (gst_multifdsink_get_property), (gst_multifdsink_init_send),
+       (gst_multifdsink_close), (gst_multifdsink_change_state):
+       * gst/tcp/gstmultifdsink.h:
+       * gst/tcp/gsttcpplugin.c: (plugin_init):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_get_type),
+       (gst_tcpserversink_class_init), (gst_tcpserversink_init),
+       (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_handle_select),
+       (gst_tcpserversink_set_property), (gst_tcpserversink_get_property),
+       (gst_tcpserversink_init_send), (gst_tcpserversink_close):
+       * gst/tcp/gsttcpserversink.h:
+       Added multifdsink, made tcpserversink a subclass of fdsink, removed
+       one of the locks, added recovery policy to multifdsink.
+
+2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_chain):
+         fix decision for when getting frames with same timestamp
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init), (gst_v4lsrc_init),
+       (gst_v4lsrc_get), (gst_v4lsrc_set_property),
+       (gst_v4lsrc_get_property):
+       * sys/v4l/gstv4lsrc.h:
+         add latency offset property
+
+2004-06-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_chain),
+       (plugin_init):
+         fix debugging. add category.
+
+2004-06-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_get):
+          fix wrong offsets
+
+2004-06-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_init),
+       (gst_alsa_src_get_time), (gst_alsa_src_loop),
+       (gst_alsa_src_change_state):
+         return a time that is in sync with the element's processing
+
+2004-06-25  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
+       (gst_tcpserversink_init), (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_client_remove),
+       (gst_tcpserversink_handle_client_read),
+       (gst_tcpserversink_client_queue_data),
+       (gst_tcpserversink_client_queue_caps),
+       (gst_tcpserversink_client_queue_buffer),
+       (gst_tcpserversink_handle_client_write),
+       (gst_tcpserversink_queue_buffer),
+       (gst_tcpserversink_handle_clients), (gst_tcpserversink_thread),
+       (gst_tcpserversink_chain), (gst_tcpserversink_set_property),
+       (gst_tcpserversink_get_property), (gst_tcpserversink_init_send),
+       (gst_tcpserversink_close):
+       * gst/tcp/gsttcpserversink.h:
+       Serversink rewrite. Really do non blocking writes to clients and
+       maintain an internal queue to handle slower clients while not
+       disturbing fast clients.
+
+2004-06-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get):
+         better debug, don't override OFFSET and OFFSET_END
+
+2004-06-25  Iain <iain@prettypeople.org>
+
+       * gst-libs/gst/media-info/media-info-priv.c (gmi_set_mime): Add
+       name=source for the wavparse pipeline.
+
+2004-06-24  Johan Dahlin  <johan@gnome.org>
+
+       * ext/theora/theoraenc.c (theora_enc_chain): Call
+       gst_pad_try_set_caps instead of gst_pad_set_explicit_caps so the
+       streamheader caps are set correctly.
+
+2004-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisenc.c: (raw_caps_factory),
+       (gst_vorbisenc_setup), (gst_vorbisenc_set_property):
+         respect minimum bitrate; same could be done for max bitrate
+
+2004-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisenc.c: (raw_caps_factory),
+       (gst_vorbisenc_setup):
+         fix sample rate range
+
+2004-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/oggvorbisenc.c: (gst_oggvorbisenc_class_init),
+       (gst_oggvorbisenc_setup):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_class_init),
+       (gst_vorbisenc_setup):
+         resolve ambiguities in code and description
+
+2004-06-24  Wim Taymans  <wim@fluendo.com>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_start), (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_init),
+       (gst_alsa_src_update_avail), (gst_alsa_src_loop):
+       Use alsa trigger_tstamp to get the timestamp of the first
+       sample in the buffer for more precise sync. Some cleanups.
+
+2004-06-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst/audiorate/gstaudiorate.c: (gst_audiorate_link),
+       (gst_audiorate_init), (gst_audiorate_chain),
+       (gst_audiorate_set_property), (gst_audiorate_get_property):
+       * gst/videorate/gstvideorate.c: (gst_videorate_class_init),
+       (gst_videorate_chain):
+       Added some logging, fixed an overflow bug in videorate.
+
+2004-06-24  Benjamin Otte  <otte@gnome.org>
+
+       * ext/kio/Makefile.am:
+         fix for builddir != srcdir and distcheck
+
+2004-06-24  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/tuner/Makefile.am:
+       * gst/tcp/Makefile.am:
+       * sys/dxr3/Makefile.am:
+         don't include -enumtypes.[ch] or -marshal.[ch] files in the disted
+         tarball.
+         Also add all *.list files that were missing.
+       * Makefile.am:
+         add a distcheck hook to ensure the above doesn't happen again.
+
+2004-06-23  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * ext/Makefile.am: s/DTS_DIR=dvdread/DTS_DIR=dts/
+
+2004-06-23  Colin Walters  <walters@redhat.com>
+
+       * m4/Makefile.am: Distribute gst-fionread.m4.
+
+2004-06-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: back to dev
+
+2004-06-23  Wim Taymans  <wim@fluendo.com>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state), (gst_alsa_start),
+       (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
+       (gst_alsa_sink_loop), (gst_alsa_sink_get_time):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_init),
+       (gst_alsa_src_get_time), (gst_alsa_src_update_avail),
+       (gst_alsa_src_loop):
+       Add clock to alsasrc. Take new capture timestamp when
+       restarting after an overrun. Split up some functions between
+       alsasrc and alsasink.
+
+=== release 0.8.2 ===
+
+2004-06-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_init), (gst_alsa_dispose),
+       (gst_alsa_change_state), (gst_alsa_update_avail),
+       (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         merge back changes from release
+
+2004-06-23  Wim Taymans  <wim@fluendo.com>
+
+       * gst/audiorate/gstaudiorate.c: (gst_audiorate_class_init),
+       (gst_audiorate_init), (gst_audiorate_chain),
+       (gst_audiorate_set_property), (gst_audiorate_get_property):
+       Implement sample dropping and notify
+
+2004-06-22  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (theora_enc_sink_link), (theora_buffer_from_packet),
+       (theora_push_packet), (theora_enc_chain):
+       Some cleanups, make sure the timestamps are correct.
+
+2004-06-22  Wim Taymans  <wim@fluendo.com>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_time), (gst_alsa_clock_update),
+       (gst_alsa_change_state), (gst_alsa_update_avail),
+       (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
+       Cleanups, take queued samples into account when reporting
+       the time.
+
+2004-06-22  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_class_init),
+       (gst_videorate_init):
+       Initialize the property as well.
+
+2004-06-22  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_class_init),
+       (gst_videorate_init), (gst_videorate_chain),
+       (gst_videorate_set_property), (gst_videorate_get_property):
+       Add property to make videorate silent.
+       Add property to prefer new frames over old ones.
+
+2004-06-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/osxvideo/Makefile.am:
+        Workaround so that the osxvideo .so file gets linked with the
+        Cocoa, OpenGL and QuickTime frameworks
+
+2004-06-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * sys/osxaudio/Makefile.am:
+        Workaround so that the osxaudio .so file gets linked with the
+        CoreAudio framework
+
+2004-06-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       Whoops, my fault...fixed build issues
+
+2004-06-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+        Add objective-c support if running in Darwin/Mac OS X
+       * sys/Makefile.am:
+        * sys/osxvideo:
+        * sys/osxvideo/Makefile.am:
+        * sys/osxvideo/osxvideosink.h:
+        * sys/osxvideo/osxvideosink.m:
+        * sys/osxvideo/cocoawindow.h:
+        * sys/osxvideo/cocoawindow.m:
+        Add osxvideosink, a cocoa-based osx video sink
+
+
+2004-06-19  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/dvdnav/gst-dvd:
+       Grab the gconf key from the right spot
+       * gst/debug/gstnavseek.c: (gst_navseek_init),
+       (gst_navseek_segseek), (gst_navseek_handle_src_event),
+       (gst_navseek_chain):
+       * gst/debug/gstnavseek.h:
+         Add 's', 'e' and 'l' keypresses to navseek to define the start,end
+         and loop parameters of a segment seek.
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_init),
+       (gst_videotestsrc_get_event_masks),
+       (gst_videotestsrc_handle_src_event), (gst_videotestsrc_get):
+       * gst/videotestsrc/gstvideotestsrc.h:
+         Add seeking support to videotestsrc
+         Initialise the timestamp_offset variable.
+
+2004-06-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/sidplay/gstsiddec.cc:
+       Fix negotiation and set correct end offset.
+
+2004-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: branch and prerelease
+
+2004-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_init),
+       (gst_tcpclientsrc_getcaps), (gst_tcpclientsrc_get),
+       (gst_tcpclientsrc_init_receive):
+       * gst/tcp/gsttcpclientsrc.h:
+          read caps when connecting to server for GDP so we set them correctly
+
+2004-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videorate/gstvideorate.c: (gst_videorate_chain):
+         notify drops and duplicates
+       * gst/videoscale/videoscale.c: (videoscale_get_structure):
+         no good reason to limit ourselves to 100x100
+
+2004-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init), (gst_v4lsrc_init),
+       (gst_v4lsrc_open), (gst_v4lsrc_src_link), (gst_v4lsrc_getcaps),
+       (gst_v4lsrc_get), (gst_v4lsrc_set_property),
+       (gst_v4lsrc_get_property):
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4l_calls.c: (gst_v4l_set_window_properties),
+       (gst_v4l_open), (gst_v4l_get_picture), (gst_v4l_get_audio),
+       (gst_v4l_set_audio):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_grab_frame),
+       (gst_v4lsrc_try_capture):
+       * sys/v4l/v4lsrc_calls.h:
+         change try_palette to more general try_capture
+         add autoprobe option so we can turn off autoprobing
+         various fixes
+
+2004-06-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         add videorate
+       * sys/ximage/ximagesink.c: (gst_ximagesink_finalize),
+       (gst_ximagesink_class_init):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_finalize),
+       (gst_xvimagesink_class_init):
+          run them as finalize, not dispose, since dispose can be invoked
+          multiple times
+
+2004-06-17  Wim Taymans  <wim@fluendo.com>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_init), (gst_alsa_dispose),
+       (gst_alsa_get_time), (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsaclock.c: (gst_alsa_clock_get_type):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_init), (gst_alsa_src_loop),
+       (gst_alsa_src_change_state):
+       * ext/alsa/gstalsasrc.h:
+       Make the xrun code timestamp and offset the buffers correctly.
+       moved the clock to the base class, use alsa methods to get time.
+       Do correct timestamping on outgoing buffers.
+
+2004-06-17  Wim Taymans  <wim@fluendo.com>
+
+       * gst/audiorate/Makefile.am:
+       * gst/audiorate/gstaudiorate.c: (gst_audiorate_get_type),
+       (gst_audiorate_base_init), (gst_audiorate_class_init),
+       (gst_audiorate_link), (gst_audiorate_init), (gst_audiorate_chain),
+       (gst_audiorate_set_property), (gst_audiorate_get_property),
+       (gst_audiorate_change_state), (plugin_init):
+       Added an audiorate converter that fills in gaps.
+
+2004-06-17  Johan Dahlin  <johan@gnome.org>
+
+       * ext/tcp/*: Revert Zaheer changes, to make things actually work again.
+
+2004-06-16  Wim Taymans  <wim@fluendo.com>
+
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_get):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_sync_mode_get_type),
+       (gst_v4lsrc_class_init), (gst_v4lsrc_init), (gst_v4lsrc_get_fps),
+       (gst_v4lsrc_get), (gst_v4lsrc_set_property),
+       (gst_v4lsrc_get_property):
+       * sys/v4l/gstv4lsrc.h:
+       Added a copy mode to v4lsrc where it will output a copied version
+       of its internal hardware buffer.
+       Fix the wrong FLAG_SET usage. The flags are integers, not bits, you
+       can't | them.
+
+2004-06-16  Wim Taymans  <wim@fluendo.com>
+
+       * sys/oss/gstosssrc.c: (gst_osssrc_get):
+       Timestamp fixes.
+
+2004-06-16  Wim Taymans  <wim@fluendo.com>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_sync_mode_get_type),
+       (gst_v4lsrc_class_init), (gst_v4lsrc_init), (gst_v4lsrc_get_fps),
+       (gst_v4lsrc_get), (gst_v4lsrc_set_property),
+       (gst_v4lsrc_get_property):
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay):
+       Added a sync mode enum property to control v4lsrc timestamp method
+       Removed the use-fixed-fps property and moved functionality in
+       the enum.
+       Don't error on an error value from v4l-conf, it might not always
+       be a real error.
+
+2004-06-16  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videorate/Makefile.am:
+       * gst/videorate/gstvideorate.c: (gst_videorate_get_type),
+       (gst_videorate_base_init), (gst_videorate_class_init),
+       (gst_videorate_getcaps), (gst_videorate_link),
+       (gst_videorate_init), (gst_videorate_chain),
+       (gst_videorate_set_property), (gst_videorate_get_property),
+       (gst_videorate_change_state), (plugin_init):
+       Added a video timestamp corrector.
+
+2004-06-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       fixed a potential leak with previous commit
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head):
+
+2004-06-15  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head):
+       Added missing refcount, fixes bug #144425
+       Cheers Tim for finding the bug
+
+2004-06-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4l.c: (plugin_init):
+       * sys/v4l/gstv4lcolorbalance.c:
+       * sys/v4l/gstv4lcolorbalance.h:
+       * sys/v4l/gstv4lelement.c:
+       * sys/v4l/gstv4lelement.h:
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init):
+       * sys/v4l/gstv4lmjpegsink.h:
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init):
+       * sys/v4l/gstv4lmjpegsrc.h:
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get_fps_list),
+       (gst_v4lsrc_get_fps), (gst_v4lsrc_srcconnect),
+       (gst_v4lsrc_getcaps), (gst_v4lsrc_get):
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/gstv4ltuner.c:
+       * sys/v4l/gstv4ltuner.h:
+       * sys/v4l/gstv4lxoverlay.c:
+       * sys/v4l/gstv4lxoverlay.h:
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay),
+       (gst_v4l_set_window), (gst_v4l_enable_overlay):
+       * sys/v4l/v4l_calls.c: (gst_v4l_set_window_properties),
+       (gst_v4l_open), (gst_v4l_get_picture), (gst_v4l_get_audio),
+       (gst_v4l_set_audio):
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l/v4lmjpegsink_calls.c: (gst_v4lmjpegsink_sync_thread),
+       (gst_v4lmjpegsink_queue_frame), (gst_v4lmjpegsink_sync_frame),
+       (gst_v4lmjpegsink_set_buffer), (gst_v4lmjpegsink_set_playback),
+       (gst_v4lmjpegsink_playback_init),
+       (gst_v4lmjpegsink_playback_start), (gst_v4lmjpegsink_get_buffer),
+       (gst_v4lmjpegsink_play_frame), (gst_v4lmjpegsink_wait_frame),
+       (gst_v4lmjpegsink_playback_stop),
+       (gst_v4lmjpegsink_playback_deinit):
+       * sys/v4l/v4lmjpegsink_calls.h:
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_queue_frame),
+       (gst_v4lmjpegsrc_sync_next_frame), (gst_v4lmjpegsrc_set_buffer),
+       (gst_v4lmjpegsrc_set_capture), (gst_v4lmjpegsrc_set_capture_m),
+       (gst_v4lmjpegsrc_capture_init), (gst_v4lmjpegsrc_capture_start),
+       (gst_v4lmjpegsrc_grab_frame), (gst_v4lmjpegsrc_requeue_frame),
+       (gst_v4lmjpegsrc_capture_stop), (gst_v4lmjpegsrc_capture_deinit):
+       * sys/v4l/v4lmjpegsrc_calls.h:
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_queue_frame),
+       (gst_v4lsrc_sync_frame), (gst_v4lsrc_set_capture),
+       (gst_v4lsrc_capture_init), (gst_v4lsrc_capture_start),
+       (gst_v4lsrc_grab_frame), (gst_v4lsrc_requeue_frame),
+       (gst_v4lsrc_capture_stop), (gst_v4lsrc_capture_deinit),
+       (gst_v4lsrc_try_palette):
+       * sys/v4l/v4lsrc_calls.h:
+         bunch of paranoia cleanups
+
+2004-06-14  David Schleef  <ds@schleef.org>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_init),
+       (cdparanoia_get), (cdparanoia_open), (cdparanoia_change_state):
+       Send discont events and change timestamps appropriately when
+       we get a seek event.  (bug #144240)
+       * ext/cdparanoia/gstcdparanoia.h:
+
+2004-06-14  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: Use snd_pcm_hw_params_set_rate _near instead of
+         snd_pcm_hw_params_set_rate  since the latter fails for no good
+         reason on some setups.
+
+2004-06-14  David Schleef  <ds@schleef.org>
+
+       * gst/volume/demo.c: (value_changed_callback): exp10() is not
+       standard.  Thank you for playing.
+
+2004-06-14  Wim Taymans  <wim@fluendo.com>
+
+       * gst/ffmpegcolorspace/imgconvert.c: (img_convert):
+       Patch 1.3 broke the ordering of the colorspace info and
+       made the plugin basically work by coincidence, reordered
+       the info.
+
+2004-06-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/lame/gstlame.c:
+       * ext/mad/gstmad.c:
+         sync caps.  Make sure mad can only output a list of rates, not
+         a full range.  In the future, have three caps lists for each of the
+         mpeg versions.  Change mpegversion to a double as well.
+
+2004-06-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/volume/.cvsignore:
+       * gst/volume/Makefile.am:
+       * gst/volume/demo.c: (value_changed_callback), (idler),
+       (setup_gui), (main):
+         added small demo app
+
+2004-06-13  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/esd/esdsink.c: (gst_esdsink_change_state):
+       * ext/esd/esdsink.h:
+       Close the esd connection on pause, because esd will just wait -
+       blocking all other esd clients indefinitely.
+
+2004-06-12  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/tags/gstvorbistag.c: replaced a g_warning which I added in my
+         previous commit with GST_DEBUG
+
+2004-06-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         add a header check for a dvdread header in dvdnav.  Fixes #133002
+
+2004-06-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_init_send):
+       * gst/tcp/gsttcpclientsink.h:
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_init_receive):
+       * gst/tcp/gsttcpclientsrc.h:
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_init),
+       (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_init_send):
+       * gst/tcp/gsttcpserversink.h:
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_init_receive):
+       * gst/tcp/gsttcpserversrc.h:
+       Modified the tcp plugins so they are portable (IPv4,IPv6, any future
+        version of IP)
+
+2004-06-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * configure.ac:
+       Added ogg library so that OSX detects libtheora properly
+
+2004-06-11  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoradec.c: (theora_dec_chain),
+       (theora_dec_change_state):
+       Don't try to decode frames before we received a keyframe.
+
+2004-06-11  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
+       (gst_ogg_mux_init), (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_get_headers), (gst_ogg_mux_set_header_on_caps),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop),
+       (gst_ogg_mux_get_property), (gst_ogg_mux_set_property):
+       Added property to set the maximum delay of a page.
+
+2004-06-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
+       (gst_ogg_mux_init), (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_get_headers), (gst_ogg_mux_set_header_on_caps),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop),
+       (gst_ogg_mux_get_property), (gst_ogg_mux_set_property):
+       Added max-delay property to control the maximum amount
+       of data to put in one page.
+
+2004-06-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (gst_theora_enc_init), (theora_enc_sink_link),
+       (theora_buffer_from_packet), (theora_enc_set_property),
+       (theora_enc_get_property):
+       Set duration on encoded buffer, added some more properties
+
+2004-06-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_get_headers), (gst_ogg_mux_set_header_on_caps),
+       (gst_ogg_mux_send_headers), (gst_ogg_mux_loop):
+       * ext/theora/theoraenc.c: (theora_enc_chain):
+       Fix refcounting bugs
+
+2004-06-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_init),
+       (gst_asf_demux_loop), (gst_asf_demux_process_file),
+       (gst_asf_demux_process_data), (gst_asf_demux_handle_data),
+       (gst_asf_demux_process_object), (gst_asf_demux_get_stream),
+       (gst_asf_demux_process_chunk), (gst_asf_demux_handle_sink_event),
+       (gst_asf_demux_handle_src_event), (gst_asf_demux_handle_src_query),
+       (gst_asf_demux_change_state):
+       * gst/asfdemux/gstasfdemux.h:
+         You know Chimaira? "I - HATE - EVERYTHING". Yeah, that's what this
+         feels like. I think we should set a new requirement for demuxers
+         from now on to implement sane loop functions, data loops, query
+         and seek functions before first commit into CVS. And this commit
+         fixes all of the above.
+
+2004-06-10  Christophe Fergeau  <teuf@gnome.org>
+
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_add): make sure parsed
+         vorbis comments are properly encoded in UTF-8 before adding them
+         to a GstTagList
+
+2004-06-09  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (add_channels):
+         handle min <= max correctly
+       * ext/alsa/gstalsa.c: (gst_alsa_fixate_to_mimetype),
+       (gst_alsa_fixate_field_nearest_int), (gst_alsa_fixate):
+         add fixation functions so we fixate correctly. No preferring of alaw
+         anymore because it's the first structure.
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsa.c: (gst_alsa_sw_params_dump),
+       (gst_alsa_hw_params_dump):
+         add functions to ease debugging in alsalib
+       * ext/alsa/gstalsa.c: (gst_alsa_probe_hw_params),
+       (gst_alsa_set_hw_params), (gst_alsa_set_sw_params),
+       (gst_alsa_start_audio):
+         only specify hw params if we really setup a format (fixes #134007 -
+         or at least works around it)
+
+2004-06-09  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_init),
+       (gst_ogg_mux_next_buffer), (gst_ogg_mux_buffer_from_page),
+       (gst_ogg_mux_push_page), (gst_ogg_mux_get_headers),
+       (gst_ogg_mux_set_header_on_caps), (gst_ogg_mux_send_headers),
+       (gst_ogg_mux_loop):
+       Use stream caps to setup the initial pages in the ogg stream.
+       Correctly set the streamheader caps on the srcpad.
+
+2004-06-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get_fps_list),
+       (gst_v4lsrc_get_fps), (gst_v4lsrc_srcconnect),
+       (gst_v4lsrc_getcaps):
+       * sys/v4l/v4l_calls.c: (gst_v4l_set_window_properties),
+       (gst_v4l_get_picture), (gst_v4l_get_audio), (gst_v4l_set_audio):
+         add querying of fps lists for webcams.  Negotiating to a framerate
+         now works.
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/theora/theoraenc.c: (theora_buffer_from_packet),
+       (theora_push_buffer), (theora_push_packet),
+       (theora_set_header_on_caps), (theora_enc_chain):
+         mark buffers and put on streamheader, raw theora streaming
+         now works too, whee
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcp.c: (gst_tcp_gdp_read_header),
+       (gst_tcp_gdp_read_caps):
+          do a looping read for caps and GDP headers too
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get):
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_get):
+          return EOS instead of NULL in _get
+
+2004-06-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/tcp/gsttcp.c: (gst_tcp_gdp_read_header),
+       (gst_tcp_gdp_read_caps), (gst_tcp_gdp_write_header),
+       (gst_tcp_gdp_write_caps):
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get):
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_gdp_read_caps),
+       (gst_tcpserversrc_gdp_read_header), (gst_tcpserversrc_get):
+       Memory leak fixes
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/Makefile.am:
+       * ext/vorbis/vorbis.c: (plugin_init):
+       * ext/vorbis/vorbisparse.c: (gst_vorbis_parse_base_init),
+       (gst_vorbis_parse_class_init), (gst_vorbis_parse_init),
+       (vorbis_parse_set_header_on_caps), (vorbis_parse_chain),
+       (vorbis_parse_change_state):
+       * ext/vorbis/vorbisparse.h:
+          adding a vorbisparse element that marks the buffers, streaming
+          raw vorbis using GDP now works, whee
+
+2004-06-08  Wim Taymans  <wim@fluendo.com>
+
+       * ext/jpeg/Makefile.am:
+       * ext/jpeg/README:
+       * ext/jpeg/gstjpeg.c: (plugin_init):
+       * ext/jpeg/gstsmokedec.c: (gst_smokedec_get_type),
+       (gst_smokedec_base_init), (gst_smokedec_class_init),
+       (gst_smokedec_init), (gst_smokedec_link), (gst_smokedec_chain):
+       * ext/jpeg/gstsmokedec.h:
+       * ext/jpeg/gstsmokeenc.c: (gst_smokeenc_get_type),
+       (gst_smokeenc_base_init), (gst_smokeenc_class_init),
+       (gst_smokeenc_init), (gst_smokeenc_getcaps), (gst_smokeenc_link),
+       (gst_smokeenc_resync), (gst_smokeenc_chain),
+       (gst_smokeenc_set_property), (gst_smokeenc_get_property):
+       * ext/jpeg/gstsmokeenc.h:
+       * ext/jpeg/smokecodec.c: (smokecodec_init_destination),
+       (smokecodec_flush_destination), (smokecodec_term_destination),
+       (smokecodec_init_source), (smokecodec_fill_input_buffer),
+       (smokecodec_skip_input_data), (smokecodec_resync_to_restart),
+       (smokecodec_term_source), (smokecodec_encode_new),
+       (smokecodec_decode_new), (smokecodec_info_free),
+       (smokecodec_set_quality), (smokecodec_get_quality),
+       (smokecodec_set_threshold), (smokecodec_get_threshold),
+       (smokecodec_set_bitrate), (smokecodec_get_bitrate),
+       (find_best_size), (abs_diff), (put), (smokecodec_encode),
+       (smokecodec_parse_header), (smokecodec_decode):
+       * ext/jpeg/smokecodec.h:
+       Added a new simple jpeg based codec
+
+2004-06-08  Wim Taymans  <wim@fluendo.com>
+
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_class_init),
+       (gst_multipart_mux_loop):
+       Fix memory leak
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_client_remove),
+       (gst_tcpserversink_handle_client_read), (gst_tcp_buffer_write),
+       (gst_tcpserversink_handle_client_write), (gst_tcpserversink_chain),
+       (gst_tcpserversink_init_send), (gst_tcpserversink_close):
+       * gst/tcp/gsttcpserversink.h:
+          take streamheader into account
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/level/Makefile.am:
+       * gst/level/gstlevel.c: (gst_level_class_init):
+         clean up marshal generation
+
+2004-06-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_get_type),
+       (gst_tcpclientsink_class_init), (gst_tcpclientsink_init),
+       (gst_tcpclientsink_set_property), (gst_tcpclientsink_get_property):
+       * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_class_init),
+       (gst_tcpclientsrc_init), (gst_tcpclientsrc_set_property),
+       (gst_tcpclientsrc_get_property):
+       * gst/tcp/gsttcpserversink.c: (gst_tcpserversink_class_init),
+       (gst_tcpserversink_init), (gst_tcpserversink_handle_server_read),
+       (gst_tcpserversink_handle_client_read),
+       (gst_tcpserversink_handle_client_write),
+       (gst_tcpserversink_set_property), (gst_tcpserversink_get_property):
+       * gst/tcp/gsttcpserversink.h:
+         add signals client-added and client-removed
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_class_init),
+       (gst_tcpserversrc_init), (gst_tcpserversrc_set_property),
+       (gst_tcpserversrc_get_property):
+       uniformized, change default protocol to NONE
+       * gst/tcp/gsttcp-marshal.list: added
+2004-06-07  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         handle discont events if they happen before caps nego
+
+2004-06-07  Wim Taymans  <wim@fluendo.com>
+
+       * gst/multipart/multipartdemux.c: (gst_multipart_demux_base_init),
+       (gst_multipart_find_pad_by_mime), (gst_multipart_demux_chain),
+       (gst_multipart_demux_plugin_init):
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_class_init),
+       (gst_multipart_mux_init), (gst_multipart_mux_loop),
+       (gst_multipart_mux_change_state):
+       Small updates, fix a memleak
+
+2004-06-07  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * configure.ac: OSS portability
+       * ext/arts/gst_arts.c: idem
+       * sys/oss/gstosselement.c: idem
+       * sys/oss/gstossmixer.c: idem
+       * sys/oss/gstosssink.c: idem
+       * sys/oss/gstosssrc.c: idem
+       * sys/oss/oss_probe.c: idem
+         - check for soundcard.h in different places for some BSD
+
+2004-06-07  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * AUTHORS:
+       Add me to the authors file
+       * configure.ac:
+       Increase the libdv requirement to >= version 0.100
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_src_convert),
+       (gst_dvdec_src_query), (gst_dvdec_handle_sink_event),
+       (gst_dvdec_push), (gst_dvdec_loop), (gst_dvdec_change_state):
+       * ext/dv/gstdvdec.h:
+       Add support for the new_media flag when sending DISCONT events
+       Make the querying work when video pad is not linked
+
+2004-06-07  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * gst/mixmatrix/mixmatrix.c: (gst_mixmatrix_init):
+         create a NULL-initialized array of pads, so we don't think they
+         exist already. (fixes #143130)
+
+2004-06-07  Benjamin Otte  <otte@gnome.org>
+
+       * gst/mixmatrix/mixmatrix.c: (gst_mixmatrix_init),
+       (mixmatrix_resize), (gst_mixmatrix_set_all_caps),
+       (gst_mixmatrix_request_new_pad), (gst_mixmatrix_loop):
+         don't use // coments
+
+2004-06-07  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_samples_to_timestamp):
+         cast to GstClockTime to get higher granularity
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         use gst_element_set_time_delay to get the exact time
+       * ext/mad/gstmad.c: (gst_mad_chain):
+         use the negotiated rate instead of the current frame's rate which
+         might be wrong because of bit errors. This avoids emitting totally
+         bogus timestamps and screwing sync.
+       (fixes #143454)
+
+2004-06-07  Tim-Philipp Müller  <t.i.m@zen.co.uk>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * gst/adder/gstadder.c: (gst_adder_loop):
+         properly error out when no negotiation has happened yet. (fixes
+         #143032)
+
+2004-06-06  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event):
+         forward correctly transformed offset in discont events. Based on
+         patch by Arwed v. Merkatz. (fixes #142851)
+
+2004-06-06  David Schleef  <ds@schleef.org>
+
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c: that's
+       G_HAVE_GNUC_VARARGS, not G_HAVE_GNU_VARARGS.  Should fix compile
+       problems on several systems.
+
+2004-06-06  Benjamin Otte  <otte@gnome.org>
+
+       * ext/vorbis/vorbisdec.c: (gst_vorbis_dec_init):
+         use explicit caps on the srcpad
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+         properly error out if caps couldn't be set (fixes #142764)
+
+2004-06-06  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_probe_hw_params),
+       (gst_alsa_set_hw_params), (gst_alsa_set_sw_params),
+       (gst_alsa_start_audio):
+         - don't call set_periods_integer anymore, it breaks the
+         configuration randomly
+         - call snd_pcm_hw_params_set_access directly instead of using masks
+         - don't fail if the sw_params can't be set, just use the default
+         params and hope it works. Alsalib has weird issues when you touch
+         sw_params and does no proper error reporting about what failed.
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio),
+       (gst_alsa_close_audio):
+         make our alsa debugging go via gst debugging and not conditionally
+         defined
+       * ext/alsa/gstalsa.h:
+         add ALSA_DEBUG_FLUSH macro
+       * ext/alsa/gstalsaplugin.c: (gst_alsa_error_wrapper),
+       (plugin_init):
+         wrap alsa errors to be printed via the gst debugging system and not
+         spammed to stderr
+
+2004-06-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_init),
+       (gst_qtdemux_handle_src_query), (gst_qtdemux_handle_src_event),
+       (gst_qtdemux_handle_sink_event), (gst_qtdemux_change_state),
+       (gst_qtdemux_loop_header), (qtdemux_dump_mvhd),
+       (qtdemux_parse_trak):
+       * gst/qtdemux/qtdemux.h:
+         Bitch. Also known as seeking, querying & co.
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
+       (gst_osssink_change_state):
+       * sys/oss/gstosssink.h:
+         Resyncing is for weenies, this hack is no longer needed and was
+         broken anyway (since it - unintendedly - always leaves resync to
+         TRUE).
+
+2004-06-05  Andrew Turner <zxombie@hotpop.com>
+
+       * gst/tcp/gsttcp.c: portability (Solaris 10/FreeBSD)
+       * gst/tcp/gsttcpclientsrc.h: idem
+         - define MSG_NOSIGNAL if not done
+         - include unistd.h for off_t
+          (fixes #143749)
+
+2004-06-05  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+       * ext/kio/Makefile.am:
+         check for qt's moc preprocessor explicitly and use it
+
+2004-06-03  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * gst/tcp/gsttcp.c: (gst_tcp_socket_write):
+         don't get a signal for EPIPE on socket writes
+         (somebody check if this works on other platforms)
+
+2004-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/alsa/gstalsaclock.c: (gst_alsa_clock_get_type):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
+          check error condition on available samples correctly
+
+2004-06-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_get_time):
+          avoid a segfault
+       * gst/tcp/gsttcp.c: (gst_tcp_socket_write), (gst_tcp_socket_read),
+       (gst_tcp_gdp_read_header), (gst_tcp_gdp_read_caps):
+       * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_gdp_read_caps),
+       (gst_tcpserversrc_gdp_read_header):
+         use ssize_t over size_t since the former is signed and thus the
+         check for error codes can work
+
+2004-06-02  Wim Taymans  <wim@fluendo.com>
+
+       reviewed by: Johan
+
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_class_init),
+       (gst_multipart_mux_loop):
+       Oops
+
+2004-06-02  Wim Taymans  <wim@fluendo.com>
+
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_class_init),
+       (gst_multipart_mux_init), (gst_multipart_mux_loop),
+       (gst_multipart_mux_get_property), (gst_multipart_mux_set_property),
+       (gst_multipart_mux_change_state):
+       Added configurable boundary specifier, added the value as a
+       caps field as well.
+
+2004-06-02  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcpclientsrc.c:
+       * gst/tcp/gsttcpclientsrc.h:
+       * gst/tcp/gsttcpserversrc.c:
+         - portability fix, to compile on OSX
+            (fixes #143146)
+
+       * sys/osxaudio/gstosxaudioelement.c:
+       * sys/osxaudio/gstosxaudiosink.c:
+       * sys/osxaudio/gstosxaudiosrc.c:
+         - compilation warnings on OSX
+            (fixes #143153)
+
+2004-06-02  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/vorbis/vorbisdec.c : sign warning fixes
+
+       * gst-libs/gst/mixer/mixertrack.c :
+         do no use defines which are glib 2.4 specific
+
+2004-06-01  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/flac/gstflactag.c: strip ending framing bit from vorbiscomment
+         buffer since libflac doesn't expect it (reports a sync error when
+         it encounters that)
+
+
+2004-06-01  Owen Fraser-Green  <owen@discobabe.net>
+
+       * gst-libs/gst/mixer/mixertrack.h: Changed struct syntax
+       * gst-libs/gst/mixer/mixertrack.c:
+       (gst_mixer_track_get_property), (get_mixer_track_init),
+       (get_mixer_track_get_property): Added property accessors
+       * gst-libs/gst/mixer/mixeroptions.h: Changed struct syntax
+       * gst-libs/gst/mixer/mixeroptions.c:
+       (gst_mixer_options_get_values): Added
+       * gst-libs/gst/mixer/mixer.h: Changed GstMixerClass syntax
+       * gst-libs/gst/mixer/mixer.c: Fixed comment
+
+
+2004-06-01  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio):
+          improve error messages on open
+
+
+2004-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay):
+          check if v4l-conf is in path
+
+2004-06-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/media-info/media-info-priv.c: (gmi_set_mime):
+          change assert to a more readable error message
+
+2004-05-31  Stephane Loeuillet  <stephane.loeuillet@tiscali.fr>
+
+       * gst-libs/gst/tuner/tunerchannel.h:
+         - add a freq_multiplicator field to make the conversion
+           between internal frequency unit and Hz
+       * sys/v4l/gstv4lelement.c:
+       * sys/v4l2/gstv4l2element.c:
+         - change default video device to /dev/video0
+       * sys/v4l/v4l_calls.c:
+       * sys/v4l2/v4l2_calls.c:
+         - we only expose frequency to the user in Hz instead of
+           bastard v4lX unit (either 62.5kHz or 62.5Hz)
+
+2004-05-31  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+         Initialise b_o_s and e_o_s variables
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         Add some unusual fourcc's from mplayer avi's
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_plugin_init):
+         Make the muxer have rank GST_RANK_NONE, so it doesn't mess up
+         autoplugging.
+
+2004-05-28  Wim Taymans  <wim@fluendo.com>
+
+       * configure.ac:
+       * gst/alpha/Makefile.am:
+       * gst/alpha/gstalpha.c: (gst_alpha_method_get_type),
+       (gst_alpha_get_type), (gst_alpha_base_init),
+       (gst_alpha_class_init), (gst_alpha_init), (gst_alpha_set_property),
+       (gst_alpha_get_property), (gst_alpha_sink_link), (gst_alpha_add),
+       (gst_alpha_chroma_key), (gst_alpha_chain),
+       (gst_alpha_change_state), (plugin_init):
+       A plugin to add an alpha channel to I420 video. Can optionally do
+       chroma keying.
+       * gst/multipart/Makefile.am:
+       * gst/multipart/multipart.c: (plugin_init):
+       * gst/multipart/multipartdemux.c: (gst_multipart_demux_base_init),
+       (gst_multipart_demux_class_init), (gst_multipart_demux_init),
+       (gst_multipart_demux_finalize), (gst_multipart_demux_handle_event),
+       (gst_multipart_find_pad_by_mime), (gst_multipart_demux_chain),
+       (gst_multipart_demux_change_state),
+       (gst_multipart_demux_plugin_init):
+       * gst/multipart/multipartmux.c: (gst_multipart_mux_get_type),
+       (gst_multipart_mux_base_init), (gst_multipart_mux_class_init),
+       (gst_multipart_mux_get_sink_event_masks), (gst_multipart_mux_init),
+       (gst_multipart_mux_sinkconnect), (gst_multipart_mux_pad_link),
+       (gst_multipart_mux_pad_unlink),
+       (gst_multipart_mux_request_new_pad),
+       (gst_multipart_mux_handle_src_event),
+       (gst_multipart_mux_next_buffer), (gst_multipart_mux_compare_pads),
+       (gst_multipart_mux_queue_pads), (gst_multipart_mux_loop),
+       (gst_multipart_mux_get_property), (gst_multipart_mux_set_property),
+       (gst_multipart_mux_change_state), (gst_multipart_mux_plugin_init):
+       A Multipart demuxer/muxer. Not sure if it violates specs. Used to
+       send multipart jpeg images to a browser.
+       * gst/videobox/Makefile.am:
+       * gst/videobox/README:
+       * gst/videobox/gstvideobox.c: (gst_video_box_fill_get_type),
+       (gst_video_box_get_type), (gst_video_box_base_init),
+       (gst_video_box_class_init), (gst_video_box_init),
+       (gst_video_box_set_property), (gst_video_box_get_property),
+       (gst_video_box_sink_link), (gst_video_box_i420),
+       (gst_video_box_ayuv), (gst_video_box_chain),
+       (gst_video_box_change_state), (plugin_init):
+       Crops or adds borders around an image. can do alpha channel
+       borders as well.
+       * gst/videomixer/Makefile.am:
+       * gst/videomixer/README:
+       * gst/videomixer/videomixer.c: (gst_videomixer_pad_get_type),
+       (gst_videomixer_pad_base_init), (gst_videomixer_pad_class_init),
+       (gst_videomixer_pad_get_sink_event_masks),
+       (gst_videomixer_pad_get_property),
+       (gst_videomixer_pad_set_property),
+       (gst_videomixer_pad_sinkconnect), (gst_videomixer_pad_link),
+       (gst_videomixer_pad_unlink), (gst_videomixer_pad_init),
+       (gst_video_mixer_background_get_type), (gst_videomixer_get_type),
+       (gst_videomixer_base_init), (gst_videomixer_class_init),
+       (gst_videomixer_init), (gst_videomixer_request_new_pad),
+       (gst_videomixer_handle_src_event),
+       (gst_videomixer_blend_ayuv_i420), (gst_videomixer_fill_checker),
+       (gst_videomixer_fill_color), (gst_videomixer_fill_queues),
+       (gst_videomixer_blend_buffers), (gst_videomixer_update_queues),
+       (gst_videomixer_loop), (gst_videomixer_get_property),
+       (gst_videomixer_set_property), (gst_videomixer_change_state),
+       (plugin_init):
+       Generic video mixer plugin, can handle multiple inputs all with
+       different framerates and video sizes. Is fully alpha channel
+       aware.
+
+2004-05-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+         Select first track as master track. Not sure how else to handle
+         that...
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_next_buffer):
+         Discard discont events. Should fix #142962.
+
+2004-05-26  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/Makefile.am:
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_interface_init),
+       (gst_alsa_mixer_build_list), (gst_alsa_mixer_get_volume),
+       (gst_alsa_mixer_set_volume), (gst_alsa_mixer_set_mute),
+       (gst_alsa_mixer_set_record), (gst_alsa_mixer_set_option),
+       (gst_alsa_mixer_get_option):
+       * ext/alsa/gstalsamixer.h:
+       * ext/alsa/gstalsamixeroptions.c:
+       (gst_alsa_mixer_options_get_type),
+       (gst_alsa_mixer_options_class_init), (gst_alsa_mixer_options_init),
+       (gst_alsa_mixer_options_new):
+       * ext/alsa/gstalsamixeroptions.h:
+       * ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_new):
+       * ext/alsa/gstalsamixertrack.h:
+         Add enumerations (as GstMixerOptions). Make correct distinction
+         between input/output tracks. Add capture/playback private flag.
+         Use flag to decide on whether to set capture or playback volumes
+         or switches. Use playback and record switches.
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/mixer/mixer-marshal.list:
+       * gst-libs/gst/mixer/mixer.c: (gst_mixer_class_init),
+       (gst_mixer_set_option), (gst_mixer_get_option),
+       (gst_mixer_mute_toggled), (gst_mixer_record_toggled),
+       (gst_mixer_volume_changed), (gst_mixer_option_changed):
+       * gst-libs/gst/mixer/mixer.h:
+       * gst-libs/gst/mixer/mixeroptions.c: (gst_mixer_options_get_type),
+       (gst_mixer_options_class_init), (gst_mixer_options_init),
+       (gst_mixer_options_dispose):
+       * gst-libs/gst/mixer/mixeroptions.h:
+         Add GstMixerOptions.
+       * sys/oss/gstosselement.c: (gst_osselement_class_probe_devices):
+         Rename Audio Mixer to OSS Mixer (similar to Alsa Mixer). Fix
+         broken device detection on computers with multiple OSS sound
+         cards.
+
+2004-05-26  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_fixate):
+         fixate nicely even when the peer is not negotiating
+
+2004-05-25  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/audioconvert/gstaudioconvert.c:
+       (gst_audio_convert_parse_caps):
+         make sure we don't allow depth > width
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_fixate):
+         fixate endianness to G_BYTE_ORDER as default
+       * gst/audioscale/gstaudioscale.c:
+         we don't handle another endianness as host-endianness
+
+2004-05-25  David Schleef  <ds@schleef.org>
+
+       * gst/ffmpegcolorspace/mem.c:  malloc() is in stdlib.h, not malloc.h
+
+2004-05-24  Benjamin Otte  <otte@gnome.org>
+
+       * ext/vorbis/oggvorbisenc.c: (gst_oggvorbisenc_sinkconnect),
+       (gst_oggvorbisenc_setup):
+         properly fail when we can't setup the vorbis encoder due to
+         unsupported settings
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_sinkconnect),
+       (gst_vorbisenc_setup):
+         same
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+         fix case where warnings occured when one pad was unlinked while the
+         other's link function was called
+
+2004-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/Makefile.am:
+          use GST_ENABLE_NEW
+
+2004-05-24  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/resample/private.h:
+         don't use optimizations that are #if 0'ed
+
+2004-05-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query):
+       Fix potential division by zero error and hopefully get
+       the position query right to get correct timestamps on avi
+       audio.
+
+2004-05-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst/videoscale/videoscale.c: (gst_videoscale_scale_nearest),
+       (gst_videoscale_scale_nearest_str2),
+       (gst_videoscale_scale_nearest_str4),
+       (gst_videoscale_scale_nearest_32bit),
+       (gst_videoscale_scale_nearest_24bit),
+       (gst_videoscale_scale_nearest_16bit):
+       Fix the scaling algorithm and avoid a buffer overflow.
+        removed the while loop in the scaling function as it
+       was used for point sampling only.
+
+2004-05-24  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_get_type),
+       (gst_id3_tag_class_init), (gst_id3_tag_init),
+       (gst_id3_tag_set_property), (gst_id3_tag_get_tag_to_render),
+       (gst_id3_tag_handle_event), (gst_id3_tag_do_caps_nego),
+       (gst_id3_tag_send_tag_event):
+         lots of fixes to make id3mux work and id3demux work correctly
+
+2004-05-24  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/Makefile.am:
+         add rules to build shout2send (was removed by accident
+         when this module was no more marked experimental/broken)
+
+2004-05-24  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       * ext/shout2/gstshout2.c:
+       * ext/shout2/gstshout2.h:
+         adding a "connection problem" signal to shout2send
+         (fixes #142954)
+
+2004-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/kio/kioreceiver.cpp:
+       * ext/kio/kioreceiver.h:
+          fix sign comparison issues
+
+2004-05-21  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/cdxaparse/gstcdxaparse.c:
+       * gst/cdxaparse/gstcdxaparse.h:
+         some renaming
+         add some checks/sanity
+         prepare for seek addition
+
+       * sys/sunaudio/gstsunaudio.c:
+         remove exported dupe init function
+
+2004-05-21  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_get_formats),
+       (gst_dvdec_src_convert), (gst_dvdec_sink_convert):
+         Fix format conversion and position querying.
+       * gst/debug/progressreport.c: (gst_progressreport_report):
+         Don't output a bogus total value that we didn't query.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support):
+         Always set XV_AUTOPAINT_COLORKEY to true. Fixes xvimagesink showing
+         only a blank window after xine has been used.
+
+2004-05-21  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * m4/as-arts.m4:
+         sync with upstream version to fix test on FC2
+         readd with -ko to preserve Id header
+
+2004-05-20  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * configure.ac:
+         test for FIONREAD ioctl in sys/filio.h for Solaris compat.
+       * gst/tcp/gsttcpclientsrc.c: idem
+       * gst/tcp/gsttcpserversink.c: idem
+       * gst/tcp/gsttcpserversrc.c: idem
+       * m4/gst-fionread.m4: idem
+
+       * sys/sunaudio/gstsunaudio.c: change category to Sink/Audio
+
+       * configure.ac: enable speex plugin for speex 1.1.5+
+       * ext/speex/gstspeexenc.c: fix cast warning
+
+       * ext/esd/README: fix typo
+
+2004-05-20  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Minor cosmetic change to convince the buildbot to
+       reautogen.
+       * sys/sunaudio/gstsunaudio.c: (gst_sunaudiosink_class_init),
+       (gst_sunaudiosink_init), (gst_sunaudiosink_getcaps),
+       (gst_sunaudiosink_pad_link), (gst_sunaudiosink_chain),
+       (gst_sunaudiosink_setparams), (gst_sunaudiosink_open),
+       (gst_sunaudiosink_close), (gst_sunaudiosink_change_state),
+       (gst_sunaudiosink_set_property), (gst_sunaudiosink_get_property):
+       More hacking.  Plays audio now.
+
+2004-05-20  David Schleef  <ds@schleef.org>
+
+       * configure.ac:
+       * sys/Makefile.am:
+
+2004-05-20  David Schleef  <ds@schleef.org>
+
+       * sys/osxaudio/Makefile.am:  New OS X audio plugin by Zaheer Abbas Merali
+       * sys/osxaudio/gstosxaudio.c:
+       * sys/osxaudio/gstosxaudioelement.c:
+       * sys/osxaudio/gstosxaudioelement.h:
+       * sys/osxaudio/gstosxaudiosink.c:
+       * sys/osxaudio/gstosxaudiosink.h:
+       * sys/osxaudio/gstosxaudiosrc.c:
+       * sys/osxaudio/gstosxaudiosrc.h:
+
+2004-05-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_set_header_on_caps),
+       (gst_vorbisenc_chain):
+          put the codec headers on the caps as streamheader as well as
+          pushing them out
+
+2004-05-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisenc.c: (vorbis_granule_time_copy),
+       (gst_vorbisenc_buffer_from_packet), (gst_vorbisenc_push_buffer),
+       (gst_vorbisenc_push_packet), (gst_vorbisenc_chain):
+        split up push_packet into two functions
+
+2004-05-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/.cvsignore:
+         ignore enums
+       * gst/tcp/Makefile.am:
+       * gst/tcp/README:
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcp.h:
+       * gst/tcp/gsttcpclientsink.c:
+       * gst/tcp/gsttcpclientsink.h:
+       * gst/tcp/gsttcpclientsrc.c:
+       * gst/tcp/gsttcpclientsrc.h:
+       * gst/tcp/gsttcpplugin.c:
+       * gst/tcp/gsttcpserversink.c:
+       * gst/tcp/gsttcpserversink.h:
+       * gst/tcp/gsttcpserversrc.c:
+       * gst/tcp/gsttcpserversrc.h:
+          add new tcp elements
+
+2004-05-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/law/mulaw-conversion.c: (mulaw_encode):
+       Fix overflow bug in ulaw encoding.
+
+2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstmad.c: (gst_mad_handle_event):
+         don't unref the event twice
+
+2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         remove -Wno-sign-compare
+
+2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         remove -DG_DISABLE_DEPRECATED. It's not usable without workarounds
+         if you want to work against glib 2.2 and 2.4
+
+2004-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tcp/Makefile.am:
+       * gst/tcp/gsttcp.c:
+       * gst/tcp/gsttcp.h:
+       * gst/tcp/gsttcpsink.h:
+       * gst/tcp/gsttcpsrc.h:
+          gsttcp -> gsttcpplugin + CVS surgery in preparation for tcp merge
+
+2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/debug/tests.c: (md5_get_value):
+         fix segfault on gst-inspect
+
+2004-05-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/debug/testplugin.c:
+       * gst/debug/tests.c:
+       * gst/debug/tests.h:
+         add new extensible and configurable testing element. Current tests
+         include buffer count, stream length, timestamp/duration matching and
+         md5.
+       * gst/debug/Makefile.am:
+       * gst/debug/gstdebug.c: (plugin_init):
+         add infrastructure for new element
+
+2004-05-19  Johan Dahlin  <johan@gnome.org>
+
+       * ext/dv/gstdvdec.c (gst_dvdec_quality_get_type): Add proper
+       ending of the array. Fixes gst-inspect segfault on ppc.
+
+2004-05-19  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/dirac/gstdiracdec.cc : change category to Codec/Decoder/Video
+
+       * m4/a52.m4 : don't fix a test that should fail with current a52dec lib
+
+2004-05-18  David Schleef  <ds@schleef.org>
+
+       * gst/ffmpegcolorspace/imgconvert.c: (img_convert): Fixes for
+       warnings (bugs, actually) noticed by gcc but not forte.
+
+2004-05-18  David Schleef  <ds@schleef.org>
+
+       * sys/sunaudio/Makefile.am:
+       * sys/sunaudio/gstsunaudio.c: New sunaudiosink
+
+2004-05-18  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_change_state),
+       (gst_qtdemux_loop_header):  Patch from dcm@acm.org (David Moore)
+       to allow qtdemux to use non-seekable streams. (bug #142272)
+
+2004-05-18  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/resample/resample.c: (gst_resample_sinc_ft_s16),
+       (gst_resample_sinc_ft_float): Remove use of static temporary
+       buffer.  This code was obviously not supposed to last long, but
+       it's stuck in our ABI, so it required a little hack to make it
+       ABI-compatible.  Fixes #142585.
+       * gst-libs/gst/resample/resample.h: same.
+
+2004-05-18  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Add sunaudio
+       * examples/Makefile.am: make gstplay depend on gconf
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c: Remove c99-isms
+       * gst/ffmpegcolorspace/imgconvert.c: (build_rgb_palette),
+       (convert_table_lookup), (img_convert): remove c99-isms
+       * gst/ffmpegcolorspace/imgconvert_template.h: make a constant
+          unsigned, to fix a warning on Solaris
+       * gst/mpeg1sys/systems.c: bcopy->memcpy
+       * gst/rtjpeg/RTjpeg.c: (RTjpeg_yuvrgb8): bcopy->memcpy
+       * sys/Makefile.am: Add sunaudio
+
+2004-05-18  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_get_type), (gst_ogg_mux_init),
+       (gst_ogg_mux_sinkconnect), (gst_ogg_mux_request_new_pad),
+       (gst_ogg_mux_next_buffer), (gst_ogg_mux_push_page),
+       (gst_ogg_mux_compare_pads), (gst_ogg_mux_queue_pads),
+       (gst_ogg_mux_loop):
+       Fix an ugly memleak where the muxer didn't flush enough ogg
+       pages. This also resulted in badly muxed ogg files.
+
+2004-05-18  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/asfdemux/asfheaders.c :
+       * gst/asfdemux/asfheaders.h :
+       * gst/asfdemux/gstasfdemux.c :
+         - fix ASF_OBJ_PADDING guid
+         - add 3 new object guids (language list, metadata,
+            extended stream properties)
+          - add a function to parse extended header objects
+
+2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/oss/gstosselement.c: (gst_osselement_sync_parms):
+         remove leftover debugging g_print
+
+2004-05-17  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_handle_event):
+         Fix for when the first format in a discont event is not a
+         byte-based one. Should fix #137710.
+
+2004-05-18  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * m4/a52.m4 : fix compilation with -Wall -Werror
+       * m4/libfame.m4 : idem
+       * m4/libmikmod.m4 : idem
+
+2004-05-17  Benjamin Otte  <otte@gnome.org>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
+         signal the new tags before giving up the reference
+
+2004-05-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/shout2/gstshout2.c:
+         use application/ogg instead of application/x-ogg (patch by Patrick
+         Guimond, fixes #142432)
+       * sys/oss/gstosselement.c: (gst_osselement_reset),
+       (gst_osselement_sync_parms):
+         don't set fragment size unless specified (fixes #142493)
+
+2004-05-17  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * configure.ac : fix compilation of v4l2src with "-Wall -Werror"
+         fixes #142664
+
+2004-05-17  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         compute offsets correctly for internal buffers so timestamps are set
+         correctly when we can't seek. Also handle cases where there are no
+         offsets. (based on a patch by David Moore, fixes #142507)
+
+2004-05-17  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         use correct variable when determining amount of data to skip so we
+         don't skip into the void and segfault
+
+2004-05-16  Benjamin Otte  <otte@gnome.org>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_audio_caps):
+         Hi, I'm a memleak
+
+2004-05-16  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/asfdemux/gstasfdemux.c:
+         - fix a mem leak and always propagate tags
+         - add WMV3 to known video codecs (but no decoder yet)
+         - replace "surplus data" at end of audio header for what
+           it is : codec specific data
+         - fix a typo
+
+2004-05-16  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       reviewed by: Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/audio/audioclock.c:
+         Fix wrong return type (#142205).
+
+2004-05-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mad/gstmad.c: (gst_mad_class_init), (gst_mad_init):
+         Ignore CRCs by default (fixes #142566).
+
+2004-05-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_open),
+       (gst_alsa_mixer_close), (gst_alsa_mixer_supported),
+       (gst_alsa_mixer_build_list), (gst_alsa_mixer_free_list),
+       (gst_alsa_mixer_change_state), (gst_alsa_mixer_list_tracks),
+       (gst_alsa_mixer_get_volume), (gst_alsa_mixer_set_volume),
+       (gst_alsa_mixer_set_mute), (gst_alsa_mixer_set_record):
+         Fix for cases where we fail to attach to a mixer.
+
+2004-05-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek):
+         Don't touch events after not owning them anymore.
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_base_init),
+       (gst_wavparse_fmt), (gst_wavparse_other),
+       (gst_wavparse_handle_seek), (gst_wavparse_loop),
+       (gst_wavparse_pad_convert), (gst_wavparse_pad_query),
+       (gst_wavparse_srcpad_event):
+       * gst/wavparse/gstwavparse.h:
+         Add seeking, fix querying.
+
+2004-05-16  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
+         - process comments even if they don't end with \0\0
+            g_convert would ignore them if present and works well without them
+
+2004-05-16  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_caps), (gst_alsa_get_caps):
+         simplify caps
+
+2004-05-16  Benjamin Otte  <otte@gnome.org>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
+         don't write to memory we might not write to - g_convert does that
+         for us anyway (fixes #142613)
+       (gst_asf_demux_audio_caps):
+         comment out gst_util_dump_mem
+
+2004-05-16  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         compute correct expected timestamps after seek (broken since
+         last commit)
+       * ext/gdk_pixbuf/pixbufscale.c: (pixbufscale_init):
+         rename element and debugging category to gdkpixbufscale
+
+2004-05-16  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         add error checking to snd_pcm_delay and remove duplicate call to
+         snd_pcm_delay that caused issues (see inline code comments)
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_get_time):
+         make more readable and fix return value when snd_pcm_delay fails
+       (fixes #142586)
+
+2004-05-15  Jan Schmidt  <thaytan@mad.scientisti.com>
+       * ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_method_get_type),
+       (gst_pixbufscale_get_type), (gst_pixbufscale_base_init),
+       (gst_pixbufscale_class_init), (gst_pixbufscale_getcaps),
+       (gst_pixbufscale_link), (gst_pixbufscale_init),
+       (gst_pixbufscale_handle_src_event), (pixbufscale_scale),
+       (gst_pixbufscale_chain), (gst_pixbufscale_set_property),
+       (gst_pixbufscale_get_property), (pixbufscale_init):
+       * ext/gdk_pixbuf/pixbufscale.h:
+       Add these files I forgot earlier
+
+2004-05-15  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/gdk_pixbuf/Makefile.am:
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (plugin_init):
+       * ext/gdk_pixbuf/gstgdkpixbuf.h:
+       Add new pixbufscale element to scale RGB video
+       using gdk_pixbuf, because gdk_pixbuf does BILINEAR
+       and HYPER interpolation correctly.
+       * ext/theora/theoraenc.c: (theora_enc_chain),
+       Discard buffer and return if explicit caps could not be set
+       (theora_enc_get_property):
+       Make _get return kbps for the bitrate consistent with
+       the _set function.
+
+
+2004-05-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/libvisual/visual.c: (gst_visual_chain):
+         add missing visual_audio_analyze
+
+2004-05-14  David Schleef  <ds@schleef.org>
+
+       * ext/esd/esdsink.c: (gst_esdsink_chain): Fix crash when ESD
+       is killed while we're playing.
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse): call
+       gst_element_no_more_pads().
+
+2004-05-14  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst-libs/gst/riff/riff-read.c :
+         - fix INFO tag extraction in RIFF/AVI files
+            because gst_event_unref (event) also freed taglist
+          - avoid a mem leak
+
+2004-05-13  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/mad/gstid3tag.c : move from "Codec/(Dem/M)uxer" to "Codec/(Dem/M)uxer/Audio"
+       * gst/wavenc/gstwavenc.c : move from "Codec/Encoder/Audio" to "Codec/Muxer/Audio"
+
+       * gst/auparse/gstauparse.c :
+         - add code (commented for now) to support audio/x-adpcm on src pad
+           (we have no decoder for those layout yet)
+
+       * gst/cdxaparse/gstcdxaparse.c :
+       * gst/cdxaparse/gstcdxaparse.h :
+         - partial rewrite using RiffRead (ripped iain's wavparse code)
+
+       * gst/rtp/gstrtpL16enc.c : typo
+       * gst/rtp/gstrtpgsmenc.c : typo
+
+2004-05-13  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         check for exact version of libvisual, it's not supposed to be
+         API/ABI stable yet
+
+2004-05-13  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_push):
+         signal no-more-pads
+
+2004-05-13  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_src_convert)
+       Report which format was used for GST_FORMAT_DEFAULT
+       * gst/debug/Makefile.am:
+       * gst/debug/gstdebug.c: (plugin_init):
+       * gst/debug/progressreport.c: (gst_progressreport_base_init),
+       (gst_progressreport_class_init), (gst_progressreport_init),
+       (gst_progressreport_report), (gst_progressreport_set_property),
+       (gst_progressreport_get_property), (gst_progressreport_chain),
+       (gst_progressreport_plugin_init):
+       Add progressreport element for testing.
+
+2004-05-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get), (gst_v4lsrc_change_state):
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4lmjpegsink_calls.c: (gst_v4lmjpegsink_playback_init):
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_capture_init):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_capture_init),
+       (gst_v4lsrc_grab_frame):
+          add more debugging
+          send a discont at start
+
+2004-05-12  Colin Walters  <walters@redhat.com>
+
+       * gst/asfdemux/gstasfdemux.c (gst_asf_demux_process_segment): Avoid
+       inflooping if we can't find a chunk.  Or in other words, don't blow
+       chunks if we don't have a chunk to blow.
+
+2004-05-13  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_get):
+       Remove old debug output
+       * ext/dv/gstdvdec.c: (gst_dvdec_quality_get_type),
+       (gst_dvdec_class_init), (gst_dvdec_loop), (gst_dvdec_change_state),
+       (gst_dvdec_set_property), (gst_dvdec_get_property):
+       Change the quality setting to an enum, so it works from gst-launch
+       Don't renegotiate a non-linked pad. Allows audio only decoding.
+       * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_getcaps),
+       (gst_deinterlace_link), (gst_deinterlace_init):
+       * gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps),
+       (gst_videodrop_link):
+       Some caps negotiation fixes
+
+2004-05-12  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/tarkin/gsttarkin.c :
+         - Change RANK from NONE to PRIMARY
+       * ext/gdk_pixbuf/gstgdkpixbuf.c :
+         - Change RANK from NONE to MARGINAL
+       * ext/divx/gstdivxenc.c :
+         - Change RANK from PRIMARY to NONE (encoder/spider issue)
+
+2004-05-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisenc.c: (vorbis_granule_time_copy),
+       (gst_vorbisenc_push_packet):
+          copy a function that was added between 1.0 and 1.0.1 until we
+          depend on worthwhile features of post-1.0
+
+2004-05-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         enable shout2 by default
+       * ext/shout2/gstshout2.c: (gst_shout2send_protocol_get_type),
+       (gst_shout2send_base_init), (gst_shout2send_init),
+       (gst_shout2send_connect), (gst_shout2send_change_state):
+       * ext/shout2/gstshout2.h:
+         make this work again. Based on a patch by Zaheer Abbas Merali (fixes
+         #142262)
+       * ext/theora/theora.c: (plugin_init):
+         don't set rank on encoders
+
+2004-05-11  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_audio_caps):
+         Use codec_data property instead of flag1 and flag2 for wma
+
+2004-05-11  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/cdxaparse/gstcdxaparse.c :
+         - Add mpegversion to CAPS to make it link
+         - Rank is as GST_RANK_SECONDARY instead of NONE
+       * gst/auparse/gstauparse.c :
+         - Document all audio encoding we can encounter from Solaris 9
+           headers and libsndfile information.
+         - Increase max. rate from 48000 to 192000 (to match other elements)
+         - Don't try to play junk data between header and samples
+
+2004-05-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/libvisual/visual.c: (gst_visual_getcaps):
+         use the right caps depending on endianness (I hope)
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_plugin_init):
+         use GST_RANK_NONE for all non-decoding elements or spider gets
+         mighty confused
+
+2004-05-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment):
+         Fix some odd cases and fix BE metadata parsing of unicode16 text.
+
+2004-05-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/switch/gstswitch.c: (gst_switch_release_pad),
+       (gst_switch_request_new_pad), (gst_switch_poll_sinkpads),
+       (gst_switch_loop), (gst_switch_get_type):
+         whoever that was: DO NOT IMPORT PRIVATE SYMBOLS THAT ARE NOT IN
+         HEADERS. Had to be said.
+
+2004-05-10  David Schleef  <ds@schleef.org>
+
+       * configure.ac: Add prototype Dirac support.
+       * ext/Makefile.am:
+       * ext/dirac/Makefile.am:
+       * ext/dirac/gstdirac.cc:
+       * ext/dirac/gstdiracdec.cc:
+
+2004-05-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/auparse/gstauparse.c: (gst_auparse_class_init),
+       (gst_auparse_init), (gst_auparse_chain),
+       (gst_auparse_change_state):
+         Hack around spider. Remove me some day please.
+
+2004-05-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/auparse/gstauparse.c: (gst_auparse_chain):
+         Fix for some uninitialized variables in previous patch, also
+         makes it work. Fixes #142286 while we're at it.
+
+2004-05-11  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/auparse/gstauparse.c:
+               fixes a-law, adds mu-law, linear pcm (8,16,24,32), ieee (32, 64)
+               only unsupported formats are ADPCM/CCITT G.72x
+               reviewed by Ronald
+       * gst-libs/gst/audio/audio.h: adds 24bit depth to PCM (x-raw-int)
+
+2004-05-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/vorbis/Makefile.am:
+       * ext/vorbis/README:
+       * ext/vorbis/oggvorbisenc.c: (gst_oggvorbisenc_get_formats),
+       (oggvorbisenc_get_type), (vorbis_caps_factory), (raw_caps_factory),
+       (gst_oggvorbisenc_base_init), (gst_oggvorbisenc_class_init),
+       (gst_oggvorbisenc_sinkconnect), (gst_oggvorbisenc_convert_src),
+       (gst_oggvorbisenc_convert_sink),
+       (gst_oggvorbisenc_get_query_types), (gst_oggvorbisenc_src_query),
+       (gst_oggvorbisenc_init), (gst_oggvorbisenc_get_tag_value),
+       (gst_oggvorbisenc_metadata_set1), (gst_oggvorbisenc_set_metadata),
+       (get_constraints_string), (update_start_message),
+       (gst_oggvorbisenc_setup), (gst_oggvorbisenc_write_page),
+       (gst_oggvorbisenc_chain), (gst_oggvorbisenc_get_property),
+       (gst_oggvorbisenc_set_property), (gst_oggvorbisenc_change_state):
+       * ext/vorbis/oggvorbisenc.h:
+       * ext/vorbis/vorbis.c: (plugin_init):
+       * ext/vorbis/vorbisenc.c: (vorbis_caps_factory),
+       (raw_caps_factory), (gst_vorbisenc_class_init),
+       (gst_vorbisenc_init), (gst_vorbisenc_setup),
+       (gst_vorbisenc_push_packet), (gst_vorbisenc_chain),
+       (gst_vorbisenc_get_property), (gst_vorbisenc_set_property):
+       * ext/vorbis/vorbisenc.h:
+       Added a raw vorbis encoder to be used with the oggmuxer.
+       We still need the old encoder for some gnome applications,
+       read the README to find out how that works.
+       The raw encoder is called "rawvorbisenc" until 0.9.
+
+2004-05-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/ogg/gstogg.c: (plugin_init):
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_plugin_init),
+       (gst_ogg_print):
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_get_type),
+       (gst_ogg_mux_base_init), (gst_ogg_mux_class_init),
+       (gst_ogg_mux_get_sink_event_masks), (gst_ogg_mux_init),
+       (gst_ogg_mux_sinkconnect), (gst_ogg_mux_pad_link),
+       (gst_ogg_mux_pad_unlink), (gst_ogg_mux_request_new_pad),
+       (gst_ogg_mux_handle_src_event), (gst_ogg_mux_next_buffer),
+       (gst_ogg_mux_push_page), (gst_ogg_mux_compare_pads),
+       (gst_ogg_mux_queue_pads), (gst_ogg_mux_loop),
+       (gst_ogg_mux_get_property), (gst_ogg_mux_set_property),
+       (gst_ogg_mux_change_state), (gst_ogg_mux_plugin_init):
+       Added an ogg muxer.
+       Small typo fixes in the demuxer.
+
+2004-05-10  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (theora_enc_sink_link), (theora_push_packet), (theora_enc_chain),
+       (theora_enc_change_state), (theora_enc_set_property),
+       (theora_enc_get_property):
+       Mark the last packet with an EOS flag which is not really needed
+       in gstreamer.
+       Do some better video framerate initialisation.
+       Update the buffer timestamp.
+
+2004-05-10  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_change_state):
+       Return the result of the parent state change call
+
+2004-05-10  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * gst/law/alaw.c : alawdec should be registered with type ALAWDEC, not ALAWENC
+       * gst/law/alaw-decode.c : put audio/x-alaw on pads, instead of audio/x-mulaw
+       * gst/law/alaw-encode.c : (idem)
+       * ext/a52dec/gsta52dec.c : mark audio/a52, audio/ac3 as deprecated in a comment
+       * gst/ac3parse/gstac3parse.c : audio/ac3 => audio/x-ac3
+       * gst/realmedia/rmdemux.c : audio/a52 => audio/x-ac3
+
+2004-05-09  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
+         don't use a fixed buffer size when writing variable length data to
+         it. Fixes memory corruption and makes alsasrc work
+
+2004-05-09  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssink.c:
+       (_gst_boolean_allow_overwrite_accumulator),
+       (gst_gnomevfssink_class_init), (gst_gnomevfssink_open_file):
+         Run glib's default signal handler (??) in RUN_CLEANUP rather than
+         RUN_LAST, and don't use that to set the accumulator value because
+         then it's always FALSE.
+
+2004-05-09  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_audio_caps),
+       (gst_riff_create_audio_template_caps):
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head):
+         Fix for unaligned RIFF files (i.e. where all the chunks together
+         in a LIST chunk are not of the same size as the size given in
+         the LIST chunk header). Fixes several odd WAVE files. Also fix
+         ADPCM (block_align property) in audio, so that wavparse based
+         on this works now as it used to stand-alone.
+
+2004-05-09  Edward Hervey  <bilboed@bilboed.com>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/a52dec/gsta52dec.c:
+       * ext/divx/gstdivxdec.c:
+       * ext/divx/gstdivxenc.c:
+       * ext/dts/gstdtsdec.c: (gst_dtsdec_base_init):
+       * ext/faac/gstfaac.c: (gst_faac_base_init):
+       * ext/faad/gstfaad.c: (gst_faad_base_init):
+       * ext/ivorbis/vorbisfile.c:
+       * ext/lame/gstlame.c:
+       * ext/libfame/gstlibfame.c:
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/musicbrainz/gsttrm.c: (gst_musicbrainz_base_init):
+       * ext/sidplay/gstsiddec.cc:
+       * ext/speex/gstspeexdec.c:
+       * ext/speex/gstspeexenc.c:
+       * ext/xvid/gstxviddec.c:
+       * ext/xvid/gstxvidenc.c:
+         correct klasses. Mostly s,Codec/(Audio|Video),\1/Codec,
+         (fixes #142193)
+
+2004-05-08  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (device_list),
+       (gst_alsa_class_probe_devices):
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_open):
+         Fix alsa oddness in mixer after the combination of using mixer
+         in source/sink elements and using hw:x,y instead of just hw:x.
+
+2004-05-09  Benjamin Otte  <otte@gnome.org>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_destroy_sourcepad),
+       (gst_wavparse_create_sourcepad):
+         make PAUSED=>READY=>PAUSED=READY work by not destroying NULL
+         sourcepads
+
+2004-05-09  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         allow discont events before caps nego
+
+2004-05-08  Benjamin Otte  <otte@gnome.org>
+
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event):
+         don't leak events
+
+2004-05-08  Benjamin Otte  <otte@gnome.org>
+
+       * gst/level/gstlevel.c: (gst_level_link), (gst_level_chain),
+       (gst_level_change_state), (gst_level_init):
+       * gst/level/gstlevel.h:
+         figure out if we're initialized directly instead of keeping a
+         variable that's wrong in 90% of cases
+         don't initialize pads and then leak them and use a new unitialized
+         pad. (fixes #142084)
+         these were bugs so n00bish I didn't find them for an hour :/
+
+2004-05-08 Iain <iain@prettypeople.org>
+
+       * gst/wavparse/gstwavparse.[ch]: Rewrote to use RiffRead instead.
+       * gst-libs/gst/riff/riff-read.c (gst_riff_read_peek_head): Unstatic it
+       (gst_riff_read_element_data): Ditto, and added a got_bytes argument to
+       return the length that was read.
+       (gst_riff_read_strf_auds): Allow fmt tags as well.
+
+2004-05-07  David Schleef  <ds@schleef.org>
+
+       * ext/faad/gstfaad.c: (gst_faad_sinkconnect): HACK to correct
+       signed char assumption in faad.h.
+
+2004-05-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_caps):
+         Missing break, detected by Daniel Gazard <daniel.gazard@free.fr>.
+
+2004-05-07  Colin Walters  <walters@redhat.com>
+
+       * gst/volume/gstvolume.c (gst_volume_dispose): Unref dpman.
+       * ext/flac/gstflacdec.c (gst_flacdec_dispose): Add dispose
+       function.
+       * gst/audioscale/gstaudioscale.c (gst_audioscale_dispose):
+       Add dispose function.
+
+2004-05-08  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/dv/gstdvdec.c: (gst_dvdec_video_link):
+         Fix caps nego and pad templates. RGB mode caps should
+         work now.
+       * ext/dvdnav/gst-dvd:
+         Move mpeg2dec inside the thread because otherwise the
+         queue rejects cap changes mid-stream
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_get_type),
+       (gst_mpeg2dec_flush_decoder):
+         For mpeg2dec > 0.4.0, call the flush function instead of
+         manually extracting all in-flight frames.
+       * ext/raw1394/gstdv1394src.c: (gst_dv1394src_factory),
+       (gst_dv1394src_init), (gst_dv1394src_iso_receive):
+         Change mime type video/dv go video/x-dv to match the
+         rest of gst-plugins
+
+2004-05-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_get_type),
+       (gst_alsa_sink_class_init):
+       * ext/alsa/gstalsasink.h:
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_get_type),
+       (gst_alsa_src_class_init):
+       * ext/alsa/gstalsasrc.h:
+         Make alsasink/src a subclass of alsamixer so that mixer stuff
+         shows up in gst-rec. Needs some finetuning.
+
+2004-05-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/lame/gstlame.c: (gst_lame_chain):
+         simplify
+       * ext/mad/gstmad.c: (gst_mad_handle_event):
+         fix event leak
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find):
+         be able to detect mp3 files < 4096 bytes
+
+2004-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/theoraenc.c: (gst_theora_enc_class_init),
+       (theora_enc_sink_link), (theora_push_packet), (theora_enc_chain),
+       (theora_enc_set_property), (theora_enc_get_property):
+       Also encode the first frame, cleanup some code.
+
+2004-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       Forward events first before deciding that negotiation was
+       not performed.
+
+2004-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_chain):
+       First process the events before deciding that negotiation
+       was not performed.
+
+2004-05-06  Wim Taymans  <wim@fluendo.com>
+
+       * ext/theora/Makefile.am:
+       * ext/theora/theora.c: (plugin_init):
+       * ext/theora/theoradec.c: (theora_dec_change_state):
+       * ext/theora/theoraenc.c: (gst_theora_enc_base_init),
+       (gst_theora_enc_class_init), (gst_theora_enc_init),
+       (theora_enc_sink_link), (theora_enc_event), (theora_push_packet),
+       (theora_enc_chain), (theora_enc_change_state),
+       (theora_enc_set_property), (theora_enc_get_property):
+       Added a theora encoder, grouped the encoder and decoder into the
+       same plugin.
+
+2004-05-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_get_type),
+       (gst_jpegenc_chain):
+        fix DURATION on outgoing buffers
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_sink_event):
+        debug using time formats
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support),
+       (gst_xvimagesink_sink_link):
+        windows with width/height 0 generate X errors, so don't allow them
+
+2004-05-05  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (src_templ),
+       (gst_mpeg2dec_base_init), (gst_mpeg2dec_init),
+       (gst_mpeg2dec_negotiate_format):
+       * ext/mpeg2dec/gstmpeg2dec.h:
+         removed the static pad template so that we can add the
+         more accurate framerate value to the caps.
+
+
+2004-05-04  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         check for kdemacros.h, too (should fix #141821)
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event), (vorbis_dec_chain):
+         don't crash if no header was sent, but nicely error out (fixes part
+         of #141554)
+
+2004-05-04  Wim Taymans  <wim@fluendo.com>
+
+       * ext/mpeg2enc/gstmpeg2enc.cc: (gst_mpeg2enc_dispose): call the
+       parent dispose function to avoid segfault on destroy.
+
+2004-05-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sink_link),
+       (plugin_init):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_sink_link):
+        clean up debugging caps
+        also recreate xvimage when format has changed
+
+2004-05-04  Benjamin Otte  <otte@gnome.org>
+
+       * ext/libvisual/Makefile.am:
+       * ext/libvisual/visual.c: (gst_visual_class_init),
+       (gst_visual_init), (gst_visual_dispose), (gst_visual_getcaps),
+       (gst_visual_srclink), (gst_visual_chain),
+       (gst_visual_change_state), (plugin_init):
+         use a GstAdapter to correctly adapt buffer sizes - allows using a
+         framerate
+
+2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/gstv4lelement.h:
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get_fps), (gst_v4lsrc_getcaps),
+       (gst_v4lsrc_buffer_free):
+       * sys/v4l/v4l_calls.c: (gst_v4l_get_capabilities):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_queue_frame),
+       (gst_v4lsrc_sync_frame), (gst_v4lsrc_grab_frame),
+       (gst_v4lsrc_requeue_frame):
+        move some debugging categories around
+        query for fps index and set accordingly if found
+
+2004-05-03  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/lame/gstlame.c:
+       correct defaults that lame_init puts out of range
+
+2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/divx/gstdivxenc.c: (gst_divxenc_get_type),
+       (gst_divxenc_class_init):
+        fix range since -1 is the default
+       * gst/mpeg1sys/gstmpeg1systemencode.c:
+       (gst_mpeg1_system_encode_get_type), (gst_system_encode_multiplex):
+       * gst/rtjpeg/gstrtjpegdec.c: (gst_rtjpegdec_get_type),
+       (gst_rtjpegdec_chain):
+       * gst/rtjpeg/gstrtjpegenc.c: (gst_rtjpegenc_get_type),
+       (gst_rtjpegenc_chain):
+       * sys/qcam/gstqcamsrc.c: (gst_autoexp_mode_get_type),
+       (gst_qcamsrc_get_type), (gst_qcamsrc_change_state):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_get_type):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_get_type):
+       * sys/v4l/gstv4lsrc.c:
+       * sys/v4l/v4l_calls.c: (gst_v4l_open):
+       * sys/v4l/v4lmjpegsink_calls.c: (gst_v4lmjpegsink_playback_init):
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_capture_init):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_capture_init):
+       * sys/vcd/vcdsrc.c: (vcdsrc_get_type), (vcdsrc_get):
+          remove gst_info calls
+
+2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * po/af.po:
+       * po/az.po:
+       * po/en_GB.po:
+       * po/nl.po:
+       * po/sr.po:
+       * po/sv.po:
+          Updated translations
+
+2004-05-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioconvert/gstaudioconvert.c: (_fixate_caps_to_int):
+          refactor/comment code
+
+2004-05-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/Makefile.am:
+       * gst/asfdemux/asfheaders.c:
+       * gst/asfdemux/asfheaders.h:
+       * gst/asfdemux/gstasf.c: (plugin_init):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_get_type),
+       (gst_asf_demux_base_init), (gst_asf_demux_process_comment),
+       (gst_asf_demux_setup_pad):
+       * gst/asfdemux/gstasfdemux.h:
+       * gst/asfdemux/gstasfmux.c:
+       * gst/asfdemux/gstasfmux.h:
+         Add tagging support to demuxer, split out registration in its own
+         file instead of in demux (hacky), and prevent having some tables
+         in our memory multiple times (in asfheaders.h).
+
+2004-05-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_metadata):
+       * gst/matroska/matroska-ids.h:
+         Basic tag reading support.
+
+2004-04-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_audio_caps):
+         Really detect ac-3 audio.
+       * gst/typefind/gsttypefindfunctions.c: (matroska_type_find):
+         really detect matroska files (off-by-1).
+
+2004-04-30  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (gst_qtdemux_add_stream), (qtdemux_parse), (qtdemux_type_get),
+       (qtdemux_dump_stsz), (qtdemux_dump_stco), (qtdemux_dump_co64),
+       (qtdemux_dump_unknown), (qtdemux_parse_tree), (qtdemux_parse_udta),
+       (qtdemux_tag_add), (get_size), (gst_qtdemux_handle_esds): More qtdemux
+       hackage -- parse a lot more atoms, extract a few tags.  One might even
+       mistake this for tag support.  Maybe it is.
+       * gst/qtdemux/qtdemux.h:
+
+2004-04-30  Colin Walters  <walters@verbum.org>
+
+       * ext/alsa/gstalsasink.c (gst_alsa_sink_mmap): Plug a memleak.
+
+2004-04-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_getcaps):
+          remove broken nego fix
+
+2004-04-30  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/libvisual/Makefile.am:
+       * ext/libvisual/visual.c:
+         add initial support for libvisual (http://libvisual.sourceforge.net)
+         libvisual is still quite alpha, so expect crashes in there :)
+
+2004-04-29  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream), (qtdemux_parse),
+       (qtdemux_parse_trak), (get_size), (gst_qtdemux_handle_esds): Hacked
+       up qtdemux to make it spit out codec_data.  Do _not_ look at this
+       code; you will no longer respect me.
+
+2004-04-29  Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
+
+       * ext/alsa/gstalsa.c : (gst_alsa_class_probe_devices)
+       * ext/alsa/gstalsa.h :
+       change alsa pcm device discovery to find more than 1 device
+       per card. code review by Ronald.
+
+2004-04-29  David Schleef  <ds@schleef.org>
+
+       * sys/oss/gstosselement.c: (gst_osselement_rate_probe_check):
+       Add a check for a driver bug on FreeBSD.  (bug #140565)
+
+2004-04-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_get_type):
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_get_type),
+       (gst_jpegenc_getcaps):
+          move format setting to inner loop
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_getcaps):
+          use GST_PAD_CAPS if available so that we use already negotiated
+          caps
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (qtdemux_parse_moov), (qtdemux_parse):
+          extra debugging
+       * sys/qcam/qcam-Linux.c: (qc_lock_wait), (qc_unlock):
+       * sys/qcam/qcam-os.c: (qc_lock_wait), (qc_unlock):
+          move hardcoded path to DEFINE
+
+2004-04-28  David Schleef  <ds@schleef.org>
+
+       * gst/speed/gstspeed.c: (speed_parse_caps):  Fix caps parsing.
+       (bug #140064)
+
+2004-04-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_class_probe_devices):
+         Don't probe for playback device if we're a source element. Fixes
+         #139658.
+
+2004-04-29  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event),
+       (gst_id3_tag_chain):
+         rewrite buffer offset
+
+2004-04-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/dts/Makefile.am:
+       * ext/dts/gstdtsdec.c: (gst_dtsdec_get_type),
+       (gst_dtsdec_base_init), (gst_dtsdec_class_init), (gst_dtsdec_init),
+       (gst_dtsdec_channels), (gst_dtsdec_renegotiate),
+       (gst_dtsdec_handle_event), (gst_dtsdec_update_streaminfo),
+       (gst_dtsdec_loop), (gst_dtsdec_change_state),
+       (gst_dtsdec_set_property), (gst_dtsdec_get_property),
+       (plugin_init):
+       * ext/dts/gstdtsdec.h:
+         New DTS decoder.
+       * ext/faad/gstfaad.c: (gst_faad_sinkconnect),
+       (gst_faad_srcconnect):
+         Add ESDS atom handling (.m4a).
+
+2004-04-27  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (plugin_init):
+         Remove comment that makes no sense.
+       * ext/mad/gstid3tag.c: (gst_id3_tag_set_property):
+         Fix for obvious typo that resulted in warnings during gst-register.
+       * ext/xvid/gstxviddec.c: (gst_xviddec_src_link),
+       (gst_xviddec_sink_link):
+         Fix caps negotiation a bit better.
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):
+         We call this 'codec_data', not 'esds'.
+
+2004-04-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/monoscope/gstmonoscope.c:
+         make sure we only provide 256x128
+       * gst/monoscope/monoscope.c: (monoscope_init):
+         assert size of 256x128
+
+2004-04-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_init), (gst_v4lsrc_fixate),
+       (gst_v4lsrc_getcaps), (gst_v4lsrc_buffer_free):
+          fixate to max width and height of device
+
+2004-04-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * sys/v4l/gstv4l.c:
+       * sys/v4l/gstv4lsrc.c:
+       * sys/v4l/v4l_calls.c:
+       * sys/v4l/v4lsrc_calls.c:
+          fix for qc-usb driver which fakes having more than one buffer
+          by handing the same buffer twice, which confused GStreamer's/v4lsrc
+          buffer_free override
+          add debugging
+
+2004-04-27  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_class_init), (gst_videotestsrc_change_state),
+       (gst_videotestsrc_init), (gst_videotestsrc_get),
+       (gst_videotestsrc_set_property), (gst_videotestsrc_get_property):
+       * gst/videotestsrc/gstvideotestsrc.h:
+          add num-buffers property
+
+       2004-04-26  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (plugin_init):
+         set id3mux rank to NONE so it doesn't confuse spider
+         require audio/mpeg,mpegversion=1 in id3mux
+
+2004-04-26  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         detect faad correctly as non-working if it's indeed non-working
+
+2004-04-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_get_type),
+       (gst_jpegenc_class_init), (gst_jpegenc_getcaps):
+        fix _getcaps so it only negotiates to its supported format
+
+2004-04-25  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (_fixate_caps_to_int):
+         fix memleak
+
+2004-04-23  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_audio_caps):
+         audio/x-raw-int with height rules! not. Now it's depth.
+
+2004-04-22  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_create_sourcepad),
+       (gst_wavparse_parse_fmt), (gst_wavparse_handle_sink_event),
+       (gst_wavparse_loop):
+         Missing variable initialization. Add handling of DVI ADPCM. Fix
+         mis-parsing of LIST chunks. This works around a bug where we mis-
+         parse non-aligning LIST chunks (so LIST chunks where the contents
+         don't align with the actual LIST size). The correct fix is to use
+         rifflib, I'm not going to fix wavparse - too much work. All this
+         fixes #104878.
+
+2004-04-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/shout/gstshout.c: (gst_icecastsend_change_state):
+         fix shoutcast not working (fixes #140844)
+
+2004-04-22  Benjamin Otte  <otte@gnome.org>
+
+       * ext/hermes/gsthermescolorspace.c:
+       (gst_hermes_colorspace_caps_remove_format_info):
+       * gst/colorspace/gstcolorspace.c:
+       (gst_colorspace_caps_remove_format_info):
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_caps_remove_format_info):
+         s/gst_caps_simplify/gst_caps_do_simplify/
+
+2004-04-22  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         mpegversion is an int
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_base_init):
+         don't try to create pad templates with NULL caps, use any caps
+         instead.
+
+2004-04-20  David Schleef  <ds@schleef.org>
+
+       * ext/sdl/Makefile.am: Link against libgstinterfaces, not
+       libgstxoverlay.  jmmv@menta.net (Julio M. Merino Vidal)
+       (bug #140384)
+
+2004-04-20  Daniel Gazard  <daniel.gazard@epita.fr>
+
+       reviewed by David Schleef
+
+       * ext/mad/gstid3tag.c: Add stdlib.h
+       * gst/rtp/gstrtpgsmenc.c: same
+       * gst/tags/gstid3tag.c: same
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get): Fix GST_DISABLE_LOADSAVE
+       * gst/tcp/gsttcpsink.c: (gst_tcpsink_sink_link): Adjust
+       GST_DISABLE_LOADSAVE use.
+       * gst/udp/gstudpsink.c: (gst_udpsink_sink_link): Likewise.
+       * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_get): Likewise.
+       * ext/gnomevfs/gstgnomevfssrc.c: Include <stdlib.h> (needed by
+       atol(3)).
+       * sys/oss/gstosselement.h: Include <sys/types.h> (needed for dev_t).
+       * gst/tags/gstvorbistag.c: Include <stdlib.h> (needed by
+       strtoul(3)).
+       * gst/rtp/gstrtpL16enc.c: Include <stdlib.h> (needed by random(3)).
+       * ext/mad/Makefile.am: (libgstmad_la_CFLAGS): Add $(MAD_CFLAGS)
+       $(ID3_CFLAGS).
+       * ext/libfame/Makefile.am: (libgstlibfame_la_CFLAGS): Add
+       $(LIBFAME_CFLAGS).
+
+2004-04-20  David Schleef  <ds@schleef.org>
+
+       * gst/realmedia/rmdemux.c:  This was supposed to part of the
+       last checkin.  Same idea.
+
+2004-04-20  Daniel Gazard  <daniel.gazard@epita.fr>
+
+       reviewed by David Schleef
+
+       * configure.ac: bump required gstreamer version to 0.8.1.1
+       because of following changes [--ds]
+
+       * gst-libs/gst/riff/riff-read.c:  Include gst/gstutils.h.
+       (gst_riff_peek_head, gst_riff_peek_list, gst_riff_read_list)
+       (gst_riff_read_header):  Use GST_READ_UINT*
+       macros to access possibly unaligned memory.
+
+       * gst/typefind/gsttypefindfunctions.c: Include gst/gstutils.h.
+       (mp3_type_find):  Use GST_READ_UINT*
+       macros to access possibly unaligned memory.
+       (mp3_type_find, mpeg1_parse_header, qt_type_find)
+       (speex_type_find): Likewise
+
+       * gst/tags/gstvorbistag.c: (ADVANCE): Likewise
+
+       * gst/qtdemux/qtdemux.c: Include stdlib.h (needed by realloc).
+       (QTDEMUX_GUINT32_GET, QTDEMUX_GUINT16_GET, QTDEMUX_FP32_GET)
+       (QTDEMUX_FP16_GET, QTDEMUX_FOURCC_GET)
+       (gst_qtdemux_loop_header, gst_qtdemux_loop_header)
+       (qtdemux_node_dump_foreach, qtdemux_tree_get_child_by_type)
+       (qtdemux_tree_get_sibling_by_type):  Use GST_READ_UINT*
+       macros to access possibly unaligned memory.
+
+       * gst/mpegstream/gstmpegpacketize.c: (parse_generic, parse_chunk):
+       Likewise.
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead)
+       (gst_mpeg_demux_parse_packet, gst_mpeg_demux_parse_pes): Likewise.
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+       Likewise.
+
+       * gst/mpeg2sub/gstmpeg2subt.c: (GST_BUFFER_DATA)
+       (gst_mpeg2subt_chain_subtitle): Likewise.
+
+       * gst/mpeg1videoparse/gstmp1videoparse.c: (mp1videoparse_parse_seq)
+       (gst_mp1videoparse_time_code, gst_mp1videoparse_real_chain):
+       Likewise.
+
+       * gst/mpeg1sys/buffer.c: (mpeg1mux_buffer_update_audio_info):
+       Likewise.
+
+       * gst/cdxaparse/gstcdxaparse.c: (gst_bytestream_peek_bytes):
+       Likewise.
+
+       * gst/asfdemux/gstasfdemux.c: (_read_var_length, _read_uint):
+       Likewise.
+
+2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+          update required version of GStreamer because of GST_TIME_FORMAT
+
+2004-04-20  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_init):
+         remove leftover g_print
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+         don't try setting only a subset of the caps. We don't want to kill
+         autoplugging on purpose
+
+2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/ximage/ximagesink.c: (plugin_init):
+       * sys/xvimage/xvimagesink.c: (plugin_init):
+          add debugging categories
+
+2004-04-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/en_GB.po:
+        * po/LINGUAS:
+          Adding en_GB translation (Gareth Owen)
+
+2004-04-20  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event),
+       (qtdemux_parse), (qtdemux_type_get), (qtdemux_dump_mvhd),
+       (qtdemux_dump_tkhd), (qtdemux_dump_stsd), (qtdemux_dump_unknown),
+       (qtdemux_parse_trak), (qtdemux_video_caps), (qtdemux_audio_caps):
+       A number of new features and hacks to extract the esds atom and
+       put it into the caps.  (bug #137724)
+
+2004-04-19  David Schleef  <ds@schleef.org>
+
+       * gconf/Makefile.am: Fix for non-GNU make
+       * gst-libs/gst/Makefile.am: Change directory order to handle
+       GstPlay linking with gstinterfaces
+       * gst-libs/gst/audio/make_filter: make use of tr portable
+       * gst-libs/gst/play/Makefile.am: Add intended \
+       * gst-libs/gst/xwindowlistener/xwindowlistener.c:
+       (gst_xwin_set_clips): Switch to ISO variadic macro. Use a
+       function prototype instead of void *.
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c: Switch to ISO variadic
+       macro.
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_chain): wrap NULL in GST_ELEMENT_ERROR call
+       * gst/videofilter/make_filter: make use of tr portable
+       * pkgconfig/Makefile.am: Remove GNU extension in Makefile target
+
+2004-04-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/uk.po:
+          Added Ukrainian translation (Maxim V. Dziumanenko)
+
+2004-04-18  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gsm/gstgsmdec.c: (gst_gsmdec_init), (gst_gsmdec_getcaps),
+       (gst_gsmdec_link), (gst_gsmdec_chain):
+         Fix capsnego, simplify chain function slightly.
+       * gst/qtdemux/qtdemux.c: (qtdemux_audio_caps):
+         Add GSM.
+
+2004-04-18  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_init),
+       (gst_wavparse_destroy_sourcepad), (gst_wavparse_create_sourcepad),
+       (gst_wavparse_parse_fmt), (gst_wavparse_change_state):
+         Hack to make wavparse work with spider (always -> sometimes pad).
+         Fixes #135862 && #140411.
+
+2004-04-18  Benjamin Otte  <otte@gnome.org>
+
+       * sys/oss/gstosselement.c: (gst_osselement_sync_parms),
+       (gst_osselement_rate_probe_check),
+       (gst_osselement_rate_check_rate), (gst_osselement_rate_add_rate):
+         get rid of \n in debug output
+
+2004-04-17  Iain <iain@prettypeople.org>
+
+       * gst/wavparse/gstwavparse.c (gst_wavparse_loop): Allow all events,
+       not just EOS.
+
+2004-04-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_get_type),
+       (gst_id3_tag_class_init), (gst_id3_tag_get_caps),
+       (gst_id3_tag_add_src_pad), (gst_id3_tag_init),
+       (gst_id3_tag_set_property), (gst_id3_tag_do_caps_nego),
+       (gst_id3_tag_src_link), (gst_id3_tag_chain),
+       (gst_id3_tag_change_state), (plugin_init):
+         deprecate id3tag element and replace with id3demux/id3mux.
+         great side effect: this ugly file is now even uglier, yay!
+       * ext/mad/gstmad.h:
+         remove non-available function
+         update for new get_type
+
+2004-04-17  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         require mpeg2dec >= 0.4.0
+
+2004-04-17  Benjamin Otte  <otte@gnome.org>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support),
+       (gst_xvimagesink_xcontext_get), (gst_xvimagesink_change_state),
+       (gst_xvimagesink_set_xwindow_id):
+         call GST_ELEMENT_ERROR whenever get_xcontext fails. Includes
+         assorted cleanup fixes.
+
+2004-04-16  David Schleef  <ds@schleef.org>
+
+       * sys/ximage/ximagesink.h: Compile fix for FreeBSD. (bug #140268)
+       * sys/xvimage/xvimagesink.h: same
+
+2004-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file):
+          Fix GST_ELEMENT_ERROR with (NULL)
+
+2004-04-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data):
+         Add div[3456] as fourccs for DivX 3 (fixes #140137).
+
+2004-04-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_video_caps_with_data),
+       (gst_riff_create_video_caps), (gst_riff_create_audio_caps),
+       (gst_riff_create_video_template_caps),
+       (gst_riff_create_audio_template_caps):
+       * gst-libs/gst/riff/riff-media.h:
+       * gst-libs/gst/riff/riff-read.c:
+       (gst_riff_read_strf_vids_with_data), (gst_riff_read_strf_vids):
+       * gst-libs/gst/riff/riff-read.h:
+       * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
+         Add MS RLE support. I added some functions to read out strf chunks
+         into strf chunks and the data behind it. This is usually color
+         palettes (as in RLE, but also in 8-bit RGB). Also use those during
+         caps creation. Lastly, add ADPCM (similar to wavparse - which
+         should eventually be rifflib based).
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_class_init),
+       (gst_matroska_demux_init), (gst_matroska_demux_reset):
+       * gst/matroska/matroska-demux.h:
+         Remove placeholders for some prehistoric tagging system. Didn't add
+         support for any tag system really anyway.
+       * gst/qtdemux/qtdemux.c:
+         Add support for audio/x-m4a (MPEG-4) through spider.
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt),
+       (gst_wavparse_loop):
+         ADPCM support (#135862). Increase max. buffer size because we
+         cannot split buffers for ADPCM (screws references) and I've seen
+         files with 2048 byte chunks. 4096 seems safe for now.
+
+2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: bump nano to 1
+
+=== release 0.8.1 ===
+
+2004-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: releasing 0.8.1, "Comforting Sounds"
+
+2004-04-14  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps):
+         Fix typo in divxversion (3 instead of 4 for "DIVX" fourcc).
+         Fixes #140058
+
+2004-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_plugin_init):
+          lower rank of dvddemux so that it's not used for mpeg playback.
+
+2004-04-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         save libs correctly when checking mad
+
+2004-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mad/gstid3tag.c: (plugin_init):
+          lower rank of id3tag as proposed by Benjamin.  Fixes #139926.
+
+2004-04-13  David Schleef  <ds@schleef.org>
+
+       * common/m4/gst-feature.m4: Call -config scripts with
+       --plugin-libs if it is supported.
+       * gst/avi/gstavimux.c: (gst_avimux_vidsinkconnect): sequences of
+       JPEG images are image/jpeg.
+       * gst/debug/Makefile.am:
+       * gst/debug/negotiation.c: (gst_negotiation_class_init),
+       (gst_negotiation_getcaps), (gst_negotiation_pad_link),
+       (gst_negotiation_update_caps), (gst_negotiation_get_property),
+       (gst_negotiation_plugin_init): Add a property that acts like
+       filter caps.
+       * testsuite/gst-lint:  Move license checking to be a standard
+       test.
+
+2004-04-13  David Schleef  <ds@schleef.org>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_reset): Fix memleak.
+       patch from Sebastien Cote (bug #139958)
+
+2004-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * examples/gstplay/Makefile.am:
+       * examples/gstplay/player.c: (main):
+          make the commandline player example use gconf settings
+
+2004-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_class_init),
+       (gst_cacasink_sinkconnect), (gst_cacasink_init),
+       (gst_cacasink_chain), (gst_cacasink_open), (gst_cacasink_close):
+          init/end library during state transition, not object
+          creation/disposal.  get rid of custom dispose handler.
+
+
+2004-04-12  Christian Schaller <Uraeus@gnome.org>
+
+       * sys/oss/gstosselement.c: s/lstat/stat/ from freeBSD, since it can
+       be a symlink
+
+2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_data):
+         Handle JUNK chunks inside data section. Prevents warnings.
+
+2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps),
+       (gst_riff_create_video_template_caps):
+         Add MS video v1.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index),
+       (gst_avi_demux_stream_data):
+         Add support for "rec-list" chunks.
+
+2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_audio_caps):
+         Fix another codecname mismatch.
+
+2004-04-11  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps):
+         Fix divx caps mismatch and move from video/x-jpeg to image/jpeg
+         so that MJPEG plays back.
+
+2004-04-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpeg1videoparse/gstmp1videoparse.c: (gst_mp1videoparse_init),
+       (gst_mp1videoparse_real_chain), (gst_mp1videoparse_change_state):
+       * gst/mpeg1videoparse/gstmp1videoparse.h:
+         Fix for some slight mis-cuts in buffer parsing, and for some
+         potential overflows or faults-causers. Adds disconts. Also fixes
+         #139105 while we're at it.
+
+2004-04-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * sys/v4l2/gstv4l2element.h:
+         Workaround for missing struct v4l2_buffer declaration in Suse 9
+         and Mandrake 10 linux/videodev2.h header file (#135919).
+
+2004-04-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file):
+         Bail out if no filename was given.
+
+2004-04-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_caps),
+       (gst_v4l2_fourcc_from_structure):
+         Add Y41B/Y42B YUV formats (see #125732), fix Y41P (was typo'ed to
+         Y41B somewhere).
+
+2004-04-09  Benjamin Otte  <otte@gnome.org>
+
+       * ext/gnomevfs/gstgnomevfssink.c:
+       (_gst_boolean_allow_overwrite_accumulator),
+       (gst_gnomevfssink_class_init):
+         fix erase signal - if any handler returns false the file will not be
+         overwritten. If no handler is connected, the file will not be
+         overwritten either.
+         renamed signal to "allow-overwrite"
+       * ext/mad/gstid3tag.c: (tag_list_to_id3_tag_foreach):
+         free string when adding it to ID3 failed
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event):
+         unref event when done
+       * gst/audioconvert/gstaudioconvert.c: (_fixate_caps_to_int):
+         free caps
+       * gst/typefind/gsttypefindfunctions.c:
+       (mpeg_video_stream_type_find):
+         fix invalid read
+
+2004-04-08  David Schleef  <ds@schleef.org>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_register): Change rank to PRIMARY.
+
+2004-04-08  David Schleef  <ds@schleef.org>
+
+       * gst/colorspace/gstcolorspace.c: Don't advertise a conversion
+       we don't support (bug #139532)
+
+2004-04-07  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mad/gstmad.c: (gst_mad_handle_event),
+       (gst_mad_check_caps_reset), (gst_mad_chain),
+       (gst_mad_change_state):
+          only set explicit caps if they haven't been set before for
+          this stream.  MPEG-audio sample rate/channels aren't allowed
+          to change in-stream.
+          Fixes #139382
+
+2004-04-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_base_init),
+       (_gst_boolean_did_something_accumulator),
+       (gst_gnomevfssink_class_init), (gst_gnomevfssink_dispose),
+       (gst_gnomevfssink_init), (gst_gnomevfssink_set_property),
+       (gst_gnomevfssink_get_property), (gst_gnomevfssink_open_file),
+       (gst_gnomevfssink_close_file), (gst_gnomevfssink_chain),
+       (gst_gnomevfssink_change_state):
+         Fix erase signal. Don't erase by default. Remove handoff signal.
+         Remove erase property. Don't segfault. General cleanup.
+
+2004-04-07  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/gconf/test-gconf.c: (main):
+         add missing gst_init
+
+2004-04-07  Benjamin Otte  <otte@gnome.org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_dispose):
+         free the mutexes, too
+
+2004-04-07  Benjamin Otte  <otte@gnome.org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_dispose):
+         actually free the URI string
+       * ext/mad/gstid3tag.c: (gst_id3_tag_src_event):
+         compute offset correctly when passing discont events
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event):
+         don't leak discont events
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_video_caps):
+         add some missing breaks so caps aren't copied randomly
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream):
+         if we realloc memory, we better use it
+
+2004-04-06  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstmad.c: (normal_seek):
+         fix GST_FORMAT_TIME usage
+
+2004-04-05  David Schleef  <ds@schleef.org>
+
+       * ext/kio/kiosrc.cpp:  Undefine KDE_DEPRECATED so we can use
+       a deprecated function (hack!)
+
+2004-04-05  Benjamin Otte  <otte@gnome.org>
+
+       * ext/esd/esdmon.c: (gst_esdmon_get):
+         fix nonterminated vararg and memleak
+
+2004-04-05  Benjamin Otte  <otte@gnome.org>
+
+       * ext/ladspa/gstladspa.c: (gst_ladspa_class_init),
+       (gst_ladspa_init), (gst_ladspa_force_src_caps),
+       (gst_ladspa_set_property), (gst_ladspa_get_property),
+       (gst_ladspa_instantiate), (gst_ladspa_activate),
+       (gst_ladspa_deactivate), (gst_ladspa_loop), (gst_ladspa_chain):
+         clean up debugging
+
+2004-04-05  Stefan Kost <kost@imn.htwk-leipzig.de>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/ladspa/gstladspa.c: (gst_ladspa_class_init):
+         check for broken LADSPA parameters (fixes #138635)
+
+2004-04-05  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_getcaps):
+         advertise buffer-frames correctly on sinkpads
+
+2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mad/gstmad.c: (gst_mad_get_type), (gst_mad_layer_get_type),
+       (gst_mad_mode_get_type), (gst_mad_emphasis_get_type),
+       (gst_mad_get_event_masks), (gst_mad_get_query_types), (index_seek),
+       (normal_seek), (gst_mad_src_event), (gst_mad_handle_event),
+       (gst_mad_check_caps_reset), (gst_mad_chain):
+        add more debugging, only reset caps when we're not in error state
+
+2004-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mad/gstmad.c: add debugging category, comment + cleanups
+
+2004-04-05  Julio M. Merino Vidal  <jmmv@menta.net>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         fix == in test(1) operator
+
+2004-04-05  Julio M. Merino Vidal  <jmmv@menta.net>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         fix --export-symblos-regex to a working regex.
+
+2004-04-04  Benjamin Otte  <otte@gnome.org>
+
+       * sys/oss/.cvsignore:
+         add for oss_probe
+
+2004-04-03  Tim-Phillip Müller <t.i.m@zen.co.uk>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event):
+         add missing 'new_media' argument (fixes #138168)
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_handle_seek_event):
+         add vararg terminator (fixes #138169)
+
+2004-04-02  David Schleef  <ds@schleef.org>
+
+       * ext/gdk_pixbuf/Makefile.am:  Make sure gstgdkanimation.h is
+       disted (bug #138914)
+
+2004-04-01  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state),
+       (gst_alsa_close_audio):
+         handle case better where a soundcard can't pause
+       * ext/ogg/gstoggdemux.c:
+         don't crash when we get events but don't have pads yet
+
+2004-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/oss/gstosselement.c: (gst_osselement_probe_caps):
+          throw an error if we couldn't probe any caps.
+
+2004-04-01  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dvdnav/gst-dvd:
+       Add a really simple sample DVD player
+
+2004-04-01  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_get_type), (gst_a52dec_init),
+       (gst_a52dec_push), (gst_a52dec_handle_event),
+       (gst_a52dec_update_streaminfo), (gst_a52dec_loop),
+       (gst_a52dec_change_state):
+       * ext/a52dec/gsta52dec.h:
+         Use a debug category, Output timestamps correctly
+         Emit tag info, Handle events, tell liba52dec about cpu
+         capabilities so it can use MMX etc.
+       * ext/dv/gstdvdec.c: (gst_dvdec_loop), (gst_dvdec_change_state):
+         Fix a crasher accessing invalid memory
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_init),
+       (dvdnavsrc_update_highlight), (dvdnavsrc_loop),
+       (dvdnavsrc_get_event_mask), (dvdnav_handle_navigation_event),
+       (dvdnavsrc_event), (dvdnavsrc_get_formats), (dvdnavsrc_convert),
+       (dvdnavsrc_query):
+         Some support for byte-format seeking.
+         Small fixes for still frames and menu button overlays
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_get_type),
+       (gst_mpeg2dec_alloc_buffer):
+         Use a debug category. Adjust the report level of several items to
+         LOG. Call mpeg2_custom_fbuf to mark our buffers as 'custom buffers'
+         so it doesn't lose the GstBuffer pointer
+       * gst/debug/Makefile.am:
+       * gst/debug/gstdebug.c: (plugin_init):
+       * gst/debug/gstnavseek.c: (gst_navseek_get_type),
+       (gst_navseek_base_init), (gst_navseek_class_init),
+       (gst_navseek_init), (gst_navseek_seek),
+       (gst_navseek_handle_src_event), (gst_navseek_set_property),
+       (gst_navseek_get_property), (gst_navseek_chain),
+       (gst_navseek_plugin_init):
+       * gst/debug/gstnavseek.h:
+         Add the navseek debug element for seeking back and forth in a
+         video stream using arrow keys.
+       * gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_get_type),
+       (gst_mpeg2subt_base_init), (gst_mpeg2subt_class_init),
+       (gst_mpeg2subt_init), (gst_mpeg2subt_finalize),
+       (gst_mpeg2subt_getcaps_video), (gst_mpeg2subt_link_video),
+       (gst_mpeg2subt_handle_video), (gst_mpeg2subt_src_event),
+       (gst_mpeg2subt_parse_header), (gst_get_nibble),
+       (gst_setup_palette), (gst_get_rle_code), (gst_draw_rle_line),
+       (gst_merge_uv_data), (gst_mpeg2subt_merge_title),
+       (gst_update_still_frame), (gst_mpeg2subt_handle_subtitle),
+       (gst_mpeg2subt_handle_dvd_event), (gst_mpeg2subt_loop):
+       * gst/mpeg2sub/gstmpeg2subt.h:
+         Pretty much a complete rewrite. Now a loopbased element. May still
+         require work to properly synchronise subtitle buffers.
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_private),
+       (gst_dvd_demux_send_subbuffer):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_send_subbuffer):
+         Don't attempt to create subbuffers of size 0
+         Reduce a couple of error outputs to warnings.
+       * gst/y4m/gsty4mencode.c: (gst_y4mencode_sinkconnect),
+       (gst_y4mencode_chain):
+       Output the y4m frame header correctly.
+
+2004-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/adder/gstadder.c: (gst_adder_get_type), (gst_adder_loop):
+          throw errors instead of allowing SIGFPE
+
+2004-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/gconf/gconf.c: (gst_gconf_get_string),
+       (gst_gconf_render_bin_from_key):
+          leak plugging and style fixing
+
+2004-03-31  David Schleef  <ds@schleef.org>
+
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_expand_value),
+       (gst_audioscale_getcaps): Fix getcaps to expand and union lists.
+       (bug #138225)
+       * gst/debug/Makefile.am:
+       * gst/debug/breakmydata.c: (gst_break_my_data_plugin_init):
+       * gst/debug/gstdebug.c: (plugin_init):  Merge elements into one
+       plugin.
+       * gst/debug/negotiation.c: (gst_gst_negotiation_get_type),
+       (gst_negotiation_base_init), (gst_negotiation_class_init),
+       (gst_negotiation_init), (gst_negotiation_getcaps),
+       (gst_negotiation_pad_link), (gst_negotiation_chain),
+       (gst_negotiation_set_property), (gst_negotiation_get_property),
+       (gst_negotiation_plugin_init):  New element to talk about random
+       negotiation things happening in a pipeline.
+
+2004-03-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/adder/gstadder.c: (gst_adder_get_type), (gst_adder_loop):
+          fix integer addition with help of Stefan Kost
+
+2004-03-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/nl.po: updated Dutch translation (Elros Cyriatan)
+
+2004-03-30  David Schleef  <ds@schleef.org>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_buffer),
+       (gst_mpeg2dec_negotiate_format):  Handle Y42B-format MPEG
+       video, patch from Matthew.Spencer@eu.sony.com (Matthew Spencer)
+       (bug #137504)
+       * ext/mpeg2dec/gstmpeg2dec.h:
+
+2004-03-30  David Schleef  <ds@schleef.org>
+
+       * ext/gdk_pixbuf/Makefile.am: Remove spurious rules. (bug #136527)
+
+2004-03-30  David Schleef  <ds@schleef.org>
+
+       * tools/gst-launch-ext-m.m:  Applied patch from gnome@flyn.org (W.
+       Michael Petullo) to handle .mov
+
+2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/oss/gstosselement.c: (gst_osselement_probe_caps),
+       (gst_osselement_rate_check_rate):
+         probe caps correctly for sound cards that only support one format
+
+2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/kio/kiosrc.cpp: (process_events):
+         update handling event processing if inside KDE - untested
+
+2004-03-29  David Schleef  <ds@schleef.org>
+
+       * ext/hermes/gsthermescolorspace.c: (plugin_init): decrease rank
+       by 2 to not interfere with other colorspaces.
+       * ext/pango/gsttextoverlay.c: (plugin_init): change rank to NONE
+       * gst/colorspace/gstcolorspace.c: (plugin_init): decrease rank by
+       one to not interfere with ffmpeg_colorspace.
+
+2004-03-29  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_fixate): Don't fixate fields that
+       aren't in the caps.
+       * gst/sine/gstsinesrc.c: change rate caps to [1,MAX]
+       * gst/videocrop/gstvideocrop.c: (plugin_init): Change rank to NONE.
+
+2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/riff/riff-media.c:
+         fail on error, don't try to set stuff on NULL caps
+
+2004-03-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/kio/Makefile.am:
+       * ext/kio/kioreceiver.cpp:
+       * ext/kio/kioreceiver.h:
+       * ext/kio/kiosrc.cpp:
+       * ext/kio/kiosrc.h:
+         add experimental kiosrc plugin
+       * ext/alsa/gstalsaplugin.c: (plugin_init):
+         initialize debugging category only when we're sure registering the
+         plugins worked.
+
+2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * examples/gstplay/player.c: (main):
+       * gst-libs/gst/play/play.c: (gst_play_class_init),
+       (gst_play_set_location), (gst_play_set_data_src),
+       (gst_play_set_video_sink), (gst_play_set_audio_sink),
+       (gst_play_set_visualization), (gst_play_connect_visualization):
+          check return values of element_set_state and return FALSE where
+          failed
+
+2004-03-29  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event):
+         try harder to check if an event is really a discont
+
+2004-03-29  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS: adding Azerbaijani (Mətin Əmirov)
+       * po/az.po:
+
+2004-03-28  Benjamin Otte  <otte@gnome.org>
+
+       * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_process_private):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
+       (gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes):
+         get rid of non-standard "..." ranges in case statements.
+
+2004-03-27  Martin Soto  <martinsoto@users.sourceforge.net>
+
+       * gst/mpegstream/gstmpegdemux.c:
+       * gst/mpegstream/gstmpegdemux.h: Complete overhaul. All DVD
+       specific functionality split to the new dvddemux element.
+       * gst/mpegstream/gstdvddemux.c:
+       * gst/mpegstream/gstdvddemux.h: New demultiplexer for DVD (VOB)
+       streams, derived from mpegdemux.
+       * gst/mpegstream/gstmpegparse.c: Discontinuity handling cleaned
+       up. SCR based timestamp rewriting can be turned off (will probably
+       completely disappear soon).
+       * ext/dvdnav/dvdnavsrc.c: Changes resulting from a few months
+       hacking. General cleanup. All printf statements replaced by
+       debugging messages. Almost complete libdvdnav support.
+       (dvdnavsrc_class_init): Got rid of unnecessary signals (replaced
+       by events. New properties for audio and subpicture languages.
+       (dvdnavsrc_update_highlight): Now uses events.
+       (dvdnavsrc_user_op): Cleaned up.
+       (dvdnavsrc_get): Renamed to dvdnavsrc_loop (element is now loop
+       based). Lots of cleanup, and propper support for most libdvdnav
+       events.
+       (dvdnavsrc_make_dvd_event): New function.
+       (dvdnavsrc_make_dvd_nav_packet_event): New function.
+       (dvdnavsrc_make_clut_change_event): New function.
+
+2004-03-26  Benjamin Otte  <otte@gnome.org>
+
+       * gst/typefind/gsttypefindfunctions.c: (theora_type_find):
+         fix bug where typefinding would claim it's theora whenever less then
+         7 bytes of data were available
+
+2004-03-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/law/alaw-decode.c: (alawdec_getcaps), (alawdec_link),
+       (gst_alawdec_base_init), (gst_alawdec_class_init),
+       (gst_alawdec_init), (gst_alawdec_chain):
+       * gst/law/alaw-encode.c: (alawenc_getcaps), (alawenc_link),
+       (gst_alawenc_base_init), (gst_alawenc_class_init),
+       (gst_alawenc_init), (gst_alawenc_chain):
+       * gst/law/mulaw-decode.c: (mulawdec_getcaps), (mulawdec_link),
+       (gst_mulawdec_base_init), (gst_mulawdec_class_init),
+       (gst_mulawdec_init), (gst_mulawdec_chain):
+       * gst/law/mulaw-encode.c: (mulawenc_getcaps), (mulawenc_link),
+       (gst_mulawenc_base_init), (gst_mulawenc_class_init),
+       (gst_mulawenc_init), (gst_mulawenc_chain):
+         Fix capsnego in all four, remove the unused property functions and
+         simplify the chain functions slightly. I guess we could use macros
+         or something similar for those, since the code is so similar, but
+         I'm currently too lazy...
+
+2004-03-24  David Schleef  <ds@schleef.org>
+
+       * sys/oss/gstosselement.c: (gst_osselement_sync_parms),
+       (gst_osselement_close_audio), (gst_osselement_probe_caps),
+       (gst_osselement_get_format_structure),
+       (gst_osselement_rate_probe_check), (gst_osselement_rate_add_range),
+       (gst_osselement_rate_check_rate), (gst_osselement_rate_add_rate),
+       (gst_osselement_rate_int_compare): Add code to handle rate probing
+       (bug #120883)
+       * sys/oss/gstosselement.h: same
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_getcaps):
+       Use rate probing provided by osselement.
+       * sys/oss/gstosssrc.c: (gst_osssrc_init), (gst_osssrc_getcaps): same
+
+2004-03-24  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/xvid/gstxvidenc.c: (gst_xvidenc_set_property),
+       (gst_xvidenc_get_property):
+         ulong/int mess-up.
+
+2004-03-24  David Schleef  <ds@schleef.org>
+
+       * ext/speex/gstspeexdec.c: (gst_speexdec_base_init),
+       (gst_speexdec_init):
+       * ext/speex/gstspeexenc.c: (gst_speexenc_base_init),
+       (gst_speexenc_init):  Create the pad template correctly (from
+       the static pad template, not a NULL pointer.)
+
+2004-03-25  Benjamin Otte  <otte@gnome.org>
+
+       * gst/debug/Makefile.am:
+       * gst/debug/breakmydata.c:
+         add element that quasi-randomly changes bytes in the stream.
+         Intended use is robustness checking of demuxers and decoders in
+         media tests.
+
+2004-03-24  Benjamin Otte  <otte@gnome.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio),
+       (gst_alsa_probe_hw_params):
+       * ext/alsa/gstalsa.h:
+         debugging output fixes
+
+2004-03-24  Benjamin Otte  <otte@gnome.org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_set_property):
+         don't g_return_if_fail if element is PLAYING, fail silently as every
+         other element.
+       * gst/effectv/gstquark.c: (gst_quarktv_chain):
+         only fix needed for cast lvalue issues in gst-plugins
+       * gst/volenv/gstvolenv.c: (gst_volenv_init):
+         add proxy_getcaps
+
+2004-03-24  Benjamin Otte  <otte@gnome.org>
+
+       * gst/level/gstlevel.c: (gst_level_init):
+         add proxying getcaps function, so level doesn't advertise impossible
+         caps
+
+2004-03-24  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event),
+       (gst_qtdemux_loop_header), (qtdemux_parse_moov), (qtdemux_parse),
+       (qtdemux_node_dump_foreach), (qtdemux_dump_mvhd),
+       (qtdemux_dump_tkhd), (qtdemux_dump_elst), (qtdemux_dump_mdhd),
+       (qtdemux_dump_hdlr), (qtdemux_dump_vmhd), (qtdemux_dump_dref),
+       (qtdemux_dump_stsd), (qtdemux_dump_stts), (qtdemux_dump_stss),
+       (qtdemux_dump_stsc), (qtdemux_dump_stsz), (qtdemux_dump_stco),
+       (qtdemux_dump_co64), (qtdemux_dump_dcom), (qtdemux_dump_cmvd),
+       (qtdemux_parse_tree), (qtdemux_parse_trak):  Fix debugging
+       messages.  Divide the chunk size by the compression ratio
+       (needed for MACE audio)
+
+2004-03-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+         Fix buffer overflow read error.
+
+2004-03-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.h:
+         Remove unused entry.
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps):
+         Add cinepak.
+       * gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps),
+       (gst_videodrop_link), (gst_videodrop_chain):
+         Fix, sort of. Was horribly broken with new capsnego. Bah...
+
+2004-03-23  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * gst/typefind/gsttypefindfunctions.c: (ape_type_find),
+       (plugin_init):
+       Add a monkeysaudio typefind function
+
+2004-03-23  Johan Dahlin  <johan@gnome.org>
+
+       * gst-libs/gst/play/play.c (gst_play_audio_fixate)
+       (gst_play_video_fixate): Check so the structure has the field
+       before trying to fixate them, this makes it possible to have
+       fakesinks for video and audio output without printing errors on
+       the output console.
+
+2004-03-22  David Schleef  <ds@schleef.org>
+
+       * sys/oss/Makefile.am:
+       * sys/oss/oss_probe.c: (main), (probe_check), (add_range),
+       (check_rate), (add_rate):  Rate probing test app.
+
+2004-03-21  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link),
+       (_fixate_caps_to_int), (gst_audio_convert_fixate):
+         add a fixation function that pretty much does the right thing (fixes
+         #137556)
+
+2004-03-20  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * configure.ac: GST_PACKAGE default: s/GStreamer/GStreamer Plugins/
+
+2004-03-20  Tim-Phillip Müller <t.i.m@zen.co.uk>
+
+       reviewed by: Benjamin Otte  <otte@gnome.org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+         terminate gst_event_new_discontinuous correctly (fixes parts of
+         #137711)
+
+2004-03-19  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/Makefile.am:  Enable xoverlay unconditionally,
+       since it doesn't depend on X, and it's part of our ABI.
+
+2004-03-19  Iain <iain@prettypeople.org>
+
+       * gst/interleave/deinterleave.c (deinterleave_sink_link): Use the
+       is_int in the structure, not the local variable.
+
+2004-03-19  David Schleef  <ds@schleef.org>
+
+       * ext/librfb/gstrfbsrc.c: (gst_rfbsrc_change_state),
+       (gst_rfbsrc_init), (gst_rfbsrc_getcaps), (gst_rfbsrc_fixate),
+       (gst_rfbsrc_link), (gst_rfbsrc_paint_rect), (gst_rfbsrc_get):
+       Improvements in caps negotiation.
+
+2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/af.po:
+          adding Afrikaans (Petri Jooste)
+
+2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_chain):
+        throw error instead of g_critical (#137588)
+
+2004-03-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am:
+       * configure.ac:
+          dist common and m4 correctly
+       * po/sv.po:
+
+2004-03-17  David Schleef  <ds@schleef.org>
+
+       * pkgconfig/gstreamer-media-info.pc.in:  Add Version.
+       (bug #137348)
+
+2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/sv.po:
+          adding Swedish translation (Christian Rose)
+
+2004-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * Makefile.am: use release.mak
+
+2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * common/ChangeLog:
+       * common/gst-autogen.sh:
+          add some explanation about the version detection
+       * configure.ac:
+          fix X check
+
+2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: bump nano to 1
+
+=== release 0.8.0 ===
+
+2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: release 0.8.0, "Pharmaceutical Itch"
+
+2004-03-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+          update libtool version
+       * gst-libs/gst/media-info/Makefile.am:
+          actually use libtool version
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: fix speex detection to work with 1.0 but not 1.1
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * gst-plugins.spec.in:
+       * pkgconfig/Makefile.am:
+       * pkgconfig/gstreamer-gconf-uninstalled.pc.in:
+       * pkgconfig/gstreamer-interfaces-uninstalled.pc.in:
+       * pkgconfig/gstreamer-libs-uninstalled.pc.in:
+       * pkgconfig/gstreamer-libs.pc.in:
+       * pkgconfig/gstreamer-media-info-uninstalled.pc.in:
+       * pkgconfig/gstreamer-play-uninstalled.pc.in:
+       * pkgconfig/gstreamer-plugins-uninstalled.pc.in:
+       * pkgconfig/gstreamer-plugins.pc.in:
+          remove @VERSION@ from some of the pc files since core and plugins
+          are decoupled.
+          created gstreamer-plugins.pc as it's a better name, but keeping
+          -libs around for now to get fixes upstream done first.
+
+2004-03-15  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/play/play.c: (gst_play_get_framerate),
+       (gst_play_get_sink_element): First draft of gst_play_get_framerate.
+       * gst-libs/gst/play/play.h:
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * *.c, *.cc: don't mix tabs and spaces
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup):
+          use the new ffmpegcolorspace
+       * gst-plugins.spec.in:
+          package new colorspace and media-info
+       * configure.ac:
+       * pkgconfig/Makefile.am:
+          fix some more disting issues
+       * pkgconfig/gstreamer-media-info-uninstalled.pc.in:
+       * pkgconfig/gstreamer-media-info.pc.in:
+          generate media-info pc files
+
+2004-03-15  Johan Dahlin  <johan@gnome.org>
+
+       * *.h: Revert indenting
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+          adding ffmpegcolorspace element
+       * gst/ffmpegcolorspace/Makefile.am:
+       * gst/ffmpegcolorspace/avcodec.h:
+       * gst/ffmpegcolorspace/common.h:
+       * gst/ffmpegcolorspace/dsputil.c: (dsputil_static_init):
+       * gst/ffmpegcolorspace/dsputil.h:
+       * gst/ffmpegcolorspace/gstffmpeg.c: (plugin_init):
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.c:
+       (gst_ffmpeg_pixfmt_to_caps), (gst_ffmpeg_pix_fmt_to_caps),
+       (gst_ffmpeg_caps_to_pix_fmt):
+       * gst/ffmpegcolorspace/gstffmpegcodecmap.h:
+       * gst/ffmpegcolorspace/gstffmpegcolorspace.c:
+       (gst_ffmpegcolorspace_caps_remove_format_info),
+       (gst_ffmpegcolorspace_getcaps), (gst_ffmpegcolorspace_pad_link),
+       (gst_ffmpegcolorspace_get_type), (gst_ffmpegcolorspace_base_init),
+       (gst_ffmpegcolorspace_class_init), (gst_ffmpegcolorspace_init),
+       (gst_ffmpegcolorspace_chain), (gst_ffmpegcolorspace_change_state),
+       (gst_ffmpegcolorspace_set_property),
+       (gst_ffmpegcolorspace_get_property),
+       (gst_ffmpegcolorspace_register):
+       * gst/ffmpegcolorspace/imgconvert.c:
+       (avcodec_get_chroma_sub_sample), (avcodec_get_pix_fmt_name),
+       (avcodec_get_pix_fmt), (avpicture_fill), (avpicture_layout),
+       (avpicture_get_size), (avcodec_get_pix_fmt_loss),
+       (avg_bits_per_pixel), (avcodec_find_best_pix_fmt1),
+       (avcodec_find_best_pix_fmt), (img_copy_plane), (img_copy),
+       (yuv422_to_yuv420p), (yuv422_to_yuv422p), (yuv422p_to_yuv422),
+       (C_JPEG_TO_CCIR), (img_convert_init), (img_apply_table),
+       (shrink41), (shrink21), (shrink12), (shrink22), (shrink44),
+       (grow21_line), (grow41_line), (grow21), (grow22), (grow41),
+       (grow44), (conv411), (gif_clut_index), (build_rgb_palette),
+       (bitcopy_n), (mono_to_gray), (monowhite_to_gray),
+       (monoblack_to_gray), (gray_to_mono), (gray_to_monowhite),
+       (gray_to_monoblack), (avpicture_alloc), (avpicture_free),
+       (is_yuv_planar), (img_convert), (get_alpha_info_pal8),
+       (img_get_alpha_info), (deinterlace_line),
+       (deinterlace_line_inplace), (deinterlace_bottom_field),
+       (deinterlace_bottom_field_inplace), (avpicture_deinterlace):
+       * gst/ffmpegcolorspace/imgconvert_template.h:
+       * gst/ffmpegcolorspace/mem.c: (av_malloc), (av_realloc), (av_free):
+       * gst/ffmpegcolorspace/mmx.h:
+       * gst/ffmpegcolorspace/utils.c: (avcodec_init):
+          adding ffmpegcolorspace element supplied by Ronald after cleaning
+          up and pulling in the right bits of upstream source.
+          I'm sure a better C/compiler wizard could do some cleaning up (for
+          example use GLIB's malloc stuff), but as a first pass this
+          works very well
+
+2004-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/alsa/gstalsa.h:
+         I assume Ronald forgot to commit the change to have cardname
+          as a struct member.  Expect some public spanking at the next
+          opportunity.
+
+2004-03-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_property),
+       (gst_alsa_open_audio), (gst_alsa_close_audio):
+       * ext/alsa/gstalsa.c:
+         Don't open the device if we're a mixer (= padless).
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_class_init),
+       (gst_alsa_mixer_init), (gst_alsa_mixer_open),
+       (gst_alsa_mixer_close), (gst_alsa_mixer_change_state):
+         Open mixer during state change rather than during object
+         initialization. Also, get a device name. Currently in a somewhat
+         hackish fashion, but I didn't really find something better.
+
+2004-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * *.c, *.h: run gst-indent
+
+2004-03-14  Benjamin Otte  <otte@gnome.org>
+
+       * gst/modplug/gstmodplug.cc:
+       * gst/modplug/gstmodplug.h:
+         set correct timestamps on outgoing buffers
+
+2004-03-14  Benjamin Otte  <otte@gnome.org>
+
+       * gst/modplug/gstmodplug.cc:
+         handle events - don't do crap when a discont arrives that's not
+         necessary
+         This allows correct loading and playback of mods in Rhythmbox
+
+2004-03-14  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+       * gst-libs/gst/gconf/Makefile.am:
+       * pkgconfig/Makefile.am:
+         move gstreamer-gconf pkgconfig files to pkgconfig/ dir. Make sure
+         they get rebuilt properly
+       * configure.ac:
+         when checking for vorbis, try pkgconfig first.
+       * gst/modplug/gstmodplug.cc:
+         add fixate function
+
+2004-03-14  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):
+         Fix for obvious mistake, where we first shift the offset and then
+         read a samplesize element assuming the old offset. Note that this
+         part still has something weird, i.e. my movies containing those
+         don't actually play well, but at least there's something that looks
+         like sound now.
+
+2004-03-14  Jan Schmidt  <thaytan@mad.scientist.com>
+       * gst/typefind/gsttypefindfunctions.c: (speex_type_find),
+       (plugin_init):
+       Add a typefind function for speex format
+
+2004-03-13  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_video_caps),
+       (gst_asf_demux_setup_pad):
+         Use 25fps as our "fake" fps value (marked for fixage in 0.9.x)
+         instead of 0. Reason is simple: some elements have a fps range
+         of 1-max instead of 0-max. So now ASF video actually works.
+
+2004-03-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * po/LINGUAS:
+       * po/sr.po:
+         adding serbian as a language
+
+2004-03-13  Benjamin Otte  <otte@gnome.org>
+
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_get):
+         return taglist correctly from _get function, don't gst_pad_push it.
+         (fixes #137042)
+
+2004-03-13  Jan Schmidt  <thaytan@mad.scientist.com>
+       * ext/alsa/gstalsa.c: (gst_alsa_class_probe_devices):
+
+2004-03-13  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_free_list):
+       * ext/alsa/gstalsamixertrack.c: (gst_alsa_mixer_track_class_init),
+       (gst_alsa_mixer_track_new):
+       * ext/alsa/gstalsamixertrack.h:
+         Fix ancient leftovers... MixerTrack is a GObject.
+
+2004-03-13  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_class_probe_devices):
+       * sys/oss/gstosselement.c: (gst_osselement_class_probe_devices):
+         Don't block during probing...
+
+2004-03-12  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_type), (gst_alsa_class_init),
+       (gst_alsa_get_property), (gst_alsa_probe_get_properties),
+       (gst_alsa_class_probe_devices), (gst_alsa_class_list_devices),
+       (gst_alsa_probe_probe_property), (gst_alsa_probe_needs_probe),
+       (gst_alsa_probe_get_values), (gst_alsa_probe_interface_init),
+       (gst_alsa_open_audio), (gst_alsa_close_audio):
+       * ext/alsa/gstalsa.h:
+         Add propertyprobe interface implementation, add some device-name
+         property, all this so that it looks good in gnome-volume-control.
+
+2004-03-12  David Schleef  <ds@schleef.org>
+
+       * configure.ac: the Hermes library controls hermescolorspace, not
+       colorspace.
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_base_init),
+       (gst_mpeg2dec_init): minor pet peeve: disable code with #ifdef,
+       not /* */
+       * ext/sdl/sdlvideosink.c: Change XID to unsigned long.
+       * ext/sdl/sdlvideosink.h: ditto.
+       * gst/colorspace/gstcolorspace.c: Fix old comments about Hermes
+
+2004-03-12  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/xoverlay/xoverlay.c: (gst_x_overlay_set_xwindow_id),
+       (gst_x_overlay_got_xwindow_id):
+       * gst-libs/gst/xoverlay/xoverlay.h:
+         replace XID with unsigned long to get rid of the xlibs dependency in
+         XOverlay (fixes #137004)
+
+2004-03-13  Jan Schmidt  <thaytan@mad.scientist.com>
+       * gst/effectv/gstaging.c: (gst_agingtv_base_init),
+       (gst_agingtv_setup):
+       * gst/effectv/gstdice.c: (gst_dicetv_get_type),
+       (gst_dicetv_base_init), (gst_dicetv_class_init),
+       (gst_dicetv_setup), (gst_dicetv_init), (gst_dicetv_draw):
+       * gst/effectv/gstedge.c: (gst_edgetv_get_type),
+       (gst_edgetv_base_init), (gst_edgetv_class_init), (gst_edgetv_init),
+       (gst_edgetv_setup), (gst_edgetv_rgb32):
+       * gst/effectv/gsteffectv.c:
+       * gst/effectv/gstquark.c: (gst_quarktv_link), (gst_quarktv_init),
+       (gst_quarktv_set_property):
+       * gst/effectv/gstrev.c: (gst_revtv_get_type),
+       (gst_revtv_base_init), (gst_revtv_class_init), (gst_revtv_init),
+       (gst_revtv_setup), (gst_revtv_rgb32):
+       * gst/effectv/gstshagadelic.c: (gst_shagadelictv_get_type),
+       (gst_shagadelictv_base_init), (gst_shagadelictv_class_init),
+       (gst_shagadelictv_init), (gst_shagadelictv_setup),
+       (gst_shagadelictv_rgb32):
+       * gst/effectv/gstvertigo.c: (gst_vertigotv_get_type),
+       (gst_vertigotv_base_init), (gst_vertigotv_class_init),
+       (gst_vertigotv_setup), (gst_vertigotv_init), (gst_vertigotv_rgb32):
+       * gst/effectv/gstwarp.c:
+       Port everything that can be ported to videofilter and fix up the caps.
+       Can someone with a big-endian machine please check these?
+
+2004-03-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_get_time),
+       (gst_osssink_chain), (gst_osssink_change_state):
+         Latest fixes for A/V sync, audio playback and such. This is about
+         all... MPEG playback issues are mostly related to the async build-
+         up of MPEG files, I cannot fix that. Use basicgthread to solve it.
+
+2004-03-10  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch from: Stephane Loeuillet
+
+       * configure.ac:
+         use pkg-config for some libraries, falling back to the old .m4 way
+          (fixes #131270)
+       * m4/libdv.m4:
+          removed
+
+2004-03-10  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * tools/Makefile.am:
+       * tools/Makefile.in:
+       * tools/gst-launch-ext-m.m:
+       * tools/gst-launch-ext.1.in:
+       * tools/gst-visualise-m.m:
+       * tools/gst-visualise.1:
+       * tools/gst-visualise.1.in:
+          reorganizing generation of script tools
+
+2004-03-10  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c:
+         Downgrade priority. We prefer ffdec_mpeg4.
+       * ext/faad/gstfaad.c: (gst_faad_srcgetcaps), (gst_faad_srcconnect),
+       (gst_faad_chain), (gst_faad_change_state):
+         Fix capsnego. Doesn't work for some sounds because we don't have
+         a 5:1 to stereo element.
+       * ext/xvid/gstxvid.c: (plugin_init):
+         Add priority.
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
+       (gst_osssink_change_state):
+         Add discont handling.
+
+2004-03-09  Colin Walters  <walters@verbum.org>
+
+       * gst/audioconvert/gstaudioconvert.c: Fix typo in width 8
+       conversion.
+
+2004-03-09  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/mixer/mixer.c: (gst_mixer_class_init):
+         the signals take 2 arguments
+
+2004-03-09  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_request_new_pad),
+       (gst_alsa_fixate): Add fixate function.  (bug #136686)
+       * ext/alsa/gstalsa.h:
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_init):
+
+2004-03-09  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_init), (gst_mikmod_loop),
+       (gst_mikmod_change_state):
+       * ext/mikmod/gstmikmod.h:
+         make mikmod's loop function not loop infinitely and call
+         gst_element_yield anymore
+       * gst/modplug/gstmodplug.cc:
+         fix pad negotiation (fixes #136590)
+
+2004-03-09  David Schleef  <ds@schleef.org>
+
+       * ext/lcs/Makefile.am:  Fix so that the lcs colorspace plugin
+       doesn't conflict with the internal colorspace plugin.
+       * gst-libs/gst/audio/make_filter:  Use `` instead of $() to
+       satisfy the crappy-ass shell shipped by a certain vendor.
+       * gst/videofilter/make_filter: same (bug #135299)
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: bump nano to 1
+
+=== release 0.7.6 ===
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.in: releasing 0.7.6, "There"
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * pkgconfig/gstreamer-play-uninstalled.pc.in:
+       * pkgconfig/gstreamer-play.pc.in:
+          synchronize the two
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_base_init),
+       (cdparanoia_open), (cdparanoia_event):
+         fix/add error handling
+       * po/POTFILES.in:
+         add cdparanoia source
+       * tools/Makefile.am:
+         make scripts executable
+
+2004-03-09  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/vorbis/Makefile.am:
+       * sys/Makefile.am:
+         remove id3types, vorbisfile and xvideosink from the build (#133783)
+
+2004-03-08  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_info):
+         Fix metadata read crash (#136537).
+
+2004-03-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/media-info/media-info-priv.c: (gmi_set_mime):
+       * gst-libs/gst/media-info/media-info.c: (gst_media_info_read):
+          adding mime types, fixing the one-stop function
+
+2004-03-08  Christian Schaller <Uraeus@gnome.org>
+
+       * ext/nas/nassink.c and /ext/nas/nassink.h:
+       More NAS love from Arwed von Merkatz
+       So lets all sing 'Can you feel the NAS tonight'
+
+2004-03-08  Christian Schaller <Uraeus@gnome.org>
+
+       * tools/gst-launch-ext.in:
+       Replace vorbisfile with oggdemux/vorbisdec/audioconvert
+
+2004-03-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_base_init),
+       (gst_mpeg2dec_init):
+        remove the user_data pad for now, because it is being used in
+        fixating causing MPEG playback to fixate on 1000 Hz for playback.
+        If someone knows how to fix this properly, please do.
+
+2004-03-08  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/oss/gstosssink.c: (gst_osssink_get_delay),
+       (gst_osssink_get_time):
+        add a warning, IMO this won't get triggered anymore, remove later
+
+2004-03-07  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_video_caps):  Added Cinepak
+       format (bug #136470)
+
+2004-03-07  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/Makefile.am:
+       * gst-libs/gst/media-info/Makefile.am:
+       * gst-libs/gst/media-info/media-info-priv.c: (found_tag_callback),
+       (error_callback), (gst_media_info_error_create),
+       (gst_media_info_error_element), (gmip_init), (gmip_reset),
+       (gmi_clear_decoder), (gmip_find_type_pre), (gmip_find_type):
+       * gst-libs/gst/media-info/media-info-priv.h:
+       * gst-libs/gst/media-info/media-info-test.c: (main):
+       * gst-libs/gst/media-info/media-info.c: (gst_media_info_init),
+       (gst_media_info_class_init), (gst_media_info_instance_init),
+       (gst_media_info_set_source), (gst_media_info_read_with_idler),
+       (gst_media_info_read_idler), (gst_media_info_read):
+       * gst-libs/gst/media-info/media-info.h:
+       fixed, should work now
+
+2004-03-07  Christian Schaller <Uraeus@gnome.org>
+
+       * ext/nas/nassink.c:
+       A bunch of NAS fixes from Arwed von Merkatz
+
+2004-03-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream),
+       (qtdemux_parse_trak):
+         Fix crash (j might be greater than n_samples, in which case we're
+         writing outside the allocated space for the array) and memleak.
+
+2004-03-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosssink.c: (gst_osssink_chain):
+         And another caller that couldn't handle delay < 0 (unsigned
+         integer overflow). Video now continues playing on an audio
+         buffer underrun, and the clock continues working. Audio still
+         stalls.
+
+2004-03-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosssink.c: (gst_osssink_get_delay),
+       (gst_osssink_get_time):
+         get_delay() may return values lower than 0. In those cases, we
+         should not actually cast to *unsigned* int64, that will break
+         stuff horribly. In my case, it screwed up A/V sync in movies
+         in totem rather badly.
+
+2004-03-06  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/faac/gstfaac.c: (gst_faac_chain):
+       * ext/flac/gstflactag.c: (gst_flac_tag_chain):
+       * ext/libpng/gstpngenc.c: (user_write_data):
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_loop):
+       * gst/ac3parse/gstac3parse.c: (gst_ac3parse_chain):
+       * gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_chain_subtitle):
+       * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_add_slice):
+       Fix several misuse of gst_buffer_merge (it doesn't take ownership
+       of any buffer), should fix some leaks. I hope I didn't unref buffers
+       that shouldn't be...
+
+2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/media-info/media-info-priv.c: (have_type_callback),
+       (deep_notify_callback), (tag_flag_score), (found_tag_callback),
+       (error_callback), (gmi_reset), (gmi_seek_to_track),
+       (gmi_get_decoder), (gmi_set_mime), (gmip_find_type_pre),
+       (gmip_find_type_post), (gmip_find_stream_post),
+       (gmip_find_track_streaminfo_post):
+       * gst-libs/gst/media-info/media-info-priv.h:
+       * gst-libs/gst/media-info/media-info-test.c: (print_tag),
+       (info_print), (main):
+       * gst-libs/gst/media-info/media-info.c:
+       (gst_media_info_error_create), (gst_media_info_error_element),
+       (gst_media_info_instance_init), (gst_media_info_get_property),
+       (gst_media_info_new), (gst_media_info_set_source),
+       (gst_media_info_read_idler), (gst_media_info_read):
+       * gst-libs/gst/media-info/media-info.h:
+          first pass at making this work again.  This seems to work on
+          tagged ogg/vorbis and mp3 files.
+
+2004-03-06  Benjamin Otte  <otte@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         fix huge leak: gst_buffer_merge doesn't unref the first argument
+         itself.
+
+2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mad/gstmad.c: (gst_mad_class_init), (gst_mad_update_info):
+          report layer/mode/emphasis
+
+2004-03-06  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/mad/gstmad.c: (gst_mad_chain): fixed caps leak
+
+2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_new):
+          signal serial
+
+2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbis.c: (plugin_init):
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
+       (gst_vorbis_dec_init), (vorbis_dec_event):
+        add debug category
+        make vorbisdec handle _BYTE and _TIME queries
+
+2004-03-06  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/mad/gstmad.c: (gst_mad_chain): send the average bitrate read
+         from the xing header
+
+2004-03-06  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_getcaps),
+       (gst_audio_convert_link), (gst_audio_convert_change_state),
+       (gst_audio_convert_buffer_from_default_format):
+         do conversions from/to float correctly, fix some caps nego errors,
+         export correct supported caps in template and getcaps, use correct
+         caps in try_set_caps functions
+
+2004-03-06  Christophe Fergeau  <teuf@gnome.org>
+
+       For some reason, I only committed a ChangeLog entry yesterday and
+       not the corresponding code...
+       * ext/mad/gstmad.c: Fix detection of Xing headers
+       * gst/tags/gstid3tag.c: Changes to support TLEN tags
+
+2004-03-06  Benjamin Otte  <otte@gnome.org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_get_pad_by_pad),
+       (gst_ogg_demux_src_query):
+         make sure to handle the case where there's no current chain
+         gracefully.
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_fixate), (gst_aasink_init):
+       Add fixate function. (bug #131128)
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_init),
+       (gst_sdlvideosink_fixate):  Add fixate function.
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+       Fix attempt to print a non-pointer using GST_PTR_FORMAT.
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt):
+       Fix missing break that was causing ulaw to be interpreted as
+       raw int.
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
+       * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_add_slice):
+       Fix code that ignores return value of gst_buffer_merge().
+       (bug #114560)
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_descramble_segment):
+       * gst/mpegstream/gstrfc2250enc.c: (gst_rfc2250_enc_add_slice): same
+       * testsuite/gst-lint:  Check for above.
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get):  Check for unfixed
+       caps and throw an element error.  (bug #136334)
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
+       * ext/faad/gstfaad.c: (gst_faad_init), (gst_faad_srcgetcaps),
+       (gst_faad_chain): Fix negotiation.
+       * ext/librfb/gstrfbsrc.c: (gst_rfbsrc_handle_src_event): Add
+       key and button events.
+       * gst-libs/gst/floatcast/floatcast.h: Fix a minor bug in this
+       dung heap of code.
+       * gst-libs/gst/gconf/gstreamer-gconf-uninstalled.pc.in: gstgconf
+       depends on gconf
+       * gst-libs/gst/gconf/gstreamer-gconf.pc.in: same
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup),
+       (gst_play_video_fixate), (gst_play_audio_fixate): Add a fixate
+       function to encourage better negotiation, particularly between
+       audioconvert and osssink.
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain):
+       * gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):  Make some debugging
+       more important.
+       * gst/typefind/gsttypefindfunctions.c:  Fix mistake in flash
+       typefinding.
+       * gst/vbidec/vbiscreen.c:  Add glib header
+       * pkgconfig/gstreamer-play.pc.in:  Depends on gst-interfaces.
+
+2004-03-06  Christophe Fergeau  <teuf@users.sourceforge.net>
+
+       * ext/mad/gstmad.c: Fix detection of Xing headers
+       * gst/tags/gstid3tag.c: Changes to support TLEN tags
+
+2004-03-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt),
+       (gst_wavparse_pad_convert), (gst_wavparse_pad_query):
+          debug updates
+
+2004-03-06  Christophe Fergeau  <teuf@gnome.org>
+
+       * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+       * ext/mad/gstmad.c: (gst_mad_init), (is_xhead),
+       (mpg123_parse_xing_header), (gst_mad_chain): parse Xing header in vbr
+       files, and report the parsed length as a GST_TAG_DURATION tag.
+       * gst/tags/gstid3tag.c: support TLEN (duration) tag
+
+2004-03-05  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_channels):
+         convert channels correctly. convert correctly to unsigned.
+
+2004-03-05  Julien MOUTTE <julien@moutte.net>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_change_state): Check if
+       we have a window before clearing it.
+
+2004-03-05  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_change_state): Check if we
+       have a window before clearing it.
+
+2004-03-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gconf/gstreamer.schemas.in:
+       * gst-libs/gst/gconf/Makefile.am:
+          version installation path the same way as for 0.6
+       * pkgconfig/gstreamer-interfaces-uninstalled.pc.in:
+       * pkgconfig/gstreamer-libs-uninstalled.pc.in:
+       * pkgconfig/gstreamer-play-uninstalled.pc.in:
+          remove comment that was fixed
+
+2004-03-05  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_formats),
+       (gst_qtdemux_src_convert), (gst_qtdemux_get_src_query_types),
+       (gst_qtdemux_get_event_mask), (gst_qtdemux_handle_src_query),
+       (gst_qtdemux_handle_src_event), (gst_qtdemux_add_stream):
+       Add prototype code for handling seeking and querying.
+
+2004-03-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * examples/gstplay/player.c: (main):
+         Initialize variables to NULL. Prevents a segfault because the
+         (uninitialized) variable is not NULL, resulting in a crash on
+         trying to reach error->message.
+
+2004-03-05  Benjamin Otte  <otte@gnome.org>
+
+       * gst/audioconvert/gstaudioconvert.c:
+       (gst_audio_convert_buffer_to_default_format):
+       make float=>int conversion work correctly even in cornercases.
+
+2004-03-04  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * debian/README.Debian:
+       * debian/build-deps:
+       * debian/changelog:
+       * debian/control:
+       * debian/control.in:
+       * debian/copyright:
+       * debian/gstreamer-a52dec.files:
+       * debian/gstreamer-aa.files:
+       * debian/gstreamer-alsa.files:
+       * debian/gstreamer-alsa.manpages:
+       * debian/gstreamer-arts.files:
+       * debian/gstreamer-artsd.files:
+       * debian/gstreamer-audiofile.files:
+       * debian/gstreamer-avifile.files:
+       * debian/gstreamer-cdparanoia.files:
+       * debian/gstreamer-colorspace.files:
+       * debian/gstreamer-doc.files:
+       * debian/gstreamer-dv.files:
+       * debian/gstreamer-dvd.files:
+       * debian/gstreamer-esd.files:
+       * debian/gstreamer-festival.files:
+       * debian/gstreamer-flac.files:
+       * debian/gstreamer-gconf.conffiles:
+       * debian/gstreamer-gconf.files:
+       * debian/gstreamer-gconf.postinst:
+       * debian/gstreamer-gnomevfs.files:
+       * debian/gstreamer-gsm.files:
+       * debian/gstreamer-http.files:
+       * debian/gstreamer-jack.files:
+       * debian/gstreamer-jpeg.files:
+       * debian/gstreamer-mad.files:
+       * debian/gstreamer-mikmod.files:
+       * debian/gstreamer-misc.files:
+       * debian/gstreamer-mpeg2dec.files:
+       * debian/gstreamer-oss.files:
+       * debian/gstreamer-plugin-apps.files:
+       * debian/gstreamer-plugin-apps.manpages:
+       * debian/gstreamer-plugin-libs-dev.files:
+       * debian/gstreamer-plugin-libs.files:
+       * debian/gstreamer-plugin-template.postinst:
+       * debian/gstreamer-plugin-template.postrm:
+       * debian/gstreamer-sdl.files:
+       * debian/gstreamer-sid.files:
+       * debian/gstreamer-vorbis.files:
+       * debian/gstreamer-x.files:
+       * debian/mk.control:
+       * debian/rules:
+       Debian package info not maintained here.
+
+2004-03-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_class_init):
+       * ext/cdaudio/gstcdaudio.c: (gst_cdaudio_class_init):
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_class_init):
+       * ext/divx/gstdivxenc.c: (gst_divxenc_class_init):
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_class_init):
+       * ext/gsm/gstgsmenc.c: (gst_gsmenc_class_init):
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_class_init):
+       * ext/musicbrainz/gsttrm.c: (gst_musicbrainz_class_init):
+       * ext/speex/gstspeexenc.c: (gst_speexenc_class_init):
+       * ext/xvid/gstxvidenc.c: (gst_xvidenc_class_init):
+       * gst-libs/gst/colorbalance/colorbalance.c:
+       (gst_color_balance_class_init):
+       * gst-libs/gst/colorbalance/colorbalancechannel.c:
+       (gst_color_balance_channel_class_init):
+       * gst-libs/gst/mixer/mixer.c: (gst_mixer_class_init):
+       * gst-libs/gst/play/play.c: (gst_play_class_init):
+       * gst-libs/gst/propertyprobe/propertyprobe.c:
+       (gst_property_probe_iface_init):
+       * gst-libs/gst/tuner/tuner.c: (gst_tuner_class_init):
+       * gst-libs/gst/tuner/tunerchannel.c:
+       (gst_tuner_channel_class_init):
+       * gst-libs/gst/xoverlay/xoverlay.c: (gst_x_overlay_base_init):
+       * gst/cutter/gstcutter.c: (gst_cutter_class_init):
+       * gst/effectv/gstvertigo.c: (gst_vertigotv_class_init):
+       * sys/cdrom/gstcdplayer.c: (cdplayer_class_init):
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_class_init):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_class_init):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_class_init):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init):
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_class_init):
+          fix signals to use - instead of _
+       * ext/libcaca/gstcacasink.h:
+       * ext/sdl/sdlvideosink.h:
+          fix header rename
+
+2004-03-04  David Schleef  <ds@schleef.org>
+
+       * testsuite/gst-lint:  Add a check for bad signal names.
+
+2004-03-04  <kost@imn.htwk-leipzig.de>
+
+       reviewed by David Schleef
+
+       * gst/videofilter/gstgamma.c: (gst_gamma_rgb32): Fix typo that
+       modified the alpha channel and caused a warning. (bug #136192)
+
+2004-04-03  Christian Schaller <Uraeus@gnome.org>
+
+       * gst-plugins.spec.in:
+       Change names of plugins to actually be correct. Try to keep things
+       alphabetical to avoid getting beat up by Thomas
+
+2004-03-03  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/gconf/gconf.c: (gst_gconf_get_default_video_sink):
+       Using ximagesink as a default if no gconf key found. We should
+       probably consider using alsasink instead of osssink for the audio
+       part.
+
+2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+         fix --with-plugins, don't think it ever worked before
+       * gst-plugins.spec.in:
+          even more updates
+
+2004-03-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/sdl/sdlvideosink.h:
+       * sys/ximage/ximagesink.h:
+       * sys/xvideo/xvideosink.h:
+       * sys/xvimage/xvimagesink.h:
+         Fix for move of gstvideosink.h -> videosink.h.
+
+2004-03-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/xwindowlistener/Makefile.am:
+         this is a plugin library, not a library
+
+2004-03-01  David Schleef  <ds@schleef.org>
+
+       * AUTHORS:  Added some names.  Add yourself if you're still
+       missing.
+
+2004-03-01  David Schleef  <ds@schleef.org>
+
+       * MAINTAINERS: Add
+
+2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-plugins.spec.in: clean up spec file
+
+2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/video/Makefile.am:
+       * gst-libs/gst/video/gstvideosink.c:
+       * gst-libs/gst/video/gstvideosink.h:
+          rename gstvideosink.h to videosink.h to match other headers
+       * gst/mixmatrix/Makefile.am:
+          fix plugin filename
+       * gst/tags/Makefile.am: fix plugin filename
+
+2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/tags/Makefile.am: fix plugin filename
+
+2004-03-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * examples/gstplay/player.c: (got_time_tick), (main):
+         add error handler
+          display time_tick more readably
+       * gst/mixmatrix/Makefile.am:
+          fix plugin file name
+
+2004-02-29  Christophe Fergeau  <teuf@gnome.org>
+
+       * sys/oss/gstosselement.c: (gst_osselement_probe),
+       (device_combination_append), (gst_osselement_class_probe_devices):
+       * sys/oss/gstosselement.h:
+         Reworked enumeration of oss dsps and mixers so that gst-mixer works
+         on my system using alsa oss emulation, fixes bug #135597
+
+2004-02-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videodrop/gstvideodrop.c: (gst_videodrop_init),
+       (gst_videodrop_chain), (gst_videodrop_change_state):
+       * gst/videodrop/gstvideodrop.h:
+         Work based on timestamp of input data, not based on the expected
+         framerate from the input. The consequence is that this element now
+         not only scales framerates, but also functions as a framerate
+         corrector or framerate stabilizer/constantizer.
+
+2004-02-27  David Schleef  <ds@schleef.org>
+
+       patches from jmmv@menta.net (Julio M. Merino Vidal)
+
+       * gst/interleave/deinterleave.c: (deinterleave_chain): Fix
+       GST_ELEMENT_ERROR call (bug #135634)
+       * gst/interleave/interleave.c: (interleave_buffered_loop),
+       (interleave_bytestream_loop): Don't use alloca() (bug #135640)
+       * sys/cdrom/gstcdplayer_ioctl_bsd.h: Fix ioctls on NetBSD (bug #135645)
+       * sys/oss/gstosssink.c: (gst_osssink_get_delay),
+       (gst_osssink_chain): Fix ioctls on NetBSD. (bug #135644)
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_sync_next_frame),
+       (gst_v4lmjpegsrc_set_capture), (gst_v4lmjpegsrc_set_capture_m),
+       (gst_v4lmjpegsrc_capture_init), (gst_v4lmjpegsrc_requeue_frame):
+       Fix GST_ELEMENT_ERROR call.
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_try_palette): Fix
+       GST_ELEMENT_ERROR call.
+
+2004-02-27  Benjamin Otte  <otte@gnome.org>
+
+       * gst-libs/gst/audio/audio.h:
+         add macro to make sure header isn't included twice
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_chunk):
+         don't use gst_buffer_free
+       * gst/playondemand/filter.func:
+         don't use gst_data_free. Free data only once.
+
+2004-02-26  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/tuner/Makefile.am:
+       * gst/level/Makefile.am: -marshal.[ch] and -enum.[ch] files
+       should not be disted, -marshal.h files should not be installed,
+       and -enum.h files _should_ be installed.  Fix to make this the
+       case.
+
+=== release 0.7.5 ===
+
+2004-02-26  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: release 0.7.5, "Under The Sea"
+
+2004-02-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link),
+       (gst_audio_convert_change_state), (gst_audio_convert_get_buffer):
+       * gst/videoscale/gstvideoscale.c:
+       * sys/oss/gstosselement.c: (gst_osselement_sync_parms):
+          assorted debug/warning fixes
+
+2004-02-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps),
+       (gst_videoscale_init), (gst_videoscale_chain),
+       (gst_videoscale_set_property), (plugin_init):
+       * gst/videoscale/gstvideoscale.h:
+       * gst/videoscale/videoscale.c: (gst_videoscale_setup),
+       (gst_videoscale_scale_rgb), (gst_videoscale_planar411),
+       (gst_videoscale_planar400), (gst_videoscale_packed422),
+       (gst_videoscale_packed422rev), (gst_videoscale_32bit),
+       (gst_videoscale_24bit), (gst_videoscale_16bit),
+       (gst_videoscale_bilinear), (gst_videoscale_bicubic),
+       (gst_videoscale_scale_plane_slow),
+       (gst_videoscale_scale_point_sample),
+       (gst_videoscale_scale_nearest),
+       (gst_videoscale_scale_nearest_str2),
+       (gst_videoscale_scale_nearest_str4),
+       (gst_videoscale_scale_nearest_32bit),
+       (gst_videoscale_scale_nearest_24bit),
+       (gst_videoscale_scale_nearest_16bit):
+        add debugging category and use it properly
+        fix use of GST_PTR_FORMAT
+
+2004-02-25  Andy Wingo  <wingo@pobox.com>
+
+       * gst/interleave/interleave.c (interleave_buffered_loop): Always
+       push only when channel->buffer is NULL. Prevents segfaults doing
+       the state change after a nonlocal exit, like a scheme exception.
+
+       * gst/audioconvert/gstaudioconvert.c (gst_audio_convert_getcaps):
+       Handle the case where the intersected caps is empty.
+
+2004-02-25  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/law/mulaw-decode.c: (mulawdec_link):
+       * gst/law/mulaw.c: (plugin_init):
+          fix mulawdec so it actually works again
+
+2004-02-24  Arwed v. Merkatz  <v.merkatz@gmx.net>
+
+       reviewed by: David Schleef  <ds@schleef.org>
+
+       * gst/videofilter/gstgamma.c: (gst_gamma_class_init),
+       (gst_gamma_init), (gst_gamma_set_property),
+       (gst_gamma_get_property), (gst_gamma_calculate_tables),
+       (gst_gamma_rgb24), (gst_gamma_rgb32):  Adds gamma correction
+       for RGB, with separate r g and b correction factors. (#131167)
+
+2004-02-24  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_chain):
+          only signal tags for bitrate if they're > 0 (#134894)
+
+2004-02-24  David Schleef  <ds@schleef.org>
+
+       * gst/qtdemux/qtdemux.c: (plugin_init), (gst_qtdemux_loop_header),
+       (qtdemux_parse_moov), (qtdemux_parse), (qtdemux_node_dump_foreach),
+       (qtdemux_dump_mvhd), (qtdemux_dump_tkhd), (qtdemux_dump_elst),
+       (qtdemux_dump_mdhd), (qtdemux_dump_hdlr), (qtdemux_dump_vmhd),
+       (qtdemux_dump_dref), (qtdemux_dump_stsd), (qtdemux_dump_stts),
+       (qtdemux_dump_stss), (qtdemux_dump_stsc), (qtdemux_dump_stsz),
+       (qtdemux_dump_stco), (qtdemux_dump_co64), (qtdemux_dump_dcom),
+       (qtdemux_dump_cmvd), (qtdemux_parse_tree), (qtdemux_parse_trak):
+       Cleanups.  Convert g_prints to GST_LOGs.  Add qtdemux debug
+       category.  Attempt to fix timestamp calculation.
+
+2004-02-24  Johan Dahlin  <johan@gnome.org>
+
+       * gst-libs/gst/gconf/gconf.c: Add \n to g_print error messages
+
+2004-02-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * gconf/Makefile.am:
+       * gconf/gstreamer.schemas:
+       * gst-libs/gst/gconf/Makefile.am:
+       * gst-libs/gst/gconf/gconf.c:
+          version gconf schemas and install locations
+
+2004-02-23  Benjamin Otte  <otte@gnome.org>
+
+       * ext/xine/xineinput.c: (gst_xine_input_dispose):
+       (gst_xine_input_subclass_init):
+         call parent dispose.
+         change pad template for CD reader correctly
+       * ext/xine/Makefile.am:
+       * ext/xine/gstxine.h:
+       * ext/xine/xine.c: (plugin_init):
+       * ext/xine/xineaudiosink.c:
+         wrap audio sinks, too
+       * gst-libs/gst/resample/private.h:
+       * gst-libs/gst/resample/resample.c: (gst_resample_init),
+       (gst_resample_reinit), (gst_resample_scale),
+       (gst_resample_nearest_s16), (gst_resample_bilinear_s16),
+       (gst_resample_sinc_slow_s16), (gst_resample_sinc_s16),
+       (gst_resample_sinc_ft_s16), (gst_resample_nearest_float),
+       (gst_resample_bilinear_float), (gst_resample_sinc_slow_float),
+       (gst_resample_sinc_float), (gst_resample_sinc_ft_float):
+       * gst-libs/gst/resample/resample.h:
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_method_get_type),
+       (gst_audioscale_class_init), (gst_audioscale_link),
+       (gst_audioscale_get_buffer), (gst_audioscale_init),
+       (gst_audioscale_chain), (gst_audioscale_set_property),
+       (gst_audioscale_get_property):
+       * gst/audioscale/gstaudioscale.h:
+         s/resample_*/gst_resample_*/i to not clobber namespaces
+
+2004-02-23  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps),
+       (gst_riff_create_audio_caps), (gst_riff_create_iavs_caps),
+       (gst_riff_create_video_template_caps),
+       (gst_riff_create_audio_template_caps),
+       (gst_riff_create_iavs_template_caps):
+       * gst-libs/gst/riff/riff-media.h:
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_base_init),
+       (gst_asf_demux_audio_caps), (gst_asf_demux_add_audio_stream),
+       (gst_asf_demux_video_caps), (gst_asf_demux_add_video_stream):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_add_stream):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream),
+       (gst_matroska_demux_video_caps), (gst_matroska_demux_audio_caps),
+       (gst_matroska_demux_plugin_init): First batch implementing audio and
+       video codec tags in demuxers.
+
+2004-02-22  Benjamin Otte  <otte@gnome.org>
+
+       * ext/xine/Makefile.am:
+       * ext/xine/gstxine.h:
+       * ext/xine/xine.c: (plugin_init):
+       * ext/xine/xineinput.c:
+         add input plugin wrapper. Playback from files, http, mms and cdda
+         works.
+       * ext/xine/xineaudiodec.c: (gst_xine_audio_dec_chain):
+         remove leftover G_GNUC_UNUSED
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_stream),
+       (gst_asf_demux_identify_guid):
+         improve debugging output
+
+2004-02-22  Benjamin Otte  <otte@gnome.org>
+
+       reported by: Padraig O'Briain <padraig.obriain@sun.com>
+
+       * autogen.sh:
+         replace test -e with test -x for mkinstalldirs to be more portable.
+         (fixes #134816)
+
+2004-02-22  Benjamin Otte  <otte@gnome.org>
+
+       reported by: Stefan Kost <kost@imn.htwk-leipzig.de>
+
+       * gst/audioconvert/gstaudioconvert.c: (plugin_init):
+         set rank to PRIMARY
+       * gst/volume/gstvolume.c: (plugin_init):
+         set rank to NONE
+       fixes #134960
+
+2004-02-22   Julio M. Merino Vidal <jmmv@menta.net>
+
+       reviewed by Benjamin Otte  <otte@gnome.org>
+
+       * ext/flac/gstflacenc.c: (gst_flacenc_chain):
+         escape NULL strings in GST_ELEMENT_ERROR properly (fixes #135116)
+
+2004-02-22  Benjamin Otte  <otte@gnome.org>
+
+       * configure.ac:
+         export [_]*{gst,Gst,GST}.* symbols from plugins
+
+2004-02-22  Christophe Fergeau <teuf@gnome.org>
+
+       reviewed by: Benjamin Otte  <otte@gnome.org>
+
+       * ext/lame/gstlame.c: (add_one_tag):
+       * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_get_tag_value),
+       (gst_vorbisenc_metadata_set1):
+       * gst/tags/gstid3tag.c:
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_add):
+         apply fixes from bugs #135042 (lame can't write tags) and #133817
+         (add GST_ALBUM_VOLUME_{COUNT,NUMBER} tags)
+
+2004-02-22 Ramon Garcia <ramon_garcia_f@yahoo.com>
+
+       * configure.ac: Export only gst_plugin_desc from plugins.
+         Note that this change only makes any effect with Linux using libtool
+        1.5.2 or higher. Otherwise it is silently ignored, but it would build
+         fine. And don't try to have several versions of libtool in different
+         directories.
+
+2004-02-20  Andy Wingo  <wingo@pobox.com>
+
+       * gst/intfloat/, gst/oneton: Removed, replaced by audioconvert and
+       interleave respectively.
+
+       * gst/interleave/deinterleave.c: New plugin: deinterleave
+       (replaces on oneton).
+       * gst/interleave/interleave.c: New plugin: interleave.
+       * gst/interleave/plugin.h: Support file.
+       * gst/interleave/plugin.c: Support file.
+
+       * configure.ac: Remove intfloat and oneton, add interleave.
+
+       * ext/sndfile/gstsf.c: Handle events better.
+
+       * gst/audioconvert/gstaudioconvert.c: Change to support int2float
+       and float2int operation. int2float has scheduling problems as
+       noted in in2float_chain.
+
+2004-02-20  Benjamin Otte  <otte@gnome.org>
+
+       * ext/xine/Makefile.am:
+       * ext/xine/gstxine.h:
+       * ext/xine/xine.c:
+       * ext/xine/xineaudiodec.c:
+       * ext/xine/xinecaps.c:
+         add first version of xine plugin wrapper. Currently only wraps the
+         QDM2 win32 DLL, and even that only in proof-of-concept quality.
+       * configure.ac:
+       * ext/Makefile.am:
+         add xine plugin wrapper, disabled by default. Use --enable-xine to
+         build. Note that it'll segfault on gst-register if you don't remove
+         the goom and tvtime post plugins from xine.
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_sink_event),
+       (qtdemux_parse), (qtdemux_parse_trak), (qtdemux_audio_caps):
+         add extradata parsing for QDM2.
+         change around debugging prints.
+
+2004-02-19  Benjamin Otte  <otte@gnome.org>
+
+       * ext/lame/gstlame.c: (gst_lame_chain):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_chain):
+         use gst_tag_list_insert when you want to insert tags
+
+2004-02-18  David Schleef  <ds@schleef.org>
+
+       * configure.ac:  Move massink to gst-rotten
+       * ext/Makefile.am:
+       * ext/mas/Makefile.am:
+       * ext/mas/massink.c:
+       * ext/mas/massink.h:
+
+2004-02-18  David Schleef  <ds@schleef.org>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (plugin_init): Disable gdk_pixbuf
+       typefinding, since it seems to be worse than nothing.
+       * gst/typefind/gsttypefindfunctions.c: (qt_type_find):  Add ftyp
+       atom to recognize .mp4 and .m4a files as video/quicktime.
+
+2004-02-18  David Schleef  <ds@schleef.org>
+
+       * gst/sine/demo-dparams.c: (quit_live),
+       (dynparm_log_value_changed), (dynparm_value_changed), (main):
+       Use double dparams, not float.
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_class_init),
+       (gst_sinesrc_init): Change sync default to FALSE, since multiple
+       sync'd elements don't really work correctly.
+       * gst/volume/gstvolume.c: (volume_class_init), (volume_init),
+       (volume_update_volume), (volume_get_property):  Change dparam
+       to double.
+
+2004-02-18  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c:
+       (gst_ximagesink_xwindow_update_geometry),
+       (gst_ximagesink_renegotiate_size), (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_change_state), (gst_ximagesink_expose),
+       (gst_ximagesink_init): Rework the way software video scaling works. So
+       now we check on each chain call if the video frames are feeling the
+       window. If not we try to renegotiate caps. On failure we memorize that
+       and we won't try again for that PLAYING sessions.
+       * sys/ximage/ximagesink.h: Adding a boolean to store the caps renego
+       failure.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_init): initialize the
+       synchronous flag.
+
+2004-02-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup):
+          break up _link so we can give a better debug message for errors
+
+2004-02-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (plugin_init):
+          set up debug category
+
+2004-02-18  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_handle_xevents), (gst_ximagesink_expose): Reorganizing
+       the way renegotiation work. The event handling function is not taking
+       care of external windows and renegotiate method check for pad flags
+       NEGOTIATING. Should fix : #133209
+
+2004-02-17  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_expose): Checking if the
+       pad is negotiating before trying renegotiation.
+
+2004-02-17  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_type_find):
+          pass on all possible mime types as typefind hints
+
+2004-02-17  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new): Fix a
+       possible SHM leak if we crash. All other apps using XShm are doing
+       that.
+
+2004-02-17  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_expose): Renegotiate size on expose.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_expose): Update window
+       size on expose.
+
+2004-02-16  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * testsuite/alsa/sinesrc.c:
+         cosmetic fix to fix compile issue with gcc 2.95.4
+
+2004-02-16  Julien MOUTTE <julien@moutte.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio),
+       (gst_alsa_timestamp_to_bytes): Alsa should trigger an error if it
+       failed opening the audio device.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
+       (gst_ximagesink_ximage_destroy), (gst_ximagesink_ximage_put),
+       (gst_ximagesink_xwindow_new), (gst_ximagesink_xwindow_destroy),
+       (gst_ximagesink_xwindow_resize), (gst_ximagesink_xwindow_clear),
+       (gst_ximagesink_renegotiate_size), (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_xcontext_get), (gst_ximagesink_xcontext_clear),
+       (gst_ximagesink_change_state), (gst_ximagesink_chain),
+       (gst_ximagesink_set_xwindow_id): Clearing window in READY TO PAUSED.
+       Removing some useless g_return_if_fail like wingo suggested.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
+       (gst_xvimagesink_xvimage_destroy), (gst_xvimagesink_xvimage_put),
+       (gst_xvimagesink_xwindow_new), (gst_xvimagesink_xwindow_destroy),
+       (gst_xvimagesink_xwindow_resize), (gst_xvimagesink_xwindow_clear),
+       (gst_xvimagesink_update_colorbalance),
+       (gst_xvimagesink_handle_xevents), (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_xcontext_clear),
+       (gst_xvimagesink_get_fourcc_from_caps),
+       (gst_xvimagesink_change_state), (gst_xvimagesink_chain),
+       (gst_xvimagesink_set_xwindow_id),
+       (gst_xvimagesink_colorbalance_list_channels),
+       (gst_xvimagesink_colorbalance_set_value),
+       (gst_xvimagesink_colorbalance_get_value): Clearing window in READY TO
+       PAUSED. Removing some useless g_return_if_fail like wingo suggested.
+
+2004-02-16  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain):
+          throw error when not negotiated instead of asserting
+
+2004-02-15  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/switch/gstswitch.c: (gst_switch_loop): More fixes for
+       correct data refcounting.
+
+2004-02-15  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/switch/gstswitch.c: (gst_switch_change_state),
+       (gst_switch_class_init): Cleaning the sinkpads correctly on state
+       change, mostly the EOS flag.
+
+2004-02-15  Julien MOUTTE  <julien@moutte.net>
+
+       * examples/gstplay/player.c: (got_eos), (main): Adding some
+       output for debugging.
+       * gst-libs/gst/play/play.c: (gst_play_state_change): Stop our
+       timeouts if we go to any state different from PLAYING.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek): Fix some
+       more EOS bugs in riff lib.
+
+2004-02-14  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/play.c: (gst_play_connect_visualization): Disable
+       visualization until i find a way to fix switch correctly.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head): Fix a bug when
+       EOS arrives.
+       * gst/switch/gstswitch.c: (gst_switch_release_pad),
+       (gst_switch_request_new_pad), (gst_switch_poll_sinkpads),
+       (gst_switch_loop), (gst_switch_dispose), (gst_switch_class_init):
+       Reworked switch to get a more correct behaviour with events and refing
+       of data stored in sinkpads.
+       * gst/switch/gstswitch.h: Adding an eos flag for every sinkpad so that
+       we don't pull from a pad in EOS.
+
+2004-02-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         remove v1 tag even if we can't read it (makes sure we don't detect
+         it again)
+
+2004-02-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_pcm_wait),
+       (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsa.h:
+         try xrun recovery when wait failed. Make xrun recovery function
+         return TRUE/FALSE to indicate success. (might fix #134354)
+
+2004-02-13  David Schleef  <ds@schleef.org>
+
+       * gst/sine/demo-dparams.c: (dynparm_log_value_changed),
+       (dynparm_value_changed), (main): Convert from float to double.
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_init): same.
+
+2004-02-13  David Schleef  <ds@schleef.org>
+
+       * gst/silence/gstsilence.c: (gst_silence_class_init),
+       (gst_silence_set_clock), (gst_silence_get),
+       (gst_silence_set_property), (gst_silence_get_property):
+       * gst/silence/gstsilence.h: Add sync property.
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_class_init),
+       (gst_sinesrc_init), (gst_sinesrc_set_clock), (gst_sinesrc_get),
+       (gst_sinesrc_set_property), (gst_sinesrc_get_property):
+       * gst/sine/gstsinesrc.h: Add sync property.
+
+2004-02-13  David Schleef  <ds@schleef.org>
+
+       * gst/intfloat/gstint2float.c: (conv_f32_s16),
+       (gst_int2float_chain_gint16):  Change stdint usage to glib types.
+
+2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * gst-libs/ext/Makefile.am:
+          move ffmpeg plugin to gst-ffmpeg module
+
+2004-02-13  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac: use GST_ARCH to detect architecture
+
+2004-02-12  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/vbidec/vbiscreen.c: Fixing thomasvs fixes. Missing header.
+
+2004-02-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/ladspa/gstladspa.c: (gst_ladspa_base_init):
+          classify LADSPA plugins based on number of src/sink pads
+         (#133663, Stefan Kost)
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_init):
+          fix dparams registration
+         (#133528, Stefan Kost)
+       * gst/vbidec/vbiscreen.c: (vbiscreen_set_current_cell):
+          fix use of isprint and use g_ascii_isprint instead
+         (#133316, Stefan Kost)
+
+2004-02-11  David Schleef  <ds@schleef.org>
+
+       Convert a few inner loops to use liboil.  This is currently
+       optional, and is only enabled if liboil is present (duh!).
+       * configure.ac: Check for liboil-0.1
+       * gst/intfloat/Makefile.am:
+       * gst/intfloat/gstint2float.c: (conv_f32_s16), (scalarmult_f32),
+       (gst_int2float_chain_gint16):
+       * gst/videofilter/Makefile.am:
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_class_init),
+       (tablelookup_u8), (gst_videobalance_planar411):
+       * gst/videotestsrc/Makefile.am:
+       * gst/videotestsrc/gstvideotestsrc.c: (plugin_init):
+       * gst/videotestsrc/videotestsrc.c: (splat_u8), (paint_hline_YUY2),
+       (paint_hline_IYU2), (paint_hline_str4), (paint_hline_str3),
+       (paint_hline_RGB565), (paint_hline_xRGB1555):
+
+2004-02-11  David Schleef  <ds@schleef.org>
+
+       * ext/lcs/gstcolorspace.c: (colorspace_find_lcs_format),
+       (gst_colorspace_caps_get_fourcc), (colorspace_setup_converter),
+       (gst_colorspace_getcaps), (gst_colorspace_link),
+       (gst_colorspace_base_init), (gst_colorspace_init),
+       (gst_colorspace_chain), (gst_colorspace_change_state),
+       (plugin_init): Merge Ronald's patch (bug #117897) and update
+       for new caps and negotiation.  Seems to work, although it
+       shows off bugs in lcs.
+
+2004-02-11  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/Makefile.am: Fix linking against libgstinterfaces.
+       (bug #133886)  Noticed by bugs@leroutier.net (Stephane LOEUILLET)
+
+2004-02-11  David Schleef  <ds@schleef.org>
+
+       * ext/librfb/gstrfbsrc.c: (gst_rfbsrc_class_init),
+       (gst_rfbsrc_change_state), (gst_rfbsrc_init),
+       (gst_rfbsrc_set_property), (gst_rfbsrc_get_property):
+       Add server and port properties
+
+2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * m4/a52.m4:
+       * m4/aalib.m4:
+       * m4/as-ffmpeg.m4:
+       * m4/as-liblame.m4:
+       * m4/as-slurp-ffmpeg.m4:
+       * m4/check-libheader.m4:
+       * m4/esd.m4:
+       * m4/freetype2.m4:
+       * m4/gconf-2.m4:
+       * m4/glib.m4:
+       * m4/gst-alsa.m4:
+       * m4/gst-artsc.m4:
+       * m4/gst-ivorbis.m4:
+       * m4/gst-matroska.m4:
+       * m4/gst-sdl.m4:
+       * m4/gst-shout2.m4:
+       * m4/gst-sid.m4:
+       * m4/gtk.m4:
+       * m4/libdv.m4:
+       * m4/libfame.m4:
+       * m4/libmikmod.m4:
+       * m4/ogg.m4:
+       * m4/vorbis.m4:
+          fix underquotedness of macros (#133800)
+       * m4/as-avifile.m4:
+       * m4/xmms.m4:
+          removed because no longer used
+
+2004-02-11  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+          require gettext 0.11.5 so ulonglong.m4 gets checked out and copied
+          by autopoint (fixes #132996)
+
+2004-02-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_base_init):
+       * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_base_init):
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_base_init):
+       * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_base_init):
+         fix memleaks
+
+2004-02-11  David Schleef  <ds@schleef.org>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_sink_link),
+       (gst_gdk_pixbuf_chain): Fix logic bug causing spurious errors.
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_base_init),
+       (gst_jpegdec_init), (gst_jpegdec_chain): Fix negotiation.
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_base_init),
+       (gst_jpegenc_class_init), (gst_jpegenc_init),
+       (gst_jpegenc_getcaps), (gst_jpegenc_link), (gst_jpegenc_resync),
+       (gst_jpegenc_chain), (gst_jpegenc_set_property),
+       (gst_jpegenc_get_property):  Fix negotiation.  Add some properties.
+       * ext/jpeg/gstjpegenc.h: Fix negotiation.
+
+2004-02-10  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_init),
+       (gst_mikmod_srcfixate), (gst_mikmod_srclink), (gst_mikmod_loop):
+       * ext/mikmod/gstmikmod.h:
+         fix caps negotiation in mikmod
+       * ext/ogg/gstoggdemux.c: (gst_ogg_print):
+         output debug information
+
+2004-02-08  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/navigation/Makefile.am:
+       * gst-libs/gst/xoverlay/Makefile.am:
+         remove unused GST_OPT_CFLAGS from Makefiles
+         include X_CFLAGS and X_LIBS in xoverlay. (#131948)
+
+2004-02-07  David Schleef  <ds@schleef.org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_handle_event): Don't
+       push events to pads that haven't been created (#133508)
+
+2004-02-07  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_src_convert),
+       (gst_dvdec_sink_convert), (gst_dvdec_handle_sink_event),
+       (gst_dvdec_video_getcaps), (gst_dvdec_video_link),
+       (gst_dvdec_loop), (gst_dvdec_change_state):
+       Second attempt at committing a working dvdec element.
+
+2004-02-06  David Schleef  <ds@schleef.org>
+
+       Build fixes for OS X: (see #129600)
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_strh),
+       (gst_riff_read_strf_vids), (gst_riff_read_strf_auds),
+       (gst_riff_read_strf_iavs):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_avih),
+       (gst_avi_demux_stream_odml):
+       * gst/playondemand/Makefile.am:
+       * gst/rtp/rtp-packet.c:
+
+2004-02-05  David Schleef  <ds@schleef.org>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_loop): Revert
+       last change, because it Just Doesn't Compile.
+
+2004-02-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_chain):
+         skip undecodable id3v2 tag instead of keeping it
+
+2004-02-05  David Schleef  <ds@schleef.org>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain):
+       Unref leaked buffer.  (Noticed by Ronald)
+
+2004-02-05  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * pkgconfig/gstreamer-libs-uninstalled.pc.in:
+       Sync requires with other checks.  >= vs =.
+
+2004-02-06  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_init), (gst_dvdec_video_getcaps),
+       (gst_dvdec_video_link), (gst_dvdec_loop):
+       * ext/dv/gstdvdec.h:
+         rework the caps negotiation so that dvdec works again instead
+         of just segfaulting.
+
+=== release 0.7.4 ===
+
+2004-02-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * NEWS: GStreamer Plugins 0.7.4 "For Great Justice" released
+       * configure.ac: changed for release
+
+2004-02-05  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/gconf/gstreamer-gconf-uninstalled.pc.in:
+       * pkgconfig/gstreamer-interfaces-uninstalled.pc.in:
+       * pkgconfig/gstreamer-libs-uninstalled.pc.in:
+       * pkgconfig/gstreamer-play-uninstalled.pc.in:
+          reworked patch by David Lehn to fix libdir and includedir for
+          uninstalled libraries
+          removed play and gconf from gstreamer-libs since they have their
+          own pkgconfig files
+
+2004-02-04  David Schleef  <ds@schleef.org>
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt): Fix a caps
+       memleak.
+
+2004-02-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_info):
+         use correct GST_TAG_ENCODER tag
+
+2004-02-05  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state):
+         be sure to stop the clock when going to paused
+       * sys/oss/gstosssink.c: (gst_osssink_change_state):
+         reset number of transmitted when going to ready.
+       fixes #132935
+
+2004-02-05  Charles Schmidt <cschmidt2@emich.edu>
+
+       reviewed by Benjamin Otte
+
+       * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+         extract track count (fixes #133410)
+
+2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_do_caps_nego):
+         that should be !=, not == (fixes #132519)
+
+2004-02-04  David Schleef  <ds@schleef.org>
+
+       Make sure set_explicit_caps() is called before adding pad.
+       * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
+       * gst/id3/gstid3types.c: (gst_id3types_loop):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead):
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
+
+2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+          bump nano to 2, first prerelease
+          put back AM_PROG_LIBTOOL
+
+2004-02-04  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * testsuite/alsa/Makefile.am:
+          these are user test apps, not automatic testsuite tests
+
+2004-02-04  David Schleef  <ds@schleef.org>
+
+       Convert GST_DEBUG_CAPS() to GST_DEBUG():
+       * gst/mpeg1videoparse/gstmp1videoparse.c:
+       (mp1videoparse_parse_seq):
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps):
+       * sys/xvideo/gstxwindow.c: (_gst_xwindow_new):
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_sinkconnect),
+       (gst_xvideosink_getcaps):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support):
+       * testsuite/gst-lint: more tests
+
+2004-02-04  David Schleef  <ds@schleef.org>
+
+       Replace use of GST_PAD_FORMATS_FUNCTION() and similar macros
+       with the code that they would expand to.
+       * ext/flac/gstflacdec.c: (gst_flacdec_get_src_formats),
+       (gst_flacdec_get_src_query_types),
+       (gst_flacdec_get_src_event_masks):
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_get_formats),
+       (gst_gnomevfssrc_get_query_types),
+       (gst_gnomevfssrc_get_event_mask):
+
+2004-02-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_class_init),
+       (gst_sinesrc_dispose):
+         fix memleak by properly disposing sinesrc
+
+2004-02-04  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/xoverlay/xoverlay.c: (gst_x_overlay_expose):
+       * gst-libs/gst/xoverlay/xoverlay.h: Adding the _expose method to tell
+       an overlay to redraw the image because it has been exposed.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_destroy),
+       (gst_ximagesink_ximage_put), (gst_ximagesink_expose),
+       (gst_ximagesink_xoverlay_init), (gst_ximagesink_init):
+       * sys/ximage/ximagesink.h: Implement expose method from XOverlay
+       interface
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_destroy),
+       (gst_xvimagesink_xvimage_put), (gst_xvimagesink_expose),
+       (gst_xvimagesink_xoverlay_init), (gst_xvimagesink_init):
+       * sys/xvimage/xvimagesink.h: Implement expose method from XOverlay
+       interface
+
+2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_type_find):
+         more memleak fixage
+
+2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (plugin_init):
+       * gst/typefind/gsttypefindfunctions.c:
+         fix memleaks shown by gst-typefind
+
+2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * common/glib-gen.mak:
+          add hack rule to touch .Plo files
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/tuner/Makefile.am:
+          remove glib_root variable
+
+2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_add_stream):
+         set explicit caps before adding the element, so the autopluggers can
+         plug correctly.
+       * gst/typefind/gsttypefindfunctions.c: (mp3_type_find),
+       (mpeg2_sys_type_find), (mpeg1_sys_type_find),
+       (mpeg_video_type_find), (mpeg_video_stream_type_find),
+       (dv_type_find):
+         fix memleaks in typefind functions. gst_type_find_suggest takes a const
+         argument.
+
+2004-02-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/colorbalance/colorbalance-marshal.list:
+       * gst-libs/gst/colorbalance/colorbalance.c:
+       * gst-libs/gst/colorbalance/colorbalance.h:
+       * gst-libs/gst/colorbalance/colorbalancemarshal.list:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/mixer/mixer-marshal.list:
+       * gst-libs/gst/mixer/mixer.c:
+       * gst-libs/gst/mixer/mixer.h:
+       * gst-libs/gst/mixer/mixermarshal.list:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/play/play.h:
+       * gst-libs/gst/tuner/Makefile.am:
+       * gst-libs/gst/tuner/tuner-marshal.list:
+       * gst-libs/gst/tuner/tuner.c:
+       * gst-libs/gst/tuner/tuner.h:
+       * gst-libs/gst/tuner/tunermarshal.list:
+          use new glib-gen.mak snippet to clean up Makefile.am
+          fix various bugs in Makefile.am's
+
+2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain):
+         handle chain parsing correctly in the multichain case
+       * ext/theora/theoradec.c: (gst_theora_dec_init), (_theora_ilog),
+       (theora_dec_from_granulepos), (theora_dec_to_granulepos),
+       (theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
+       (theora_dec_chain):
+         handle events and queries correctly
+
+2004-02-03  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * .cvsignore:
+       Ignore generated file _stdint.h.
+
+2004-02-03  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * gst-libs/gst/colorbalance/Makefile.am:
+       * gst-libs/gst/colorbalance/colorbalance.h:
+       * gst-libs/gst/mixer/Makefile.am:
+       * gst-libs/gst/mixer/mixer.h:
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/play/play.h:
+       * gst-libs/gst/tuner/Makefile.am:
+       * gst-libs/gst/tuner/tuner.h:
+       Generate enum type code with glib-mkenums.
+       * gst-libs/gst/colorbalance/.cvsignore:
+       * gst-libs/gst/mixer/.cvsignore:
+       * gst-libs/gst/play/.cvsignore:
+       * gst-libs/gst/tuner/.cvsignore:
+       Ignore generated files.
+
+2004-02-03  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * gst-libs/gst/audio/.cvsignore:
+       Ignore generated file.
+       * gst-libs/gst/audio/Makefile.am:
+       Do not install example filter.
+
+2004-02-03  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * examples/switch/.cvsignore:
+       Ignore generated file.
+
+2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * common/m4/ax_create_stdint_h.m4:
+       * configure.ac:
+         add AX_CREATE_STDINT_H to get correct type definitions for a52dec in
+         _stdint.h.
+       * Makefile.am:
+         remove generated _stdint.h in DISTCLEANFILES
+       * ext/a52dec/gsta52dec.c:
+         include _stdint.h for a52dec. (should fix #133064)
+
+2004-02-02  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_add),
+       (gst_tag_to_vorbis_comments):
+       Add replaygain support to vorbistag
+
+2004-02-02  Jeremy Simon  <jesimon@libertysurf.fr>
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
+       (gst_ffmpeg_caps_to_extradata):
+         Fix SVQ3 caps flag properties
+         Use glib macro for bytes swap
+
+2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/audiofile/gstafsink.c: (gst_afsink_plugin_init):
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_plugin_init):
+       * ext/gnomevfs/gstgnomevfs.c: (plugin_init):
+       * ext/sndfile/gstsf.c: (plugin_init):
+       * gst/avi/gstavi.c: (plugin_init):
+       * sys/dxr3/dxr3init.c: (plugin_init):
+       * sys/oss/gstossaudio.c: (plugin_init):
+       * sys/v4l/gstv4l.c: (plugin_init):
+       * sys/v4l2/gstv4l2.c: (plugin_init):
+          remove textdomain calls
+       * po/nl.po:
+          update Dutch translation
+
+2004-02-02  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/play.c: (gst_play_pipeline_setup),
+       (gst_play_set_audio_sink): Moving volume in the audio thread for
+       instantaneous volume change. Maybe i will add another volume in front
+       of visualization later, not sure yet though.
+
+2004-02-02  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
+       (gst_ximagesink_handle_xevents): Better X events handling, only take
+       the latest events for configure and motion.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_handle_xevents): same.
+
+2004-02-02  Jon Trowbridge  <trow@gnu.org>
+
+       reviewed by: David Schleef  <ds@schleef.org>
+
+       Fix memory leaks:
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_register):
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_register):
+
+2004-02-02  David Schleef  <ds@schleef.org>
+
+       code cleanup.  Change bzero() to memset().  Remove duplicate ; at ends
+       of lines.
+       * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_event):
+       * ext/flac/gstflactag.c: (gst_flac_tag_chain):
+       * ext/xvid/gstxviddec.c: (gst_xviddec_src_link):
+       * gst-libs/gst/play/play.c: (gst_play_get_sink_element):
+       * gst/ac3parse/gstac3parse.c: (gst_ac3parse_chain):
+       * gst/effectv/gstedge.c: (gst_edgetv_sinkconnect):
+       * gst/effectv/gstvertigo.c: (gst_vertigotv_sinkconnect):
+       * gst/intfloat/float22int.c: (gst_float2_2_int_getcaps),
+       (gst_float2_2_int_link):
+       * gst/mpeg2sub/gstmpeg2subt.c: (gst_mpeg2subt_chain_subtitle):
+       * gst/rtjpeg/RTjpeg.c: (RTjpeg_init_mcompress):
+       * gst/tcp/gsttcpsink.c: (gst_tcpsink_init_send):
+       * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_init_receive):
+       * gst/udp/gstudpsink.c: (gst_udpsink_init_send):
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_init_receive):
+       * sys/v4l/gstv4lelement.c: (gst_v4lelement_init):
+       * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_set_capture):
+       * testsuite/gst-lint: Add tests for bzero and ;;
+
+2004-02-02  David Schleef  <ds@schleef.org>
+
+       * gst/debug/efence.c: Add fallback if MAP_ANONYMOUS isn't defined.
+
+2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_open):
+       * ext/alsa/gstalsa.c: (gst_alsa_link), (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
+       * ext/audiofile/gstafsink.c: (gst_afsink_open_file),
+       (gst_afsink_close_file):
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_open_file),
+       (gst_afsrc_close_file):
+       * ext/divx/gstdivxdec.c: (gst_divxdec_setup), (gst_divxdec_chain):
+       * ext/divx/gstdivxenc.c: (gst_divxenc_setup), (gst_divxenc_chain):
+       * ext/dv/gstdvdec.c: (gst_dvdec_loop):
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_user_op), (dvdnavsrc_get):
+       * ext/esd/esdmon.c: (gst_esdmon_get):
+       * ext/esd/esdsink.c: (gst_esdsink_chain), (gst_esdsink_open_audio):
+       * ext/faac/gstfaac.c: (gst_faac_chain):
+       * ext/faad/gstfaad.c: (gst_faad_chain):
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_chain):
+       * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
+       * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_loop):
+       * ext/flac/gstflacdec.c: (gst_flacdec_error_callback),
+       (gst_flacdec_loop):
+       * ext/flac/gstflacenc.c: (gst_flacenc_chain):
+       * ext/flac/gstflactag.c: (gst_flac_tag_chain):
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_chain):
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file),
+       (gst_gnomevfssink_close_file):
+       * ext/gnomevfs/gstgnomevfssrc.c: (audiocast_init),
+       (gst_gnomevfssrc_open_file):
+       * ext/ivorbis/vorbisfile.c: (gst_ivorbisfile_loop):
+       * ext/lame/gstlame.c: (gst_lame_sink_link), (gst_lame_chain):
+       * ext/lcs/gstcolorspace.c: (gst_colorspace_srcconnect_func):
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event),
+       (gst_id3_tag_do_typefind), (gst_id3_tag_chain):
+       * ext/mad/gstmad.c: (gst_mad_chain):
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_loop):
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/mplex/gstmplex.cc:
+       * ext/mplex/gstmplexibitstream.cc:
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain),
+       (gst_ogg_demux_push):
+       * ext/raw1394/gstdv1394src.c:
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_lock),
+       (gst_sdlvideosink_initsdl), (gst_sdlvideosink_create):
+       * ext/sndfile/gstsf.c: (gst_sf_open_file), (gst_sf_close_file),
+       (gst_sf_loop):
+       * ext/speex/gstspeexenc.c: (gst_speexenc_chain):
+       * ext/swfdec/gstswfdec.c: (gst_swfdec_loop):
+       * ext/tarkin/gsttarkindec.c: (gst_tarkindec_chain):
+       * ext/tarkin/gsttarkinenc.c: (gst_tarkinenc_chain):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_chain):
+       * ext/vorbis/vorbisfile.c: (gst_vorbisfile_loop):
+       * ext/xvid/gstxviddec.c: (gst_xviddec_setup), (gst_xviddec_chain):
+       * ext/xvid/gstxvidenc.c: (gst_xvidenc_setup), (gst_xvidenc_chain):
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head),
+       (gst_riff_read_element_data), (gst_riff_read_seek),
+       (gst_riff_peek_list), (gst_riff_read_list), (gst_riff_read_header):
+       * gst/adder/gstadder.c: (gst_adder_loop):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_segment),
+       (gst_asf_demux_process_stream), (gst_asf_demux_get_stream):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_init),
+       (gst_avi_demux_add_stream), (gst_avi_demux_stream_header):
+       * gst/avi/gstavimux.c: (gst_avimux_stop_file):
+       * gst/flx/gstflxdec.c: (gst_flxdec_loop):
+       * gst/goom/gstgoom.c: (gst_goom_chain):
+       * gst/id3/gstid3types.c: (gst_id3types_loop):
+       * gst/intfloat/float22int.c: (gst_float2_2_int_chain):
+       * gst/intfloat/gstfloat2int.c: (gst_float2int_loop):
+       * gst/intfloat/gstint2float.c: (gst_int2float_chain_gint16):
+       * gst/matroska/ebml-read.c: (gst_ebml_read_element_id),
+       (gst_ebml_read_element_length), (gst_ebml_read_element_data),
+       (gst_ebml_read_seek), (gst_ebml_read_uint), (gst_ebml_read_sint),
+       (gst_ebml_read_float), (gst_ebml_read_header):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_init_stream),
+       (gst_matroska_demux_parse_blockgroup):
+       * gst/monoscope/gstmonoscope.c: (gst_monoscope_chain):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop):
+       * gst/oneton/gstoneton.c: (gst_oneton_chain):
+       * gst/silence/gstsilence.c: (gst_silence_get):
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_get):
+       * gst/smpte/gstsmpte.c: (gst_smpte_loop):
+       * gst/speed/gstspeed.c: (speed_loop):
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_chain):
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+       * gst/volenv/gstvolenv.c: (gst_volenv_chain):
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_chain):
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt),
+       (gst_wavparse_loop):
+       * sys/dxr3/dxr3audiosink.c: (dxr3audiosink_open),
+       (dxr3audiosink_set_mode_pcm), (dxr3audiosink_set_mode_ac3),
+       (dxr3audiosink_close):
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_open), (dxr3spusink_close):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_open),
+       (dxr3videosink_close), (dxr3videosink_write_data):
+       * sys/oss/gstosselement.c: (gst_osselement_open_audio):
+       * sys/oss/gstosssink.c: (gst_osssink_chain):
+       * sys/oss/gstosssrc.c: (gst_osssrc_get):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_buffer_free):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_buffer_free):
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay),
+       (gst_v4l_set_window), (gst_v4l_enable_overlay):
+       * sys/v4l/v4l_calls.c: (gst_v4l_get_capabilities), (gst_v4l_open),
+       (gst_v4l_set_chan_norm), (gst_v4l_get_signal),
+       (gst_v4l_get_frequency), (gst_v4l_set_frequency),
+       (gst_v4l_get_picture), (gst_v4l_set_picture), (gst_v4l_get_audio),
+       (gst_v4l_set_audio):
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l/v4lmjpegsink_calls.c: (gst_v4lmjpegsink_sync_thread),
+       (gst_v4lmjpegsink_queue_frame), (gst_v4lmjpegsink_set_playback),
+       (gst_v4lmjpegsink_playback_init),
+       (gst_v4lmjpegsink_playback_start):
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_queue_frame):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_queue_frame),
+       (gst_v4lsrc_sync_frame), (gst_v4lsrc_capture_init),
+       (gst_v4lsrc_requeue_frame), (gst_v4lsrc_try_palette):
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_get):
+       * sys/v4l2/v4l2-overlay_calls.c: (gst_v4l2_set_display),
+       (gst_v4l2_set_window), (gst_v4l2_enable_overlay):
+       * sys/v4l2/v4l2_calls.c: (gst_v4l2_get_capabilities),
+       (gst_v4l2_fill_lists), (gst_v4l2_open), (gst_v4l2_get_norm),
+       (gst_v4l2_set_norm), (gst_v4l2_get_input), (gst_v4l2_set_input),
+       (gst_v4l2_get_output), (gst_v4l2_set_output),
+       (gst_v4l2_get_frequency), (gst_v4l2_set_frequency),
+       (gst_v4l2_signal_strength), (gst_v4l2_get_attribute),
+       (gst_v4l2_set_attribute):
+       * sys/v4l2/v4l2_calls.h:
+       * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_fill_format_list),
+       (gst_v4l2src_queue_frame), (gst_v4l2src_grab_frame),
+       (gst_v4l2src_get_capture), (gst_v4l2src_set_capture),
+       (gst_v4l2src_capture_init), (gst_v4l2src_capture_start),
+       (gst_v4l2src_capture_stop):
+       * sys/vcd/vcdsrc.c: (vcdsrc_open_file):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get),
+       (gst_ximagesink_chain):
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_buffer_new),
+       (gst_xvideosink_sinkconnect), (gst_xvideosink_chain),
+       (gst_xvideosink_xwindow_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_chain):
+
+2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/volume/gstvolume.c: (gst_volume_set_volume),
+       (gst_volume_get_volume), (volume_class_init), (volume_init),
+       (volume_chain_int16), (volume_update_volume):
+       * gst/volume/gstvolume.h:
+          make code more readable by removing magic numbers
+          make mixer interface export 0-100 range
+          make it internally map to 0.0-1.0 range so users don't distort
+          output by putting the sliders at full volume
+
+2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.c: (gst_play_tick_callback),
+       (gst_play_state_change), (gst_play_seek_to_time):
+        block the tick callback for 0.5 secs after doing a seek
+
+2004-02-02  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.c: (gst_play_new):
+          check for GError
+
+2004-02-01  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/play.c: (gst_play_seek_to_time),
+       (gst_play_new): Accepting NULL GError, blocking time tick while seeking.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sink_link),
+       (gst_ximagesink_chain), (gst_ximagesink_init): s/sinkconnect/sink_link
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link),
+       (gst_xvimagesink_chain), (gst_xvimagesink_init): s/sinkconnect/sink_link
+
+2004-02-01  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * configure.ac:
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event):
+          check for a function added in vorbis 1.1
+
+2004-01-31  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state), (gst_alsa_start),
+       (gst_alsa_drain_audio), (gst_alsa_stop_audio):
+         really start/stop clock only on PLAYING <=> PAUSED
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+         remove \n from debugging lines
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain):
+         make it work when seeking does not
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event):
+         reset on DISCONT
+
+2004-01-31  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_change_state), (gst_alsa_start):
+         start clock on PAUSED=>PLAYING, not later
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         extract correct time for different discont formats
+       (gst_alsa_sink_get_time):
+         don't segfault when no format is negotiated yet, just return 0
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
+       (gst_ogg_demux_handle_event), (gst_ogg_demux_push),
+       (gst_ogg_pad_push):
+         handle flush and discont events correctly
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event), (vorbis_dec_chain):
+         handle discont events correctly
+
+2004-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.c: (gst_play_error_quark),
+       (gst_play_error_create), (gst_play_error_plugin),
+       (gst_play_pipeline_setup), (gst_play_init), (gst_play_new):
+       * gst-libs/gst/play/play.h:
+          add error handling during creation
+       * examples/gstplay/player.c: (main):
+          use new gst_play_new
+
+
+2004-01-31  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/theora/theoradec.c: (theora_dec_chain):
+         make comments work
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_src_query),
+       (vorbis_dec_src_event), (vorbis_dec_chain):
+         add encoder tag, fix tag reading to be more error tolerant, change
+         BITRATE to NOMINAL_BITRATE, add debugging, don't unref events after
+         gst_pad_event_default.
+       * gst/tags/gstvorbistag.c:
+       (gst_tag_list_from_vorbiscomment_buffer):
+         undefine function specific define at end of function
+
+2004-01-31  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * ext/flac/gstflac.c: (plugin_init):
+       * ext/flac/gstflacdec.c: (gst_flacdec_class_init):
+       * ext/flac/gstflacdec.h:
+       * ext/flac/gstflacenc.h:
+         Fix typos
+
+2004-01-30  David I. Lehn  <dlehn@users.sourceforge.net>
+
+       * examples/gstplay/player.c: s/gstplay.h/play.h/
+
+2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/Makefile.am:
+       * gst-libs/gst/play/gstplay.c:
+       * gst-libs/gst/play/gstplay.h:
+       * gst-libs/gst/play/play.c:
+          more surgery, operation complete
+
+2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/play/play.old.c:
+       * gst-libs/gst/play/play.old.h:
+          after CVS surgery by moving, remove
+       * gst-libs/gst/play/playpipelines.c:
+          remove
+
+       * gst/intfloat/float22int.c: (gst_float2_2_int_chain):
+          add negotiation error
+
+2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_event),
+       (gst_ogg_demux_push):
+          add some seeking debug info
+          send a flush when seeking
+
+2004-01-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         use AC_C_INLINE
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/theora/Makefile.am:
+       * ext/theora/theoradec.c:
+         add theora video decoder. Does just do simple decoding for now and
+         has been tested against Theora cvs only. It only works when theora
+         is compiled with --enable-static.
+       * ext/vorbis/vorbisdec.c: (vorbis_dec_event):
+         always reset packetno on DISCONT
+
+2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead):
+         Fix audio.
+
+2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       (mp3_type_frame_length_from_header):
+         Fix header parsing - stolen from ffmpeg (thank you! :) ).
+
+2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/esd/esdsink.c: (gst_esdsink_init):
+         Since we have static pad template caps, we don't need to negotiate;
+         either the core errors out or we know the format.
+
+2004-01-30  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head),
+       (gst_riff_read_seek):
+       * gst/matroska/ebml-read.c: (gst_ebml_read_element_id),
+       (gst_ebml_read_seek):
+         Fix event handling.
+
+2004-01-30  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps):
+         removee video/x-theora from vp3 decoder, it doesn't handle raw
+         theora streams
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_init):
+         fix bug with finalizing element that never went to PAUSED
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_src_query):
+         length and position queries were swapped
+       * ext/vorbis/vorbisdec.c: (gst_vorbis_dec_init),
+       (vorbis_dec_from_granulepos), (vorbis_dec_src_query),
+       (vorbis_dec_src_event):
+         implement querying time and bytes
+
+2004-01-30  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+        * just about every source file:
+          gst_element_error -> GST_ELEMENT_ERROR
+
+2004-01-29  Julien MOUTTE  <julien@moutte.net>
+
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_get): Fixing seeking
+       emiting FLUSH and even before DISCONT.
+       * gst-libs/gst/play/gstplay.c: (gst_play_seek_to_time): Fix seeking to
+       get the best instant seeking as possible yay!
+
+2004-01-29  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpeg1videoparse/gstmp1videoparse.c:
+       (gst_mp1videoparse_real_chain):
+         Committed wrong version last week... Grr... Didn't notice until now.
+
+2004-01-29  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_new): Emit the
+       have_xwindow_id signal in xwindow_create.
+
+2004-01-29  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ogg/gstoggdemux.c:
+         lots of changes - mainly support for chained bitstreams, seeking,
+         querying and bugfixes of course
+       * ext/vorbis/Makefile.am:
+       * ext/vorbis/vorbisdec.c:
+       * ext/vorbis/vorbisdec.h:
+         add vorbisdec raw vorbis decoder
+       * ext/vorbis/vorbis.c: (plugin_init):
+         register vorbisdec as PRIMARY, vorbisfile as SECONDARY
+       * gst/intfloat/Makefile.am:
+       * gst/intfloat/float22int.c:
+       * gst/intfloat/float22int.h:
+       * gst/intfloat/gstintfloatconvert.c: (plugin_init):
+         add float2intnew plugin. It converts multichannel interleaved float to
+         multichannel interleaved int. The name should probably be changed.
+       * gst/typefind/gsttypefindfunctions.c: (theora_type_find),
+       (plugin_init):
+         add typefinding for raw theora video so oggdemux can detect it.
+
+2004-01-28  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_seek_to_time): seek on video
+       sink element first.
+       * gst/videoscale/gstvideoscale.c:
+       (gst_videoscale_handle_src_event): Fixing src event handler.
+
+2004-01-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_class_init), (gst_v4lsrc_init),
+       (gst_v4lsrc_open), (gst_v4lsrc_close),
+       (gst_v4lsrc_palette_to_caps), (gst_v4lsrc_srcconnect),
+       (gst_v4lsrc_getcaps), (gst_v4lsrc_set_clock):
+       * sys/v4l/gstv4lsrc.h:
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_capture_start),
+       (gst_v4lsrc_grab_frame), (gst_v4lsrc_capture_stop):
+         Implement resizing... Hack. But that's why v4l is b0rked...
+
+2004-01-28  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
+       (gst_ximagesink_ximage_new), (gst_ximagesink_ximage_destroy),
+       (gst_ximagesink_ximage_put), (gst_ximagesink_xwindow_new),
+       (gst_ximagesink_xwindow_destroy):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
+       (gst_xvimagesink_xwindow_new), (gst_xvimagesink_xwindow_destroy),
+       (gst_xvimagesink_xwindow_resize), (gst_xvimagesink_get_xv_support),
+       (gst_xvimagesink_xcontext_get): Removing some useless debugs messages,
+       correctly cleaning the image created to check xshm calls on succes,
+       added a lot of XSync calls in X11 functions, and fixed a segfault when
+       no image format was defined before negotiation happened.
+
+2004-01-28  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_query_func):
+         use gst_element_get_time to get correct time
+
+2004-01-28  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xerror),
+       (gst_ximagesink_check_xshm_calls), (gst_ximagesink_ximage_destroy),
+       (gst_ximagesink_xcontext_get), (gst_ximagesink_class_init):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_handle_xerror),
+       (gst_xvimagesink_check_xshm_calls),
+       (gst_xvimagesink_xvimage_destroy), (gst_xvimagesink_xcontext_get): Our
+       X plugins are now able to detect that XShm calls will fail even if the
+       server claims that it has XShm support (remote displays most of the
+       time). We then log the error as a GST_DEBUG and set use_shm to FALSE
+       so that we use non XShm functions. This feature is almost useless for
+       xvimagesink as Xv is not supported on remote displays anyway, but
+       it might happen than even on the local display XShm calls fail.
+
+2004-01-27  David Schleef  <ds@schleef.org>
+
+       * ext/esd/esdsink.c: (gst_esdsink_class_init), (gst_esdsink_init),
+       (gst_esdsink_link), (gst_esdsink_get_time), (gst_esdsink_chain),
+       (gst_esdsink_change_state):  Fix sync issues in esdsink.  Also
+       changed esdsink to only use 44100,16,2, since esd sucks at rate
+       conversion and esdsink has had difficulty negotiating.
+
+2004-01-27  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_tick_callback),
+       (gst_play_seek_to_time): Fixing the way to get current position.
+
+2004-01-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/oss/gstosssink.c: (gst_osssink_sink_query):
+         use gst_element_get_time to get correct time
+
+2004-01-27  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_set_location): The easiest
+       fix ever... Inverting 2 lines of code make spider autoplug correctly
+       tagged mp3 !
+
+2004-01-27  David Schleef  <ds@schleef.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+       Use gst_pad_try_set_caps_nonfixed().
+
+2004-01-27  David Schleef  <ds@schleef.org>
+
+       * gst/ac3parse/gstac3parse.c: update to checklist 5
+       * gst/adder/gstadder.c: rewrite negotiation.  update to checklist 5
+       * gst/audioconvert/gstaudioconvert.c: update to checklist 5
+       * gst/audioscale/gstaudioscale.c: same
+       * gst/auparse/gstauparse.c: same
+       * gst/avi/gstavidemux.c: same
+
+2004-01-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_handle_sink_event):
+         stop processing after EOS
+
+2004-01-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/asfdemux/asfheaders.h:
+       * gst/asfdemux/gstasfdemux.c:
+       * gst/asfdemux/gstasfmux.c: (gst_asfmux_put_guid),
+       (gst_asfmux_put_string), (gst_asfmux_put_wav_header),
+       (gst_asfmux_put_vid_header), (gst_asfmux_put_bmp_header):
+         lot's of fixes to make data extraction simpler and get the code
+         architecture and compiler independant. Add debugging category
+       * gst/goom/gstgoom.c: (gst_goom_change_state):
+         reset channel count on PAUSED=>READY, not READY=>PAUSED
+
+2004-01-26  Colin Walters  <walters@verbum.org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c (gst_gnomevfssrc_get): Remove ugly
+       code to pull a bigger buffer in iradio mode.  This as a side effect
+       makes typefinding work.
+
+2004-01-26  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_extradata):
+       Fix SVQ3 decoding on PPC
+
+2004-01-26  Julien MOUTTE <julien@moutte.net>
+
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_chain): Dunno how
+       that one managed to stay there... Fixed.
+
+2004-01-26  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps),
+       (gst_ffmpeg_caps_to_extradata), (gst_ffmpeg_caps_to_pixfmt):
+       * gst/qtdemux/qtdemux.c: (plugin_init), (qtdemux_parse_trak),
+       (qtdemux_video_caps):
+       * gst/qtdemux/qtdemux.h:
+       Add SVQ3 specific flags to qtdemux and ffmpeg
+
+2004-01-26  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/audio/audio.h:
+         remove buffer-frames from audio caps
+       * gst/audioconvert/gstaudioconvert.c:
+         fix plugin to really work.
+
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/mixer/mixer.c:
+       * gst-libs/gst/propertyprobe/propertyprobe.c:
+       * gst-libs/gst/tuner/tuner.c: (gst_tuner_find_norm_by_name),
+       (gst_tuner_find_channel_by_name):
+       * gst-libs/gst/tuner/tuner.h:
+         Add gtk-doc style comments. Also fix a function name.
+
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (gst_divxdec_init),
+       (gst_divxdec_negotiate):
+         Fix for new capsnego - also fixes gst-player with divxdec.
+
+2004-01-25  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_pipeline_setup),
+       (gst_play_identity_handoff), (gst_play_set_location),
+       (gst_play_set_visualization), (gst_play_connect_visualization): Another
+       try in visualization implementation. Still have an issue with switch
+       blocking when pulling from video_queue and only audio comes out of
+       spider.
+       * gst/switch/gstswitch.c: (gst_switch_release_pad),
+       (gst_switch_poll_sinkpads), (gst_switch_class_init): Implementing pad
+       release method. And check if the pad is usable before pulling.
+
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_dispose),
+       (gst_videobalance_init),
+       (gst_videobalance_colorbalance_list_channels),
+       (gst_videobalance_colorbalance_set_value),
+       (gst_videobalance_colorbalance_get_value),
+       (gst_videobalance_update_properties),
+       (gst_videobalance_update_tables_planar411),
+       (gst_videobalance_planar411):
+       * gst/videofilter/gstvideobalance.h:
+         Implement lookup-tables. +/- 10x faster.
+
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_avih),
+       (gst_avi_demux_stream_odml), (gst_avi_demux_stream_index):
+         The index reading was broken. The rest worked fine, but the whole
+         goal of my rewrite was to make avidemux readable, and this was
+         not at all readable. Please use typed variables.
+
+2004-01-25  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_info):
+         Additional pad usability check.
+       * gst/mpeg1videoparse/gstmp1videoparse.c: (gst_mp1videoparse_init),
+       (mp1videoparse_find_next_gop), (gst_mp1videoparse_time_code),
+       (gst_mp1videoparse_real_chain):
+         Fix MPEG video stream parsing. The original plugin had several
+         issues, including not timestamping streams where the source was
+         not timestamped (this happens with PTS values in mpeg system
+         streams, but MPEG video is also a valid stream on its own so
+         that needs timestamps too). We use the display time code for that
+         for now. Also, if one incoming buffer contains multiple valid
+         frames, we push them all on correctly now, including proper EOS
+         handling. Lastly, several potential segfaults were fixed, and we
+         properly sync on new sequence/gop headers to include them in next,
+         not previous frames (since they're header for the next frame, not
+         the previous). Also see #119206.
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_chain),
+       (bpf_from_header):
+         Move caps setting so we only do it after finding several valid
+         MPEG-1 fraes sequentially, not right after the first one (which
+         might be coincidental).
+       * gst/typefind/gsttypefindfunctions.c: (mpeg1_sys_type_find),
+       (mpeg_video_type_find), (mpeg_video_stream_type_find),
+       (plugin_init):
+         Add unsynced MPEG video stream typefinding, and change some
+         probability values so we detect streams rightly. The idea is as
+         follows: I can have an unsynced system stream which contains
+         video. In the current code, I would randomly get a type for either
+         system or video stream type found, because the probabilities are
+         being calculated rather randomly. I now use fixed values, so we
+         always prefer system stream if that was found (and that is how it
+         should be). If no system stream was found, we can still identity                the stream as video-only.
+
+2004-01-23  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_avih),
+       (gst_avi_demux_stream_odml), (gst_avi_demux_stream_index):
+         don't write to buffer. Extract data without the need of
+         __attribute__ ((packed))
+
+2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (mpeg1_parse_header),
+       (mpeg1_sys_type_find):
+         Fix MPEG-1 stream typefinding.
+
+2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (mpeg2_sys_type_find):
+         Fix typefinding for MPEG-1 system streams, similar to MPEG-2.
+
+2004-01-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/esd/esdsink.c: (gst_esdsink_open_audio):
+       * ext/esd/gstesd.c: (plugin_init):
+          private debugging, better error reporting
+
+2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_class_init),
+       (gst_riff_read_init), (gst_riff_read_change_state):
+       * gst-libs/gst/riff/riff-read.h:
+         Remove stuff fromold metadata system.
+
+2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ogg/gstoggdemux.c:
+         Fix wrong file comment.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_info):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_header):
+         Add metadata reading properly.
+
+2004-01-23  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/Makefile.am:
+          Fix nas DIST_SUBDIRS
+          Uraeus:
+          Fix bug where make distcheck doesn't get run on adding stuff to
+          the build.
+
+2004-01-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (gst_divxdec_init), (gst_divxdec_setup):
+       * ext/divx/gstdivxdec.h:
+         Fix divx3 ("msmpeg4") playback using divxdec.
+
+2004-01-23  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/typefind/gsttypefindfunctions.c:
+       (mp3_type_frame_length_from_header): fix bug in length computation
+       (mp3_type_find): improve debugging output
+
+2004-01-23  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_pipeline_setup),
+       (gst_play_set_location), (gst_play_seek_to_time),
+       (gst_play_set_audio_sink), (gst_play_set_visualization),
+       (gst_play_connect_visualization), (gst_play_get_sink_element): Reworked
+       the pipeline from scratch. Visualization is back and switch went out as
+       i realized it was not possible to use the way i wanted.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_imagepool_clear),
+       (gst_ximagesink_change_state), (gst_ximagesink_dispose): Move xcontext
+       clearing in state change from READY to NULL. So that one can clean the
+       X ressources keeping the element.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_imagepool_clear), (gst_xvimagesink_change_state),
+       (gst_xvimagesink_colorbalance_set_value),
+       (gst_xvimagesink_colorbalance_get_value),
+       (gst_xvimagesink_set_property), (gst_xvimagesink_dispose),
+       (gst_xvimagesink_init): Same xcontext cleaning than ximagesink in state
+       change from READY to NULL and fixed some stupid bugs in colorbalance
+       get/set values. Also added the following feature : when nobody tries to
+       set some values to the colorbalance levels before the xcontext is
+       grabbed, then when creating channels list from Xv attributes we set the
+       internal values to the Xv defaults. This way we handle buggy Xv drivers
+       that set default hue values far from the middle of the range (Thanks
+       to Jon Trowbridge for pointing that issue).
+       * sys/xvimage/xvimagesink.h: Adding a cb_changed boolean to know if
+       colorbalance levels have been set before xcontext is grabbed.
+
+2004-01-22  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/oss/gstosselement.c: (gst_osselement_class_probe_devices):
+         Fix the ossmixer case where we shouldn't open /dev/dsp* because
+         it might block operations (which is bad for a mixer).
+
+2004-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/media-info/media-info-priv.c: (have_type_callback),
+       (deep_notify_callback), (gmi_set_decoder), (gmi_clear_decoder),
+       (gmip_find_type_pre):
+       * gst-libs/gst/media-info/media-info-priv.h:
+       * gst-libs/gst/media-info/media-info.c:
+       (gst_media_info_instance_init), (gst_media_info_read_idler):
+        add fakesink to get caps on decoder src pad again
+        fix callback prototype to match new have_type signal signature
+
+2004-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/adder/gstadder.c: (gst_adder_link):
+          fix non-compile and cut-n-paste code
+
+2004-01-21  David Schleef  <ds@schleef.org>
+
+       * ext/swfdec/gstswfdec.c: (gst_swfdec_video_getcaps),
+       (gst_swfdec_video_link), (copy_image), (gst_swfdec_loop),
+       (gst_swfdec_init), (gst_swfdec_change_state):
+       * ext/swfdec/gstswfdec.h:
+       Fix negotiation.
+       * gst/adder/gstadder.c: (gst_adder_link), (gst_adder_init),
+       (gst_adder_request_new_pad): Fix negotiation.
+       * gst/goom/gstgoom.c: (gst_goom_init), (gst_goom_src_fixate):
+       Add a fixate function.
+       * gst/intfloat/gstfloat2int.c:
+       * gst/intfloat/gstfloat2int.h:
+       * gst/intfloat/gstint2float.c:
+       * gst/intfloat/gstint2float.h:
+       Completely rewrite the negotiation.  Doesn't quite work yet,
+       due to some buffer-frames problem.
+
+2004-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c:
+       * sys/v4l2/v4l2_calls.h:
+          fix includes for distcheck
+
+2004-01-21  Christian Schaller <uraeus@gnome.org>
+
+       * ext/nas/
+       Add libnas (network audio system) plugin, patch from Arwed von Merkatz
+       based on earlier patch from Laurent Vivier
+
+2004-01-20  Jeremy Simon  <jesimon@libertysurf.fr>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_caps_to_extradata):
+       Fix wma caps property
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_audio_caps):
+       Fix typo (flags1 and flags2)
+
+2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/media-info/media-info-priv.c:
+       (deep_notify_callback), (gmi_seek_to_track), (gmi_get_decoder),
+       (gmip_find_type_pre), (gmip_find_type), (gmip_find_stream_post),
+       (gmip_find_stream), (gmip_find_track_metadata),
+       (gmip_find_track_streaminfo_post), (gmip_find_track_streaminfo),
+       (gmip_find_track_format):
+       * gst-libs/gst/media-info/media-info-priv.h:
+       * gst-libs/gst/media-info/media-info-test.c: (main):
+       * gst-libs/gst/media-info/media-info.c: (gst_media_info_init),
+       (gst_media_info_read_idler), (gst_media_info_read):
+       * gst-libs/gst/media-info/media-info.h:
+          register debugging category and use it for debugging
+
+2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/vorbis/vorbisfile.c: (gst_vorbisfile_update_streaminfo),
+       (gst_vorbisfile_new_link):
+          signal streaminfo through tags
+
+2004-01-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mplex/gstmplex.cc:
+       * ext/mplex/gstmplexibitstream.cc:
+         g++ doesn't like NULL in our i18n/error macros, should be
+         either (NULL) or ("").
+
+2004-01-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/dxr3/dxr3audiosink.c:
+       * sys/dxr3/dxr3init.c:
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_close):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_close):
+         Fix more error error error errors (missing includes here).
+
+2004-01-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mpeg2enc/gstmpeg2encpicturereader.cc:
+         fix thomas' error errors.
+
+2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+          fix error errors.
+
+2004-01-20  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (gst_divxdec_setup), (gst_divxdec_chain):
+       * ext/divx/gstdivxenc.c: (gst_divxenc_setup), (gst_divxenc_chain):
+         Fix for new error system.
+
+2004-01-20  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/divx/gstdivxenc.c: (gst_divxenc_setup), (gst_divxenc_chain):
+          fix for new error reporting
+
+2004-01-20  David Schleef  <ds@schleef.org>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_xcontext_get), (gst_ximagesink_getcaps),
+       (gst_ximagesink_set_xwindow_id): Change to using a framerate
+       of [1,100] instead of [0,MAX], since 0 isn't handled correctly,
+       and neither is 100+, most likely.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support),
+       (gst_xvimagesink_getcaps): same
+
+2004-01-19  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * configure.ac:
+         Up version requirement to 2.0.3 (not yet released) to avoid symbol
+         clashes with ffmpeg.
+
+2004-01-20  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/switch/gstswitch.c: (gst_switch_request_new_pad),
+       (gst_switch_init): Fixed switch element : proxying link and setting
+       caps from src to sink on request.
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_overlay):
+       * sys/v4l2/v4l2-overlay_calls.c: (gst_v4l2_set_display),
+       (gst_v4l2_set_window), (gst_v4l2_enable_overlay):
+        fix element_error
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l2/v4l2_calls.h:
+          element_error fixes
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/gst-i18n-plugin.h:
+          add locale.h
+          remove config.h inclusion
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * autogen.sh:
+          adding autopoint invocation
+       * Makefile.am:
+       * configure.ac:
+       * gst-libs/gst/gettext.h:
+          adding gettext bits
+       * ext/audiofile/gstafsink.c: (gst_afsink_plugin_init):
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_plugin_init):
+       * ext/gnomevfs/gstgnomevfs.c: (plugin_init):
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file),
+       (gst_gnomevfssink_close_file):
+       * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_open_file):
+       * ext/sndfile/gstsf.c: (gst_sf_loop), (plugin_init):
+       * gst-libs/gst/gst-i18n-plugin.h:
+       * gst/avi/gstavi.c: (plugin_init):
+       * sys/dxr3/dxr3init.c: (plugin_init):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_write_data):
+       * sys/oss/gstossaudio.c: (plugin_init):
+       * sys/oss/gstosselement.c: (gst_osselement_open_audio):
+       * sys/v4l/gstv4l.c: (plugin_init):
+       * sys/v4l/v4l_calls.c: (gst_v4l_open):
+       * sys/v4l2/gstv4l2.c: (plugin_init):
+       * sys/v4l2/v4l2_calls.c: (gst_v4l2_get_capabilities),
+       (gst_v4l2_fill_lists), (gst_v4l2_get_norm), (gst_v4l2_set_norm),
+       (gst_v4l2_get_input), (gst_v4l2_set_input), (gst_v4l2_get_output),
+       (gst_v4l2_set_output), (gst_v4l2_get_frequency),
+       (gst_v4l2_set_frequency), (gst_v4l2_signal_strength),
+       (gst_v4l2_get_attribute), (gst_v4l2_set_attribute):
+         make sure locale and translation domain are set
+          fix translated strings
+       * po/.cvsignore:
+       * po/LINGUAS:
+       * po/Makevars:
+       * po/POTFILES.in:
+       * po/nl.po:
+          put translation files into place
+       * sys/xvideo/imagetest.c: (main):
+       * ext/dv/demo-play.c: (main):
+          fix unnecessary translations
+
+2004-01-19  Thomas Vander Stichele  <thomas (at) apestaart (dot) org>
+
+       * ext/sndfile/gstsf.c:
+       * gst/avi/gstavimux.c:
+       * ext/audiofile/gstafsink.c:
+       * ext/audiofile/gstafsrc.c:
+       * ext/gnomevfs/gstgnomevfssink.c:
+       * ext/gnomevfs/gstgnomevfssrc.c:
+       * sys/oss/gstosselement.c:
+       * sys/v4l/v4l_calls.h:
+          fix i18n include
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/v4l2/v4l2_calls.c: (gst_v4l2_get_capabilities),
+       (gst_v4l2_fill_lists), (gst_v4l2_open), (gst_v4l2_get_norm),
+       (gst_v4l2_set_norm), (gst_v4l2_get_input), (gst_v4l2_set_input),
+       (gst_v4l2_get_output), (gst_v4l2_set_output),
+       (gst_v4l2_get_frequency), (gst_v4l2_set_frequency),
+       (gst_v4l2_signal_strength), (gst_v4l2_get_attribute),
+       (gst_v4l2_set_attribute):
+        update to new error handling
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ext/sidplay/gstsiddec.cc:
+       * gst/modplug/gstmodplug.cc:
+          parenthese NULL because C++ seems angry about it
+
+2004-01-19  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/gst-i18n-plugin.h:
+          add skeleton i18n stuff, but needs to be further implemented
+
+2004-01-18  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * examples/gstplay/player.c: (main):
+       * ext/aalib/gstaasink.c: (gst_aasink_open):
+       * ext/alsa/gstalsa.c: (gst_alsa_link), (gst_alsa_xrun_recovery):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_loop):
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
+       * ext/audiofile/gstafsink.c: (gst_afsink_open_file),
+       (gst_afsink_close_file):
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_open_file),
+       (gst_afsrc_close_file):
+       * ext/divx/gstdivxdec.c: (gst_divxdec_setup), (gst_divxdec_chain):
+       * ext/dv/gstdvdec.c: (gst_dvdec_loop):
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_user_op), (dvdnavsrc_get):
+       * ext/esd/esdmon.c: (gst_esdmon_get):
+       * ext/esd/esdsink.c: (gst_esdsink_chain):
+       * ext/faac/gstfaac.c: (gst_faac_chain):
+       * ext/faad/gstfaad.c: (gst_faad_chain):
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_chain):
+       * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
+       * ext/ffmpeg/gstffmpegmux.c: (gst_ffmpegmux_loop):
+       * ext/flac/gstflacdec.c: (gst_flacdec_error_callback),
+       (gst_flacdec_loop):
+       * ext/flac/gstflacenc.c: (gst_flacenc_chain):
+       * ext/flac/gstflactag.c: (gst_flac_tag_chain):
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_chain):
+       * ext/gnomevfs/gstgnomevfssink.c: (gst_gnomevfssink_open_file),
+       (gst_gnomevfssink_close_file):
+       * ext/gnomevfs/gstgnomevfssrc.c: (audiocast_init),
+       (gst_gnomevfssrc_open_file):
+       * ext/ivorbis/vorbisfile.c: (gst_ivorbisfile_loop):
+       * ext/lame/gstlame.c: (gst_lame_sink_link), (gst_lame_chain):
+       * ext/lcs/gstcolorspace.c: (gst_colorspace_srcconnect_func):
+       * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event),
+       (gst_id3_tag_do_typefind), (gst_id3_tag_chain):
+       * ext/mad/gstmad.c: (gst_mad_chain):
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_loop):
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/mpeg2enc/gstmpeg2encpicturereader.cc:
+       * ext/mplex/gstmplex.cc:
+       * ext/mplex/gstmplexibitstream.cc:
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_chain),
+       (gst_ogg_demux_push), (gst_ogg_pad_push):
+       * ext/raw1394/gstdv1394src.c:
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_lock),
+       (gst_sdlvideosink_initsdl), (gst_sdlvideosink_create):
+       * ext/sidplay/gstsiddec.cc:
+       * ext/sndfile/gstsf.c: (gst_sf_open_file), (gst_sf_close_file),
+       (gst_sf_loop):
+       * ext/speex/gstspeexenc.c: (gst_speexenc_chain):
+       * ext/tarkin/gsttarkindec.c: (gst_tarkindec_chain):
+       * ext/tarkin/gsttarkinenc.c: (gst_tarkinenc_chain):
+       * ext/vorbis/vorbisenc.c: (gst_vorbisenc_chain):
+       * ext/vorbis/vorbisfile.c: (gst_vorbisfile_loop):
+       * ext/xvid/gstxviddec.c: (gst_xviddec_setup), (gst_xviddec_chain):
+       * ext/xvid/gstxvidenc.c: (gst_xvidenc_setup), (gst_xvidenc_chain):
+       * gst-libs/gst/Makefile.am:
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head),
+       (gst_riff_read_element_data), (gst_riff_read_seek),
+       (gst_riff_peek_list), (gst_riff_read_list), (gst_riff_read_header):
+       * gst/adder/gstadder.c: (gst_adder_parse_caps), (gst_adder_loop):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_segment),
+       (gst_asf_demux_process_stream), (gst_asf_demux_get_stream):
+       * gst/avi/gstavidemux.c: (gst_avi_demux_stream_init),
+       (gst_avi_demux_add_stream), (gst_avi_demux_stream_header):
+       * gst/avi/gstavimux.c: (gst_avimux_stop_file):
+       * gst/flx/gstflxdec.c: (gst_flxdec_loop):
+       * gst/goom/gstgoom.c: (gst_goom_chain):
+       * gst/id3/gstid3types.c: (gst_id3types_loop):
+       * gst/intfloat/gstfloat2int.c: (gst_float2int_loop):
+       * gst/intfloat/gstint2float.c: (gst_int2float_chain_gint16):
+       * gst/matroska/ebml-read.c: (gst_ebml_read_element_id),
+       (gst_ebml_read_element_length), (gst_ebml_read_element_data),
+       (gst_ebml_read_seek), (gst_ebml_read_uint), (gst_ebml_read_sint),
+       (gst_ebml_read_float), (gst_ebml_read_header):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_init_stream),
+       (gst_matroska_demux_parse_blockgroup):
+       * gst/modplug/gstmodplug.cc:
+       * gst/monoscope/gstmonoscope.c: (gst_monoscope_chain):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop):
+       * gst/oneton/gstoneton.c: (gst_oneton_chain):
+       * gst/silence/gstsilence.c: (gst_silence_get):
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_get):
+       * gst/smpte/gstsmpte.c: (gst_smpte_loop):
+       * gst/speed/gstspeed.c: (speed_loop):
+       * gst/tags/gstvorbistag.c: (gst_vorbis_tag_chain):
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+       * gst/volenv/gstvolenv.c: (gst_volenv_chain):
+       * gst/wavenc/gstwavenc.c: (gst_wavenc_chain):
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_parse_fmt),
+       (gst_wavparse_loop):
+       * sys/dxr3/dxr3audiosink.c: (dxr3audiosink_open),
+       (dxr3audiosink_set_mode_pcm), (dxr3audiosink_set_mode_ac3),
+       (dxr3audiosink_close):
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_open), (dxr3spusink_close):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_open),
+       (dxr3videosink_close), (dxr3videosink_write_data):
+       * sys/oss/gstosselement.c: (gst_osselement_open_audio):
+       * sys/oss/gstosselement.h:
+       * sys/oss/gstosssink.c: (gst_osssink_get_type), (gst_osssink_init),
+       (gst_osssink_chain):
+       * sys/oss/gstosssrc.c: (gst_osssrc_get):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_buffer_free):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_buffer_free):
+       * sys/v4l/v4l-overlay_calls.c: (gst_v4l_set_window),
+       (gst_v4l_enable_overlay):
+       * sys/v4l/v4l_calls.c: (gst_v4l_get_capabilities), (gst_v4l_open),
+       (gst_v4l_set_chan_norm), (gst_v4l_get_signal),
+       (gst_v4l_get_frequency), (gst_v4l_set_frequency),
+       (gst_v4l_get_picture), (gst_v4l_set_picture), (gst_v4l_get_audio),
+       (gst_v4l_set_audio):
+       * sys/v4l/v4l_calls.h:
+       * sys/v4l/v4lmjpegsink_calls.c: (gst_v4lmjpegsink_sync_thread),
+       (gst_v4lmjpegsink_queue_frame), (gst_v4lmjpegsink_set_playback),
+       (gst_v4lmjpegsink_playback_init),
+       (gst_v4lmjpegsink_playback_start):
+       * sys/v4l/v4lmjpegsrc_calls.c: (gst_v4lmjpegsrc_queue_frame),
+       (gst_v4lmjpegsrc_sync_next_frame), (gst_v4lmjpegsrc_set_capture),
+       (gst_v4lmjpegsrc_set_capture_m), (gst_v4lmjpegsrc_capture_init),
+       (gst_v4lmjpegsrc_requeue_frame):
+       * sys/v4l/v4lsrc_calls.c: (gst_v4lsrc_queue_frame),
+       (gst_v4lsrc_sync_frame), (gst_v4lsrc_capture_init),
+       (gst_v4lsrc_requeue_frame), (gst_v4lsrc_try_palette):
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_get):
+       * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_fill_format_list),
+       (gst_v4l2src_queue_frame), (gst_v4l2src_grab_frame),
+       (gst_v4l2src_get_capture), (gst_v4l2src_set_capture),
+       (gst_v4l2src_capture_init), (gst_v4l2src_capture_start),
+       (gst_v4l2src_capture_stop):
+       * sys/vcd/vcdsrc.c: (vcdsrc_open_file):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get),
+       (gst_ximagesink_chain):
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_buffer_new),
+       (gst_xvideosink_sinkconnect), (gst_xvideosink_chain),
+       (gst_xvideosink_xwindow_new):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_chain):
+        use new error signal, function and categories
+
+2004-01-18  Jeremy Simon <jesimon@libertysurf.fr>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/musicbrainz/gsttrm.c:
+       * ext/musicbrainz/gsttrm.h:
+       * ext/musicbrainz/Makefile.am:
+       Add a trm plugin
+
+2004-01-18  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_set_property),
+       (gst_ximagesink_get_property), (gst_ximagesink_class_init): Adding
+       synchronous property for debugging.
+       * sys/ximage/ximagesink.h: Adding the synchronous boolean flag.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_set_property): Moving a pointer declaration to a
+       smaller block, fixing indent.
+
+2004-01-16  David Schleef  <ds@schleef.org>
+
+       * gst/videofilter/gstvideobalance.c: Fix regression; changing a
+       property affects the video stream.
+       * sys/xvimage/xvimagesink.c:
+       * sys/xvimage/xvimagesink.h:
+       Add synchronous property for debugging.  Should probably be
+       disabled in non-CVS builds.  Make sure that the Xv attribute
+       exists before we set it (crash!).  Fix a silly float bug that
+       caused colorbalance to just not work.
+
+2004-01-17  Christian Schaller <Uraeus@gnome.org>
+
+       * tools/gst-launch-ext.in - update for new plugins
+
+2004-01-16  David Schleef  <ds@schleef.org>
+
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect): Fix use of
+       already-freed caps.
+
+2994-01-16  Christian Schaller <Uraeus@gnome.org>
+
+       * Update spec for new colorspace plugin and libcaca plugin
+       * Fix compilation of libcaca plugin (clock -> id)
+
+2004-01-16  Julien MOUTTE <julien@moutte.net>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_update_colorbalance),
+       (gst_xvimagesink_xcontext_get), (gst_xvimagesink_change_state),
+       (gst_xvimagesink_set_xwindow_id),
+       (gst_xvimagesink_colorbalance_set_value),
+       (gst_xvimagesink_colorbalance_get_value),
+       (gst_xvimagesink_set_property), (gst_xvimagesink_get_property),
+       (gst_xvimagesink_init), (gst_xvimagesink_class_init): Implementing
+       correct colorbalance properties. They can now be set when the element
+       is still in NULL state. The values will be committed to the Xv Port
+       when xcontext is initialized.
+       * sys/xvimage/xvimagesink.h: Added hue, saturation, contrast,
+       brightness int values in the GstXvImagesink structure.
+
+2004-01-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst-libs/gst/Makefile.am:
+         restructure so having local patches works easier.
+
+2004-01-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mpeg2enc/Makefile.am:
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/mpeg2enc/gstmpeg2encpicturereader.cc:
+         Bugfix with respect to EOS handling.
+
+2004-01-16  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect):
+         Link with right caps (else, it segfaults).
+       * ext/mplex/gstmplexjob.cc:
+         Fix for slight API change in 1.6.1.93 release of mjpegtools.
+
+2004-01-15  David Schleef  <ds@schleef.org>
+
+       * gst-libs/gst/audio/Makefile.am:
+       Add gstaudiofiltertemplate.c and building of gstaudiofilterexample.c
+       from the template.
+       * gst-libs/gst/audio/gstaudiofilter.c:
+       * gst-libs/gst/audio/gstaudiofilter.h:
+       Add bytes_per_sample and size and n_samples calculation.
+       * gst-libs/gst/audio/gstaudiofilterexample.c:
+       Remove, now autogenerated.
+       * gst-libs/gst/audio/gstaudiofiltertemplate.c:
+       Moved from gstaudiofilterexample, object name changed, code added
+       so that it actually works.
+       * gst-libs/gst/audio/make_filter:
+       Script to build an audiofilter subclass from the template.
+       * gst/colorspace/Makefile.am:
+       * gst/colorspace/yuv2yuv.c:
+       Remove file, since it's GPL, and we don't use it.
+
+2004-01-15  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain): Making both of
+       them use the buffer free function to test how the buffer was allocated.
+
+2004-01-15  David Schleef  <ds@schleef.org>
+
+       * ext/esd/esdsink.c: (gst_esdsink_class_init): Remove property
+       that handles osssink fallback.
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_init),
+       (gst_audio_convert_getcaps):
+       * gst/qtdemux/qtdemux.c: (qtdemux_audio_caps):
+       Add audio/x-qdm2 for QDM2 audio.
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_get):
+       * gst/sine/gstsinesrc.h: Add example of how to implement tags.
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps):
+       Decrease minimum size to 16x16.
+       * gst/wavparse/gstwavparse.c:
+       Convert disabled pad template caps to new caps.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_chain): Throw element error when display cannot
+       be opened.  Increase minimum framerate to 1.0.  Check the data
+       free function on a buffer to make sure it is the type we expect
+       before manipulating it.
+
+2004-01-15  Julien MOUTTE <julien@moutte.net>
+
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_init),
+       (gst_videobalance_colorbalance_set_value): Implement passthru if
+       settings are in the middle.
+       * tools/gst-launch-ext.in: Stop using xvideosink, use ximagesink.
+
+2004-01-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/videofilter/Makefile.am:
+       * gst/volume/Makefile.am:
+         Since we use videofilter symbols, link to it.
+
+2004-01-15  Julien MOUTTE <julien@moutte.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_interface_init): Setting
+       mixer interface type to HARDWARE.
+       * gst-libs/gst/mixer/mixer.c: (gst_mixer_class_init): Adding a default
+       type to SOFTWARE.
+       * gst-libs/gst/mixer/mixer.h: Adding mixer interface type and macro.
+       * gst-libs/gst/mixer/mixertrack.h: Adding mixertrack flag SOFTWARE.
+       * gst/volume/gstvolume.c: (gst_volume_interface_supported),
+       (gst_volume_interface_init), (gst_volume_list_tracks),
+       (gst_volume_set_volume), (gst_volume_get_volume),
+       (gst_volume_set_mute), (gst_volume_mixer_init),
+       (gst_volume_dispose), (gst_volume_get_type), (volume_class_init),
+       (volume_init): Implementing mixer interface.
+       * gst/volume/gstvolume.h: Adding tracklist for mixer interface.
+       * sys/oss/gstosselement.c: (gst_osselement_get_type),
+       (gst_osselement_change_state): Removing some trailing commas in
+       structures.
+       * sys/oss/gstossmixer.c: (gst_ossmixer_interface_init): Setting mixer
+       interface type to HARDWARE.
+       * sys/v4l/gstv4lcolorbalance.c:
+       (gst_v4l_color_balance_interface_init): Setting colorbalance interface
+       type to HARDWARE.
+       * sys/v4l2/gstv4l2colorbalance.c:
+       (gst_v4l2_color_balance_interface_init): Setting colorbalance
+       interface type to HARDWARE.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain): use exactly the
+       same code than ximagesink for event handling.
+
+2004-01-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/snapshot/Makefile.am:
+       * ext/snapshot/gstsnapshot.c: (gst_snapshot_sinkconnect),
+       (gst_snapshot_chain):
+       * ext/snapshot/gstsnapshot.h:
+         This has to be a joke... Snapshot should be connected to a tee,
+         colorspace element before it and EOS after that, where the other
+         src of the tee receives normal data.
+         The current way is *wrong*.
+
+2004-01-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/hermes/gsthermescolorspace.c:
+         Fix another compile error. Same as below.
+
+2004-01-15  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/colorspace/gstcolorspace.c:
+       * gst/colorspace/yuv2yuv.c: (gst_colorspace_yuy2_to_i420),
+       (gst_colorspace_i420_to_yv12):
+         Fix compiling... Didn't test if it actually works.
+
+2004-01-15  David Schleef  <ds@schleef.org>
+
+       * configure.ac:
+       * gst/colorspace/Makefile.am:
+       * gst/colorspace/gstcolorspace.c:
+       * gst/colorspace/gstcolorspace.h:
+       * gst/colorspace/yuv2rgb.c:
+       * gst/colorspace/yuv2rgb.h:
+       Duplicate the ext/hermes colorspace plugin, and remove Hermes
+       code and GPL code.  Fix for new caps negotiation.  Rewrite
+       much of the format handling code, and some of the conversion
+       code.  Basically, rewrote almost everything.  This element
+       handles I420, YV12 to RGB conversions.
+       * ext/hermes/Makefile.am:
+       * ext/hermes/gsthermescolorspace.c:
+       Rename colorspace to hermescolorspace.  Fix negotiation issues.
+       Remove non-Hermes related code.  This element handles lots of
+       RGB to RGB conversions, but no YUV.
+       * ext/hermes/gstcolorspace.c:
+       * ext/hermes/gstcolorspace.h:
+       * ext/hermes/rgb2yuv.c:
+       * ext/hermes/yuv2rgb.c:
+       * ext/hermes/yuv2rgb.h:
+       * ext/hermes/yuv2rgb_mmx16.s:
+       * ext/hermes/yuv2yuv.c:
+       * ext/hermes/yuv2yuv.h:
+       Remove old code.
+
+2004-01-14  Colin Walters  <walters@verbum.org>
+
+       * ext/mad/gstid3tag.c (gst_id3_tag_chain): Don't nego caps if
+       they've already been.
+
+2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_do_caps_nego):
+         assume tag mode when pad is not connected
+
+2004-01-15  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+         Don't update the time of the clock
+       (gst_alsa_sink_loop):
+         sync to the clock given to alsasink, not the own clock
+       * sys/oss/gstosssink.c: (gst_osssink_chain):
+         sync to the clock
+       (gst_osssink_change_state):
+         activate the clock
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain):
+         remove bogus code that made DISCONT events unhandled
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_video_caps):
+         explicitly case to double in _set_simple. (fixes 2nd warning in bug
+         #131502)
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_read_object_header),
+       (gst_asf_demux_handle_sink_event), (gst_asf_demux_audio_caps),
+       (gst_asf_demux_add_audio_stream), (gst_asf_demux_video_caps):
+         convert g_warning because of wrong asf data to GST_WARNINGs (fixes
+         2nd warning in bug #131502)
+
+2004-01-14  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_init),
+       (gst_videobalance_colorbalance_set_value),
+       (gst_videobalance_colorbalance_get_value): Fixing videobalance ranges
+       for colorbalance interface implementation.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get),
+       (gst_ximagesink_set_property), (gst_ximagesink_get_property),
+       (gst_ximagesink_dispose), (gst_ximagesink_init),
+       (gst_ximagesink_class_init): Adding DISPLAY property.
+       * sys/ximage/ximagesink.h: Adding display_name to store display.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_set_property), (gst_xvimagesink_get_property),
+       (gst_xvimagesink_dispose), (gst_xvimagesink_init),
+       (gst_xvimagesink_class_init): Adding DISPLAY property and colorbalance
+       properties (they still need polishing though for gst-launch use : no
+       xcontext yet, i ll do that tomorrow).
+       * sys/xvimage/xvimagesink.h: Adding display_name to store display.
+
+2004-01-14  Julien MOUTTE  <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_pipeline_setup),
+       (gst_play_set_location), (gst_play_set_visualization): Preparing
+       switch integration, adding videobalance in the pipeline.
+
+2004-01-14  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/colorbalance/colorbalance.c:
+       (gst_color_balance_class_init): Adding a default type.
+       * gst-libs/gst/colorbalance/colorbalance.h: Adding a macro to access
+       the type.
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_get_type),
+       (gst_videobalance_dispose), (gst_videobalance_class_init),
+       (gst_videobalance_init), (gst_videobalance_interface_supported),
+       (gst_videobalance_interface_init),
+       (gst_videobalance_colorbalance_list_channels),
+       (gst_videobalance_colorbalance_set_value),
+       (gst_videobalance_colorbalance_get_value),
+       (gst_videobalance_colorbalance_init): Implementing colorbalance
+       interface.
+       * gst/videofilter/gstvideobalance.h: Adding colorbalance channels
+       list.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_set_xwindow_id): Fixing a
+       bug which was triggering a BadAccess X error when setting an overlay
+       before pad was really negotiated.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_colorbalance_init):
+       Using the colorbalance type macro.
+
+2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/flac/gstflacenc.c: (gst_flacenc_set_metadata),
+       (gst_flacenc_chain):
+         handle tags correctly
+       * gst/tags/gstid3tag.c: (gst_tag_list_new_from_id3v1):
+         extract ID3v1 tags correctly
+
+2004-01-14  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/typefind/gsttypefindfunctions.c: (matroska_type_find),
+       (plugin_init):
+         Improve matroska typefinding for odd-typed headers...
+
+2004-01-14  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream):
+         Fix for using incremental number on padnames.
+
+2004-01-14  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c:
+       * ext/divx/gstdivxenc.c:
+         Set category to divx4linux instead of divx (too generic).
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_init),
+       (gst_wavparse_parse_fmt), (gst_wavparse_handle_sink_event),
+       (gst_wavparse_loop), (gst_wavparse_change_state):
+       * gst/wavparse/gstwavparse.h:
+         fix parsing of WAV files with non-standard fmt-tag size and fix
+         skipping of unrecognized chunks... Someone please fix this thing
+         to use rifflib so all this is automated.
+       * sys/v4l/Makefile.am:
+       * sys/v4l2/Makefile.am:
+         Add X_CFLAGS because we depend on X (for overlay).
+
+2004-01-14  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         Don't issue a timestamp unless we tagged the frame
+         with a PTS.
+
+2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_tick_callback):
+         Query the audio element to get the time, not the clock. We're
+         interested in the element's time here.
+
+2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_chain):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+       * ext/esd/esdsink.c: (gst_esdsink_chain):
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_chain):
+       * ext/mas/massink.c: (gst_massink_chain):
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_chain):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_index),
+       (gst_matroska_demux_parse_metadata):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop),
+       (gst_mpeg_parse_release_locks):
+       * gst/tcp/gsttcpsink.c: (gst_tcpsink_chain):
+       * gst/udp/gstudpsink.c: (gst_udpsink_chain):
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
+       (gst_osssink_change_state):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain):
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_chain),
+       (gst_xvideosink_release_locks):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain):
+         use element time.
+       * ext/alsa/gstalsaclock.c: (gst_alsa_clock_start),
+       (gst_alsa_clock_stop):
+       * gst-libs/gst/audio/audioclock.c: (gst_audio_clock_set_active),
+       (gst_audio_clock_get_internal_time):
+         simplify for use with new clocking code.
+       * testsuite/alsa/Makefile.am:
+       * testsuite/alsa/sinesrc.c: (sinesrc_init), (sinesrc_force_caps):
+         fix testsuite for new caps system
+
+2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_update_metadata):
+       * ext/flac/gstflacenc.c: (add_one_tag):
+         length is already host endian, no need to convert. Fixes playback of
+         tagged files on PPC. (bug #128384)
+
+2004-01-13  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/colorbalance/colorbalance.h: Adding a type to the
+       colorbalance interface stating if it is hardware based or software
+       based.
+       * gst/videofilter/gstvideobalance.c: (gst_videobalance_planar411):
+       Removing a trailing comma.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_colorbalance_init): Integrating a patch from Jon
+       Trowbridge <trow@ximian.com> querying Xv adaptor for min/max value as
+       the documentation seems to be wrong on the -1000 to 1000 interval.
+
+2004-01-12  David Schleef  <ds@schleef.org>
+
+       * gst/debug/efence.c: (gst_efence_init), (gst_efence_chain),
+       (gst_efence_buffer_alloc), (gst_fenced_buffer_new),
+       (gst_fenced_buffer_default_free), (gst_fenced_buffer_default_copy):
+       Fix negotiation.  Add a bufferalloc function for the sink pad,
+       and generally clean up some of the code.
+
+2004-01-12  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/colorbalance/colorbalancechannel.c:
+       (gst_color_balance_channel_dispose): Adding safety check in dispose
+       method.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_xcontext_clear),
+       (gst_xvimagesink_interface_supported),
+       (gst_xvimagesink_colorbalance_list_channels),
+       (gst_xvimagesink_colorbalance_set_value),
+       (gst_xvimagesink_colorbalance_get_value),
+       (gst_xvimagesink_colorbalance_init), (gst_xvimagesink_get_type):
+       Adding colorbalance interface support to set XV parameters such as
+       HUE, BRIGHTNESS, CONTRAST, SATURATION.
+       * sys/xvimage/xvimagesink.h: Adding the channels list for colorbalance
+       interface.
+
+2004-01-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_get_type),
+       (gst_audio_convert_class_init), (gst_audioconvert_getcaps),
+       (gst_audio_convert_init), (gst_audio_convert_set_property),
+       (gst_audio_convert_get_property), (gst_audio_convert_chain),
+       (gst_audio_convert_link),
+       (gst_audio_convert_buffer_to_default_format),
+       (gst_audio_convert_buffer_from_default_format), (plugin_init):
+          - implement _getcaps and use it
+          - improve linking
+          - remove float caps since no float conversion is actually done
+          - remove properties and arguments that were to be used for rate
+            conversion
+
+2004-01-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst-libs/gst/audio/audio.c: (_gst_audio_structure_set_list),
+       (gst_audio_structure_set_int):
+       * gst-libs/gst/audio/audio.h:
+          add helper functions for _getcaps matching the standard audio
+          templates
+
+2004-01-12  David Schleef  <ds@schleef.org>
+
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
+       Test that pad is negotiated before getting its caps.
+
+2004-01-12  Julien MOUTTE <julien@moutte.net>
+
+       * gst-libs/gst/play/gstplay.c: (gst_play_get_sink_element): When
+       analyzing the pads of an element the bin is mostly in READY state so
+       no caps were negotiated. This helper function needs to work with
+       _get_caps directly then. I was not freeing them though, added that to
+       fix the mem leak.
+
+2004-01-12  Julien MOUTTE <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain): Fixing the
+       direct put buffers detection. I prefer checking GST_BUFFER_PRIVATE
+       than the free_func.
+
+2004-01-12  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * sys/oss/gstossaudio.c: (plugin_init):
+       * sys/oss/gstosselement.c: (gst_osselement_sync_parms):
+       * sys/oss/gstosselement.h:
+          make an oss debugging category
+          make failure more descriptive
+
+2004-01-11  David Schleef  <ds@schleef.org>
+
+       * ext/ffmpeg/gstffmpeg.c:
+       * ext/ffmpeg/gstffmpegcodecmap.c:
+       * ext/ffmpeg/gstffmpegdec.c:
+       * ext/ffmpeg/gstffmpegenc.c:
+       * ext/ffmpeg/gstffmpegprotocol.c:
+       * ext/gdk_pixbuf/gstgdkanimation.c:
+       * ext/jpeg/gstjpeg.c:
+       * ext/libpng/gstpng.c:
+       * ext/mpeg2dec/perftest.c:
+       * ext/speex/gstspeex.c:
+       * gst-libs/gst/resample/dtos.c:
+       * gst/intfloat/gstintfloatconvert.c:
+       * gst/oneton/gstoneton.c:
+       * gst/rtjpeg/RTjpeg.c:
+       * gst/rtp/gstrtp.c:
+       * sys/dxr3/dxr3init.c:
+       * sys/glsink/gstgl_nvimage.c:
+       * sys/glsink/gstgl_pdrimage.c:
+       * sys/glsink/gstglsink.c:
+       * testsuite/gst-lint:
+       Make sure everybody wraps #include "config.h" in #ifdef HAVE_CONFIG_H
+
+2004-01-11  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_set_caps):
+       * ext/faac/gstfaac.c: (gst_faac_sinkconnect):
+       * ext/gdk_pixbuf/gstgdkanimation.c:
+       (gst_gdk_animation_iter_create_pixbuf):
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_sink_link),
+       (gst_gdk_pixbuf_chain):
+       * ext/gdk_pixbuf/gstgdkpixbuf.h:
+       * ext/jack/gstjack.c: (gst_jack_change_state):
+       * ext/xvid/gstxviddec.c: (gst_xviddec_sink_link):
+       * gst-libs/gst/play/gstplay.c: (gst_play_get_sink_element):
+       * gst-libs/gst/play/play.c: (gst_play_get_sink_element):
+       * gst/videofilter/gstvideofilter.c:
+       (gst_videofilter_set_output_size):
+       Remove all usage of gst_pad_get_caps(), and replace it with
+       gst_pad_get_allowed_caps() or gst_pad_get_negotiated_cap().
+
+2004-01-11  David Schleef  <ds@schleef.org>
+
+       * configure.ac:
+       * ext/Makefile.am: Fixes to make ext/libcaca compile.
+       * ext/divx/gstdivxdec.c:
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_sink_link),
+       (gst_gdk_pixbuf_init), (gst_gdk_pixbuf_chain): Make gdkpixbufdec
+       handle images that span multiple buffers.  Now work with both
+       filesrc ! gdkpixbufdec and qtdemux ! gdkpixbufdec.
+       * ext/gdk_pixbuf/gstgdkpixbuf.h:
+       * ext/libcaca/gstcacasink.h: Fixes needed due to recent
+       video/video.h changes
+       * ext/xvid/gstxvid.c: (gst_xvid_csp_to_caps): same
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_get),
+       (gst_v4lmjpegsrc_buffer_free): Use buffer free function instead
+       of GstData free function.
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get), (gst_v4lsrc_buffer_free):
+       same.
+
+2004-01-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/v4l2/gstv4l2element.c: (gst_v4l2element_class_init),
+       (gst_v4l2element_dispose), (gst_v4l2element_set_property),
+       (gst_v4l2element_get_property):
+       * sys/v4l2/v4l2_calls.c: (gst_v4l2_set_defaults), (gst_v4l2_open):
+         add norm, channel and frequency properties.
+       * sys/v4l2/gstv4l2tuner.c:
+         fixes for tuner interface changes
+       * sys/v4l2/gstv4l2element.h:
+       * sys/v4l2/gstv4l2src.c:
+       * sys/v4l2/gstv4l2src.h:
+       * sys/v4l2/v4l2src_calls.c:
+       * sys/v4l2/v4l2src_calls.h:
+         rework v4l2src to work with saa1734 cards and allow mmaped buffers.
+
+2004-01-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/tuner/tuner.c: (gst_tuner_class_init),
+       (gst_tuner_find_norm_by_name), (gst_v4l2_find_channel_by_name),
+       (gst_tuner_channel_changed), (gst_tuner_norm_changed),
+       (gst_tuner_frequency_changed), (gst_tuner_signal_changed):
+       * gst-libs/gst/tuner/tuner.h:
+         GObjects aren't const.
+         Add find_by_name functions.
+         Add checks to _changed functions.
+       * sys/v4l/gstv4ltuner.c: (gst_v4l_tuner_get_channel),
+       (gst_v4l_tuner_get_norm):
+         Fixes for above.
+
+2004-01-12  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/video/video.h:
+         Fix caps template names to be understandable.
+         Prefix everything with GST_VIDEO.
+       * ext/aalib/gstaasink.c:
+       * ext/divx/gstdivxdec.c:
+       * ext/divx/gstdivxenc.c:
+       * ext/gdk_pixbuf/gstgdkpixbuf.c:
+       * ext/hermes/gstcolorspace.c: (gst_colorspace_base_init):
+       * ext/jpeg/gstjpegdec.c: (raw_caps_factory):
+       * ext/jpeg/gstjpegenc.c: (raw_caps_factory):
+       * ext/libcaca/gstcacasink.c:
+       * ext/libpng/gstpngenc.c: (raw_caps_factory):
+       * ext/snapshot/gstsnapshot.c:
+       * ext/swfdec/gstswfdec.c:
+       * ext/xvid/gstxviddec.c:
+       * ext/xvid/gstxvidenc.c:
+       * gst/chart/gstchart.c:
+       * gst/deinterlace/gstdeinterlace.c:
+       * gst/effectv/gsteffectv.c:
+       * gst/flx/gstflxdec.c: (gst_flxdec_loop):
+       * gst/goom/gstgoom.c:
+       * gst/median/gstmedian.c:
+       * gst/monoscope/gstmonoscope.c: (gst_monoscope_init),
+       (gst_monoscope_srcconnect), (gst_monoscope_chain):
+       * gst/overlay/gstoverlay.c:
+       * gst/smooth/gstsmooth.c:
+       * gst/smpte/gstsmpte.c:
+       * gst/synaesthesia/gstsynaesthesia.c:
+       * gst/videocrop/gstvideocrop.c:
+       * gst/videodrop/gstvideodrop.c:
+       * gst/y4m/gsty4mencode.c:
+       * sys/qcam/gstqcamsrc.c:
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_palette_to_caps):
+         Make them work with new video.h file.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain),
+       (gst_ximagesink_buffer_free), (gst_ximagesink_buffer_alloc):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain),
+       (gst_xvimagesink_buffer_free), (gst_xvimagesink_buffer_alloc):
+         Make it work with new buffer allocation system.
+
+2004-01-11  Julien MOUTTE  <julien@moutte.net>
+
+       * ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_chain): Fixing the
+       pad_alloc_buffer implementation to use ->srcpad
+       * ext/hermes/gstcolorspace.c: (gst_colorspace_chain): Fixing the
+        pad_alloc_buffer implementation to use ->srcpad
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_chain):  Fixing the
+        pad_alloc_buffer implementation to use ->srcpad
+       * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
+       (gst_ximagesink_chain), (gst_ximagesink_buffer_free),
+       (gst_ximagesink_buffer_alloc): Now only use GST_BUFFER_PRIVATE to keep
+       a reference to everything we need.
+       * sys/ximage/ximagesink.h: adding a reference to the sink in the image.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
+       (gst_xvimagesink_chain), (gst_xvimagesink_buffer_free),
+       (gst_xvimagesink_buffer_alloc): Now only use GST_BUFFER_PRIVATE to keep
+        a reference to everything we need.
+       * sys/xvimage/xvimagesink.h: adding a reference to the sink in the image
+
+2004-01-11  David Schleef  <ds@schleef.org>
+
+       * ext/divx/gstdivxenc.c: remove bogus gst_caps_is_fixed() test
+       * gst/debug/efence.c: (gst_efence_chain), (gst_fenced_buffer_new),
+       (gst_fenced_buffer_default_copy): Fix for rename of buffer private
+       structure members.
+       * gst/effectv/gstwarp.c: (gst_warptv_setup): Don't reset the time
+       value during a resize/renegotiation.
+       * gst/videofilter/gstvideofilter.c: (gst_videofilter_chain): use
+       gst_pad_alloc_buffer();
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_get),
+       (gst_v4lmjpegsrc_buffer_free): Fix for rename of buffer private
+       structure members.
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_get), (gst_v4lsrc_buffer_free):
+       Fix for rename of buffer private structure members.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain),
+       (gst_ximagesink_buffer_free), (gst_ximagesink_buffer_alloc):
+       Fix for rename of buffer private structure members.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain),
+       (gst_xvimagesink_buffer_free), (gst_xvimagesink_buffer_alloc):
+       Fix for rename of buffer private structure members.
+
+2004-01-11  Arwed v. Merkatz <v.merkatz@gmx.net>
+
+       reviewed by: David Schleef <ds@schleef.org>
+
+       * gst/videofilter/Makefile.am:
+       * gst/videofilter/gstgamma.c: Gamma correction filter.  Modified
+       from the patch by ds to fit in with recent make_filter changes.
+
+2004-01-11  Julien MOUTTE  <julien@moutte.net>
+
+       * configure.ac: Adding examples/switch/Makefile
+       * examples/Makefile.am: Adding examples/switch
+       * examples/switch/Makefile.am: Adding switcher example.
+       * examples/switch/switcher.c: (got_eos), (idle_iterate),
+       (switch_timer), (main): Adding an example demonstrating switch usage
+       with 2 videotestsrc showing different patterns.
+       * gst/switch/gstswitch.c: (gst_switch_request_new_pad),
+       (gst_switch_init): Fixing switch with the new caps system.
+
+2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/video/video.h:
+         Fix 32bit caps. Issue remaining: The macro names are chosen poorly.
+         They should probably be like
+         GST_VIDEO_PAD_TEMPLATE_CAPS_{RGB,BGR,RGBx,BGRx}.
+
+2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (qtdemux_parse_trak):
+         fix audio chunk size/timestamp calculation
+
+2004-01-11  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps):
+         fix SVQ3 caps
+
+2004-01-11  Steve Baker  <steve@stevebaker.org>
+
+       * gst/effectv/gstaging.c: (gst_agingtv_get_type),
+       (gst_agingtv_base_init), (gst_agingtv_class_init),
+       (gst_agingtv_init), (gst_agingtv_setup), (gst_agingtv_rgb32),
+       (gst_agingtv_set_property), (gst_agingtv_get_property):
+        Port agingTV to videofilter
+
+2004-01-09  Julien MOUTTE <julien@moutte.net>
+
+       * ext/hermes/gstcolorspace.c: (gst_colorspace_chain):
+       Implementing gst_pad_alloc_buffer to use optimized buffer allocation.
+
+2004-01-09  Julien MOUTTE <julien@moutte.net>
+
+       * ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_chain):
+       Implementing gst_pad_alloc_buffer to use optimized buffer allocation.
+       * gst-libs/gst/xoverlay/xoverlay.c:
+       (gst_x_overlay_got_desired_size): Updating doc for the xid being 0.
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_chain):
+       Implementing gst_pad_alloc_buffer to use optimized buffer allocation.
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+       Implementing gst_pad_alloc_buffer to use optimized buffer allocation.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain),
+       (gst_ximagesink_buffer_free), (gst_ximagesink_buffer_alloc),
+       (gst_ximagesink_set_xwindow_id), (gst_ximagesink_init): Implementing
+       the bufferalloc_function to replace bufferpools, fixing the XOverlay
+       interface implementation to handle xid being 0 and fix some bugs
+       triggered by Benjamin's testcase.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain),
+       (gst_xvimagesink_buffer_free), (gst_xvimagesink_buffer_alloc),
+       (gst_xvimagesink_set_xwindow_id), (gst_xvimagesink_init): Implementing
+       the bufferalloc_function to replace bufferpools, fixing the XOverlay
+       interface implementation to handle xid being 0 and fix some bugs
+       triggered by Benjamin's testcase.
+
+2004-01-09  David Schleef  <ds@schleef.org>
+
+       * ext/librfb/gstrfbsrc.c:  Hacking.  Added actual decoding and
+       mouse pointer events.  It works.
+
+2004-01-09  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxenc.c: (gst_divxenc_init):
+         Use explicit caps - fix capsnego.
+       * ext/xvid/gstxviddec.c:
+       * ext/xvid/gstxvidenc.c:
+         Remove macro-inside-macro which caused compile errors.
+       * gst-libs/gst/riff/riff-read.c: (gst_riff_read_header):
+         Error out if it's not a RIFF file. Else we error out without
+         gst_element_error() which is not good...
+
+2004-01-08  David Schleef  <ds@schleef.org>
+
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect):
+       Fix pad_link function to handle formats that ffmpeg returns
+       as multiple caps structures.
+       * gst/videofilter/gstvideofilter.c: (gst_videofilter_chain):
+       Only complain if source buffer is _smaller_ than expected.
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_init),
+       (gst_videoscale_handle_src_event): Resize navigation events
+       when passing them upstream.
+       * gst/videotestsrc/gstvideotestsrc.c:
+       * gst/videotestsrc/gstvideotestsrc.h:
+       * gst/videotestsrc/videotestsrc.c:
+       * gst/videotestsrc/videotestsrc.h:
+       Rewrite many of the buffer painting functions to handle odd
+       sizes (for many formats, size%4!=0 or size%8!=0).  Most have
+       been verified to work with my video card.
+       * testsuite/gst-lint:  Add check for elements calling
+       gst_pad_get_caps() instead of gst_pad_get_allowed_caps().
+
+2004-01-08  David Schleef  <ds@schleef.org>
+
+       * gst/videodrop/gstvideodrop.c: (gst_videodrop_getcaps),
+       (gst_videodrop_link), (gst_videodrop_init): Fix negotiation.
+
+2004-01-08  Julien MOUTTE  <julien@moutte.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents): A
+       configure event is not emiting the desired size signal. That fixes
+       aspect ratio issues with gst-player.
+
+2004-01-08  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/median/gstmedian.c: (gst_median_link), (gst_median_init):
+         Fix capsnego.
+
+2004-01-08  Julien MOUTTE  <julien@moutte.net>
+
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_create): Using XOverlay
+       public method to fire size signal.
+
+2004-01-07  Julien MOUTTE  <julien@moutte.net>
+
+       * examples/gstplay/Makefile.am: Adding the interface library.
+       * gst-libs/gst/play/Makefile.am: Adding the interface library.
+       * gst-libs/gst/play/gstplay.c: (gst_play_set_video_sink): Connecting to         the XOverlay size signal instead of GstVideoSink.
+       * gst-libs/gst/play/gstplay.h: Including the XOverlay interface to check
+       GST_IS_X_OVERLAY before signal connect.
+       * gst-libs/gst/video/gstvideosink.c: (gst_videosink_class_init):
+       Removing the have_video_size signal.
+       * gst-libs/gst/video/gstvideosink.h: Removing the have_video_size signal
+       and associated public method.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_sinkconnect): Using XOverlay public method to fire size
+       signal.
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_sinkconnect),
+       (gst_xvideosink_xwindow_new): Using XOverlay public method to fire size
+        signal.
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sinkconnect):
+       Using XOverlay public method to fire size signal.
+
+2004-01-07  David Schleef  <ds@schleef.org>
+
+       * gst/videofilter/Makefile.am:
+       * gst/videofilter/gstvideotemplate.c:
+       * gst/videofilter/make_filter:
+       Create gstvideoexample.c in a srcdir!=builddir friendly way.
+       Convert make_filter to /bin/sh script.
+
+2004-01-07  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * gst/modplug/gstmodplug.cc: fix element description
+
+2004-01-07  Julien MOUTTE  <julien@moutte.net>
+
+       * examples/gstplay/player.c: (got_time_tick), (got_stream_length),
+       (got_video_size): Adding some new lines in g_print calls.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_new),
+       (gst_ximagesink_xwindow_destroy), (gst_ximagesink_xwindow_resize),
+       (gst_ximagesink_handle_xevents), (gst_ximagesink_fixate),
+       (gst_ximagesink_sinkconnect), (gst_ximagesink_change_state),
+       (gst_ximagesink_chain), (gst_ximagesink_buffer_new),
+       (gst_ximagesink_set_xwindow_id), (gst_ximagesink_get_desired_size):
+       Complete code review, reverting some stuff i disagree with, adding
+       some fixes : time synchronization on invalid timestamps, renegotiation
+       of private window.
+       * sys/ximage/ximagesink.h:
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_destroy),
+       (gst_xvimagesink_xwindow_resize), (gst_xvimagesink_handle_xevents),
+       (gst_xvimagesink_get_xv_support), (gst_xvimagesink_xcontext_get),
+       (gst_xvimagesink_fixate), (gst_xvimagesink_sinkconnect),
+       (gst_xvimagesink_change_state), (gst_xvimagesink_chain),
+       (gst_xvimagesink_buffer_new),
+       (gst_xvimagesink_navigation_send_event),
+       (gst_xvimagesink_set_xwindow_id),
+       (gst_xvimagesink_get_desired_size),
+       (gst_xvimagesink_xoverlay_init): Complete code review, reverting some
+       stuff i disagree with, adding some fixes : Renegotiation of private
+       window, implementing get_desired_size.
+
+2004-01-07  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/audiofile/gstafsink.c: (gst_afsink_init), (gst_afsink_chain),
+       (gst_afsink_handle_event):
+       * ext/jpeg/gstjpegenc.c: (gst_jpegenc_init):
+       * gst/avi/gstavimux.c: (gst_avimux_request_new_pad):
+       * sys/dxr3/dxr3audiosink.c: (dxr3audiosink_init):
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_init):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_init):
+         Fix for instantiate-test (see core). Also remove dead code from
+         jpegenc (which still needs fixing, but that's lower on my TODO
+         list...).
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_getcaps):
+         Never return NULL as caps.
+
+2004-01-07  David Schleef  <ds@schleef.org>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/librfb/Makefile.am:
+       * ext/librfb/gstrfbsrc.c:
+       New source plugin based on librfb-0.1.  RFB (remote framebuffer)
+       is the protocol used by VNC.
+
+2004-01-07  David Schleef  <ds@schleef.org>
+
+       * gst/videofilter/gstvideotemplate.c:
+       * gst/videofilter/gstvideotemplate.h:
+       * gst/videofilter/make_filter:
+       Merge videotemplate header into source file.
+       * gst/effectv/Makefile.am:
+       * gst/effectv/gsteffectv.c: (plugin_init):
+       * gst/effectv/gstwarp.c:
+       Make warpTV a subclass of videofilter.
+
+2004-01-07  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
+         Add guard against invalid utf-8 conversions in mad. Just in case.
+
+2004-01-07  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/oss/gstosssink.c: (gst_osssink_sink_fixate):
+         Fix for bug shown by poisoning
+
+2004-01-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_get),
+       (gst_v4lmjpegsrc_buffer_free):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_palette_to_caps),
+       (gst_v4lsrc_srcconnect), (gst_v4lsrc_getcaps), (gst_v4lsrc_get),
+       (gst_v4lsrc_buffer_free):
+         Fix for removed bufferpools.
+
+2004-01-07  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_loop):
+       Fix caps negotiation.
+
+       * ext/dvdnav/dvdnavsrc.c: (dvdnavsrc_class_init),
+       (dvdnavsrc_update_buttoninfo), (dvdnavsrc_get),
+       (dvdnavsrc_get_event_mask), (dvdnav_handle_navigation_event),
+       (dvdnavsrc_event):
+       * ext/mpeg2dec/gstmpeg2dec.c:
+       * gst-libs/gst/navigation/navigation.c:
+       (gst_navigation_send_key_event), (gst_navigation_send_mouse_event):
+       * gst-libs/gst/navigation/navigation.h:
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_handle_src_event):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_handle_xevents):
+       Super-simple first version of mouse and keyboard events. Clicking
+       on a DVD menu now works, although it may not take you where you
+       expected.
+
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_src_fixate):
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_src_fixate):
+       These fixate functions were broken - they never actually
+       fixated :)
+
+2004-01-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/shout/gstshout.c: (gst_icecastsend_base_init),
+       (gst_icecastsend_init):
+         fix for new caps system.
+       * gst-libs/gst/mixer/mixertrack.h:
+       * sys/oss/gstossmixer.c: (gst_ossmixer_build_list):
+         Add 'master track' flag (for tools like ACME that only want to
+         change the main volume).
+
+2004-01-07  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * ext/xvid/gstxvid.c: (gst_xvid_structure_to_csp),
+       (gst_xvid_csp_to_caps):
+       * ext/xvid/gstxviddec.c: (gst_xviddec_src_getcaps):
+       * ext/xvid/gstxvidenc.c:
+       ifdef out ARGB type when it isn't available
+       in xvidcore 1.0.0beta2
+
+2004-01-06  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop):
+         When we have received a new SCR right in the first buffer after
+         a seek (so in the same cycle that handles the discont), we should
+         handle the buffer instead of unreffing it, else we lose data.
+
+2004-01-06  Iain <iain@prettypeople.org>
+
+       * gst/intfloat/gstint2float.c (gst_int2float_link): Set the
+         buffer-frames caps too.
+
+       * gst/oneton/gstoneton.c (gst_oneton_sink_connect): Only create the new
+         caps that we need, don't destroy them all and rebuild them. And when
+         creating src pads, use the src pad template rather than the sink...
+
+2004-01-05  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead):
+         Add pad to element *after* setting functions such as event handler.
+         Without this, the scheduler (opt) will link pads, set the event
+         handler from the default event function (dispatcher in gstpad.c)
+         and *after* that, we will set our own event function, which will
+         thus never be used (and thus mpegdemux doesn't handle events).
+
+2004-01-04  David Schleef  <ds@schleef.org>
+
+       Fix the fixate functions to handle new prototype:
+       * gst/sine/gstsinesrc.c: (gst_sinesrc_src_fixate):
+       * gst/videotestsrc/gstvideotestsrc.c:
+       (gst_videotestsrc_src_fixate):
+       * sys/oss/gstosssink.c: (gst_osssink_sink_fixate):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_fixate):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_fixate):
+
+2004-01-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/ximage/ximagesink.h:
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_new),
+       (gst_ximagesink_xwindow_destroy), (gst_ximagesink_sinkconnect),
+       (gst_ximagesink_change_state), (gst_ximagesink_set_xwindow_id),
+       (gst_ximagesink_xoverlay_init):
+         assorted fixes to make (re)embedding work
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sinkconnect),
+       (gst_ximagesink_get_desired_size):
+         implement desired size additions to XOverlay
+
+2004-01-04  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst-libs/gst/xoverlay/xoverlay.c: (gst_x_overlay_base_init),
+       (gst_x_overlay_got_xwindow_id), (gst_x_overlay_get_desired_size),
+       (gst_x_overlay_got_desired_size):
+       * gst-libs/gst/xoverlay/xoverlay.h:
+         Add optional "desired size" signal and querying.
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_blockgroup):
+         Fix EBML-laced block parsing. Diffs are relative to previous
+         lace, not the first lace. Thanks to Mosu from the Matroska
+         team for detecting this.
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_init),
+       (gst_wavparse_parse_fmt), (gst_wavparse_getcaps),
+       (gst_wavparse_handle_sink_event), (gst_wavparse_loop),
+       (gst_wavparse_change_state):
+       * gst/wavparse/gstwavparse.h:
+         Quickfix for capsnego.
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/wavenc/gstwavenc.c: (set_property), (gst_wavenc_init):
+         Fix indenting, fix pad creation.
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/xvid/gstxviddec.c: (gst_xviddec_init),
+       (gst_xviddec_src_getcaps), (gst_xviddec_src_link),
+       (gst_xviddec_sink_link):
+         Implement src_getcaps() so proper size caps is negotiated.
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/flac/gstflacdec.c: (gst_flacdec_loop):
+         Finish flac decoder on EOS. See #116178.
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_src_getcaps),
+       (gst_matroska_demux_add_stream):
+       * gst/matroska/matroska-ids.h:
+         Add getcaps() function to fix capsnego...
+
+2004-01-04  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
+       (gst_mpeg_demux_parse_packet), (gst_mpeg_demux_parse_pes):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_parse_packhead):
+         Fix more integer overflows. Again, see #126967.
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mpeg2dec/gstmpeg2dec.c:
+         Add support for mpeg2dec-0.4.0 (released two weeks ago). See
+         #130416.
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+       * ext/xvid/gstxvid.c: (gst_xvid_init), (gst_xvid_error),
+       (gst_xvid_structure_to_csp), (gst_xvid_csp_to_caps):
+       * ext/xvid/gstxvid.h:
+       * ext/xvid/gstxviddec.c: (gst_xviddec_class_init),
+       (gst_xviddec_init), (gst_xviddec_setup), (gst_xviddec_chain),
+       (gst_xviddec_src_link), (gst_xviddec_sink_link),
+       (gst_xviddec_change_state):
+       * ext/xvid/gstxviddec.h:
+       * ext/xvid/gstxvidenc.c: (gst_xvidenc_profile_get_type),
+       (gst_xvidenc_base_init), (gst_xvidenc_class_init),
+       (gst_xvidenc_init), (gst_xvidenc_setup), (gst_xvidenc_chain),
+       (gst_xvidenc_link), (gst_xvidenc_set_property),
+       (gst_xvidenc_get_property), (gst_xvidenc_change_state):
+       * ext/xvid/gstxvidenc.h:
+         Update xvid plugin to latest xvid (1.0.0-beta3) API.
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/rtp/rtp-packet.c:
+         Add sys/types.h include, since OS X doesn't define in_addr_t
+         in netinet/in.h, like it does on Linux (see #129600).
+
+2004-01-03  Thomas Canty <tommydal@optushome.com.au>
+
+       reviewed by: Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsamixer.c: (gst_alsa_mixer_dispose):
+         Correct logic of dispose function (see #129306).
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_pes):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_class_init),
+       (gst_mpeg_parse_init):
+       * gst/mpegstream/gstmpegparse.h:
+         Remove clock (which was never provided, i.e. dead code), and
+         also fix integer overflows at high PTS values (see #126967).
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/flac/gstflacdec.c:
+       * ext/libpng/gstpngenc.h:
+       * ext/mikmod/gstmikmod.h:
+         OS X fixes (see #126628).
+
+2004-01-02  David Schleef  <ds@schleef.org>
+
+       * ext/alsa/gstalsasrc.c: (gst_alsa_src_pad_factory),
+       (gst_alsa_src_base_init): Remove bogus "src" request pad.
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_base_init),
+       (gst_mpeg_parse_class_init): Move pad template registration
+       to class_init, since the derived class (mpegdemux) doesn't
+       want them.
+
+2004-01-03  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/Makefile.am:
+       * sys/xvideo/Makefile.am:
+       * sys/xvimage/Makefile.am:
+         Move interface libs from LDFLAGS to LIBADD, fix relocation errors
+         after installation (see #127664).
+
+2004-01-02  David Schleef  <ds@schleef.org>
+
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_init),
+       (gst_ffmpegenc_connect):  Negotiation fixes.
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format):
+       Remove inappropriate gst_caps_free().
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sinkconnect):
+       Reenable Ronald's internal resize code, since the core handles
+       it correctly now.
+
+2004-01-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_init):
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_init):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_base_init), (gst_v4lsrc_init):
+         Fix pad template stuff.
+
+2004-01-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/matroska/ebml-read.c: (gst_ebml_read_sint):
+       * gst/matroska/ebml-write.c: (gst_ebml_write_sint):
+         fix signed integer reading/writing.
+
+2004-01-02  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/README:
+         Remove outdated document
+
+2004-01-03  Jan Schmidt  <thaytan@mad.scientist.com>
+
+       * gst/cutter/gstcutter.c: (gst_cutter_init):
+         src pad was being created twice - oops.
+
+2004-01-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sinkconnect):
+         Comment out internal resize. It doesn't handle the resulting
+         XEvent internally, does another try_set_caps() which leads to
+         a really nice loop.
+         Real fix will come when Julien and Dave are awake. ;).
+
+2004-01-02  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+         fix const/nonconst compile issue.
+
+2004-01-02  David Schleef  <ds@schleef.org>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_fixate),
+       (gst_xvimagesink_sinkconnect), (gst_xvimagesink_init):
+       Add fixate function and a check for bad formats.
+
+2004-01-01  David Schleef  <ds@schleef.org>
+
+       Negotiation fixes:
+       * gst-libs/gst/audio/gstaudiofilter.c: (gst_audiofilter_link),
+       (gst_audiofilter_init):
+       * gst/debug/efence.c: (gst_efence_init):
+       * gst/deinterlace/gstdeinterlace.c: (gst_deinterlace_link),
+       (gst_deinterlace_init):
+       * gst/volume/gstvolume.c: (volume_connect):
+
+2004-01-01  David Schleef  <ds@schleef.org>
+
+       Convert elements to use gst_pad_use_explicit_caps() where
+       appropriate:
+       * ext/a52dec/gsta52dec.c: (gst_a52dec_init), (gst_a52dec_reneg):
+       * ext/audiofile/gstafparse.c: (gst_afparse_init),
+       (gst_afparse_open_file):
+       * ext/audiofile/gstafsrc.c: (gst_afsrc_init),
+       (gst_afsrc_open_file):
+       * ext/esd/esdmon.c: (gst_esdmon_init), (gst_esdmon_get):
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_init),
+       (gst_ffmpegdec_chain):
+       * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_loop):
+       * ext/flac/gstflacdec.c: (gst_flacdec_init), (gst_flacdec_write):
+       * ext/gdk_pixbuf/gstgdkpixbuf.c: (gst_gdk_pixbuf_init),
+       (gst_gdk_pixbuf_chain):
+       * ext/jpeg/gstjpegdec.c: (gst_jpegdec_init), (gst_jpegdec_link),
+       (gst_jpegdec_chain):
+       * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_chain):
+       * ext/mikmod/gstmikmod.c: (gst_mikmod_init),
+       (gst_mikmod_negotiate):
+       * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_init),
+       (gst_mpeg2dec_negotiate_format):
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/ogg/gstoggdemux.c: (gst_ogg_pad_push):
+       * ext/speex/gstspeexdec.c: (gst_speexdec_init),
+       (gst_speexdec_sinkconnect):
+       * ext/swfdec/gstswfdec.c: (gst_swfdec_loop), (gst_swfdec_init):
+       * ext/vorbis/vorbisfile.c: (gst_vorbisfile_init),
+       (gst_vorbisfile_new_link):
+       * gst/ac3parse/gstac3parse.c: (gst_ac3parse_init),
+       (gst_ac3parse_chain):
+       * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_add_audio_stream),
+       (gst_asf_demux_setup_pad):
+       * gst/auparse/gstauparse.c: (gst_auparse_init),
+       (gst_auparse_chain):
+       * gst/id3/gstid3types.c: (gst_id3types_loop):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream):
+       * gst/mpeg1videoparse/gstmp1videoparse.c: (gst_mp1videoparse_init),
+       (mp1videoparse_parse_seq):
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_init),
+       (bpf_from_header):
+       * gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_parse_syshead),
+       (gst_mpeg_demux_parse_pes), (gst_mpeg_demux_lpcm_set_caps):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_init),
+       (gst_mpeg_parse_send_data):
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
+       (gst_qtdemux_add_stream):
+       * gst/realmedia/rmdemux.c: (gst_rmdemux_add_stream):
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_init),
+       (gst_wavparse_parse_fmt):
+
+2004-01-01  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Fix configure check for mpeg2enc. We need 1.6.1.93 instead of
+         1.6.1.92, since the pkg-config file of 1.6.1.92 is borked and
+         it therefore uses the wrong include paths. Too bad... Note
+         that 1.6.1.93 is not release yet. ;).
+         Also add a check for mplex, which is now using the lib'ified
+         mplex from mjpegtools, too.
+       * ext/ffmpeg/gstffmpegcodecmap.c:
+         Add codec_tag for 3ivx/xvid. For xvid, this should fix playback
+         issues. I don't think ffmpeg handles 3ivx correctly, so this
+         probably won't work. But it won't hurt either.
+       * ext/ffmpeg/gstffmpegdec.c: (gst_ffmpegdec_connect),
+       (gst_ffmpegdec_chain):
+       * ext/ffmpeg/gstffmpegenc.c: (gst_ffmpegenc_connect),
+       (gst_ffmpegenc_chain_audio):
+         Fix memleak in audio encoding. Close codec if open fails, this
+         calls the cleanup routines so we can re-use the context.
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+         Fix pad template names/types, fix memory issue with getcaps().
+       * ext/mpeg2enc/gstmpeg2encoder.cc:
+       * ext/mpeg2enc/gstmpeg2encoder.hh:
+         Fix compile issue with new caps system (const thingy).
+       * ext/mpeg2enc/gstmpeg2encpicturereader.cc:
+       * ext/mpeg2enc/gstmpeg2encpicturereader.hh:
+         We read a first frame right on initing, so that we have a caps
+         when we init the output. This caps is cached in padprivate and
+         read as first frame.
+       * ext/mplex/Makefile.am:
+       * ext/mplex/gstmplex.cc:
+       * ext/mplex/gstmplex.h:
+       * ext/mplex/gstmplex.hh:
+       * ext/mplex/gstmplexibitstream.cc:
+       * ext/mplex/gstmplexibitstream.hh:
+       * ext/mplex/gstmplexjob.cc:
+       * ext/mplex/gstmplexjob.hh:
+       * ext/mplex/gstmplexoutputstream.cc:
+       * ext/mplex/gstmplexoutputstream.hh:
+         We wrap mjpegtools mplex. So I rewrote the plugin. The old plugin
+         had issues, didn't do capsnego, supported only a subset of the
+         mplex features and required a mplex fork in our local CVS. Plus
+         that it worked agaist a very old mplex version. Rewriting was
+         faster than updating it.
+       * gst-libs/ext/Makefile.am:
+       * gst-libs/ext/mplex/INSTRUCT:
+       * gst-libs/ext/mplex/Makefile.am:
+       * gst-libs/ext/mplex/README:
+       * gst-libs/ext/mplex/TODO:
+       * gst-libs/ext/mplex/ac3strm_in.cc:
+       * gst-libs/ext/mplex/audiostrm.hh:
+       * gst-libs/ext/mplex/audiostrm_out.cc:
+       * gst-libs/ext/mplex/aunit.hh:
+       * gst-libs/ext/mplex/bits.cc:
+       * gst-libs/ext/mplex/bits.hh:
+       * gst-libs/ext/mplex/buffer.cc:
+       * gst-libs/ext/mplex/buffer.hh:
+       * gst-libs/ext/mplex/fastintfns.h:
+       * gst-libs/ext/mplex/format_codes.h:
+       * gst-libs/ext/mplex/inputstrm.cc:
+       * gst-libs/ext/mplex/inputstrm.hh:
+       * gst-libs/ext/mplex/lpcmstrm_in.cc:
+       * gst-libs/ext/mplex/mjpeg_logging.cc:
+       * gst-libs/ext/mplex/mjpeg_logging.h:
+       * gst-libs/ext/mplex/mjpeg_types.h:
+       * gst-libs/ext/mplex/mpastrm_in.cc:
+       * gst-libs/ext/mplex/mpegconsts.cc:
+       * gst-libs/ext/mplex/mpegconsts.h:
+       * gst-libs/ext/mplex/mplexconsts.hh:
+       * gst-libs/ext/mplex/multplex.cc:
+       * gst-libs/ext/mplex/outputstream.hh:
+       * gst-libs/ext/mplex/padstrm.cc:
+       * gst-libs/ext/mplex/padstrm.hh:
+       * gst-libs/ext/mplex/stillsstream.cc:
+       * gst-libs/ext/mplex/stillsstream.hh:
+       * gst-libs/ext/mplex/systems.cc:
+       * gst-libs/ext/mplex/systems.hh:
+       * gst-libs/ext/mplex/vector.cc:
+       * gst-libs/ext/mplex/vector.hh:
+       * gst-libs/ext/mplex/videostrm.hh:
+       * gst-libs/ext/mplex/videostrm_in.cc:
+       * gst-libs/ext/mplex/videostrm_out.cc:
+       * gst-libs/ext/mplex/yuv4mpeg.cc:
+       * gst-libs/ext/mplex/yuv4mpeg.h:
+       * gst-libs/ext/mplex/yuv4mpeg_intern.h:
+       * gst-libs/ext/mplex/yuv4mpeg_ratio.cc:
+         We don't fork mjpegtools' mplex in our CVS anymore.
+       * gst/avi/gstavidemux.c: (gst_avi_demux_src_getcaps),
+       (gst_avi_demux_add_stream):
+       * gst/avi/gstavidemux.h:
+         Add getcaps() function for proper caps nego. This makes some
+         parts of AVI playback/reading work.
+       * sys/ximage/ximagesink.c: (gst_ximagesink_sinkconnect):
+         Resize window on new capsnego. This is probably wrong, but
+         I'm still committing it because with current capsnego, the
+         first successfull capsnego is auto-fixated, therefore rounded
+         down to the lowest values in the caps. this results in a 16x16
+         XWindow that is not reized when real capsnego finishes.
+         Dave, I see more cases of this, do you know a proper solution?
+       * tools/gst-launch-ext.in:
+         Fix MPEG-4 AAC (Apple iPod/iTunes) file commandline.
+
+2003-12-31  David Schleef  <ds@schleef.org>
+
+       * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_get):
+       * gst/udp/gstudpsrc.c: (gst_udpsrc_get):
+         Change gst_pad_proxy_link() to gst_pad_try_set_caps()
+
+2003-12-30  David Schleef  <ds@schleef.org>
+
+       * ext/ffmpeg/gstffmpegcolorspace.c:
+       (gst_ffmpegcsp_caps_remove_format_info), (gst_ffmpegcsp_getcaps),
+       (gst_ffmpegcsp_pad_link), (gst_ffmpegcsp_init),
+       (gst_ffmpegcsp_chain): Negotiation fixes
+       * ext/mad/gstmad.c: (gst_mad_chain): Negotiation fixes
+       * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain),
+       (gst_audio_convert_link), (gst_audio_convert_channels):
+       * gst/audioscale/gstaudioscale.c: (gst_audioscale_getcaps),
+       (gst_audioscale_link), (gst_audioscale_get_buffer),
+       (gst_audioscale_chain): Negotiation fixes
+       * gst/audioscale/gstaudioscale.h:
+       * gst/videofilter/gstvideofilter.c:
+       (gst_videofilter_format_get_structure), (gst_videofilter_getcaps),
+       (gst_videofilter_link), (gst_videofilter_init),
+       (gst_videofilter_set_output_size), (gst_videofilter_setup),
+       (gst_videofilter_find_format_by_structure):
+       * gst/videofilter/gstvideofilter.h: Negotiation fixes
+       * gst/videoscale/gstvideoscale.c: (gst_videoscale_getcaps),
+       (gst_videoscale_link):
+       * gst/videoscale/videoscale.c: (videoscale_get_structure),
+       (videoscale_find_by_structure), (gst_videoscale_setup):
+       * gst/videoscale/videoscale.h: Negotiation fixes
+       * sys/ximage/ximagesink.c: (gst_ximagesink_handle_xevents),
+       (gst_ximagesink_fixate), (gst_ximagesink_init): Add a fixate
+       function, restrict resizing to a multiple of 4 (hack until
+       everyone supports odd sizes correctly).
+
+2003-12-29  Colin Walters  <walters@verbum.org>
+
+       * ext/esd/esdsink.c (gst_esdsink_link): Fix typo; get depth instead of
+       signed.
+
+2003-12-30  Jan Schmidt <thaytan@mad.scientist.com>
+
+       * ext/sndfile/gstsf.c: (gst_sf_loop):
+         Fix warning about discarding const qualifier
+
+2003-12-27  Jeremy Simon   <jesimon@libertysurf.fr>
+
+       * gst/cutter/gstcutter.c:
+       * gst/videoscale/gstvideoscale.c:
+       * gst/volenv/gstvolenv.c:
+       * gst-libs/gst/audio/audio.c:
+       * gst-libs/gst/video/video.c:
+         Fix warnings
+
+2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_open_audio):
+         Don't send ALSA debugging to stderr.
+       * ext/alsa/gstalsa.h:
+         Use GST_WARNING instead of g_warning when ALSA functions fail.
+
+2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support):
+         Free XVAdapterInfo correctly.
+
+2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/mad/gstid3tag.c: (gst_id3_tag_add_src_pad),
+       (gst_id3_tag_do_caps_nego), (gst_id3_tag_src_link):
+         Make id3tag use correct caps nego.
+
+2003-12-27  Amaury Jacquot <sxpert@esitcom.org>
+
+       * ext/ivorbis/vorbis.c:
+       * ext/ivorbis/vorbisenc.h:
+       * ext/ivorbis/vorbisfile.c:
+         Modify so that it uses the new caps things
+
+2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * testsuite/spider/spider1.c: (main):
+       * testsuite/spider/spider2.c: (main):
+       * testsuite/spider/spider3.c: (main):
+         Make tests compile again. They probably don't work.
+
+2003-12-24  Colin Walters  <walters@verbum.org>
+
+       * sys/oss/gstosssink.c (gst_osssink_sink_fixate): Return NULL if
+       we can't fixate the caps anymore.
+
+2003-12-23  David Schleef  <ds@schleef.org>
+
+       * gst/volume/gstvolume.c: (volume_init): Proxy getcaps.
+       * sys/oss/gstosssink.c: (gst_osssink_init),
+       (gst_osssink_sink_fixate): Add fixate function.
+
+2003-12-24  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/ffmpeg/gstffmpegcodecmap.c:
+       * ext/ffmpeg/gstffmpegcolorspace.c: (gst_ffmpegcsp_getcaps),
+       (gst_ffmpegcsp_srcconnect_func), (gst_ffmpegcsp_sinkconnect),
+       (gst_ffmpegcsp_srcconnect), (gst_ffmpegcsp_get_type),
+       (gst_ffmpegcsp_base_init), (gst_ffmpegcsp_class_init),
+       (gst_ffmpegcsp_init), (gst_ffmpegcsp_chain),
+       (gst_ffmpegcsp_change_state), (gst_ffmpegcsp_set_property),
+       (gst_ffmpegcsp_get_property), (gst_ffmpegcsp_register):
+         fix typo in RGB masks, and move back to "old" colorspace
+         capsnego code until whoever wrote this new crap has actually
+         tested it so that it works.
+         And yes, this works, keep it that way please.
+
+2003-12-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/divx/gstdivxdec.c: (gst_divxdec_base_init),
+       (gst_divxdec_init), (gst_divxdec_negotiate):
+       * ext/divx/gstdivxdec.h:
+       * ext/divx/gstdivxenc.c: (gst_divxenc_base_init),
+       (gst_divxenc_init):
+       * ext/faac/gstfaac.c: (gst_faac_base_init), (gst_faac_init),
+       (gst_faac_sinkconnect), (gst_faac_srcconnect):
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+       * ext/mpeg2enc/gstmpeg2encoder.cc:
+       * ext/mpeg2enc/gstmpeg2encpicturereader.cc:
+       * sys/dxr3/dxr3audiosink.c: (dxr3audiosink_base_init),
+       (dxr3audiosink_init), (dxr3audiosink_pcm_sinklink):
+       * sys/dxr3/dxr3spusink.c: (dxr3spusink_base_init),
+       (dxr3spusink_init):
+       * sys/dxr3/dxr3videosink.c: (dxr3videosink_base_init),
+       (dxr3videosink_init):
+         Fix caps breakage after Dave's caps branch merge.
+
+2003-12-23  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
+         Fix for 24bpp display.
+
+2003-12-23  Colin Walters  <walters@verbum.org>
+
+       * ext/gnomevfs/gstgnomevfssink.c: Add ARG_HANDLE property that takes
+       a GnomeVFSHandle directly.
+
+2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/volume/Makefile.am:
+       * gst/volume/gstvolume.c: (volume_connect), (volume_parse_caps),
+       (volume_base_init), (volume_init):
+         Reenable volume element and fix to work with new caps stuff.
+         Rhythmbox needs this.
+
+2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * gst/qtdemux/qtdemux.c: (plugin_init):
+         qtdemux requires bytestream
+
+2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_get_caps), (gst_alsa_link):
+         Fix remaining caps handling errors due to CAPS merge.
+
+2003-12-22  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/faad/gstfaad.c: (gst_faad_base_init), (gst_faad_init),
+       (gst_faad_sinkconnect), (gst_faad_srcgetcaps),
+       (gst_faad_srcconnect):
+         Port to new caps system.
+
+2003-12-21  Julien MOUTTE  <julien@moutte.net>
+
+       * examples/gstplay/player.c: (got_time_tick), (got_stream_length),
+       (got_video_size), (main): using g_print instead of g_message.
+       * gst-libs/gst/play/gstplay.c: (gst_play_pipeline_setup): Fixing EOS
+       signal which was not emitted because of "switch" element added to the
+       bin but not connected. (Removing from the bin temporarily)
+
+2003-12-21  Julien MOUTTE  <julien@moutte.net>
+
+       * configure.ac: X_DISPLAY_MISSING is set to 1 if AC_PATH_XTRA fails to
+       find X development files. I don't understand the previous tests and
+       they fail on my debian/ppc unstable. This one works.
+       * examples/gstplay/player.c: (main): Set the pipeline to READY before
+       exiting.
+       * gst-libs/gst/play/gstplay.c: (gst_play_get_length_callback),
+       (gst_play_set_video_sink), (gst_play_set_audio_sink),
+       (gst_play_set_visualization): Add some safety checks in set_ methods
+       and state_change. This was throwing some ugly CRITICAL messages when
+       pipeline was getting disposed and casts were failing.
+
+2003-12-21  Ronald Bultje  <rbultje@ronald.bitfreak.net>
+
+       * configure.ac:
+         Improve mpeg2enc detection. This is for distributions that do
+         ship mjpegtools, but without mpeg2enc. Also does object check
+         for might there ever be ABI incompatibility.
+       * ext/mpeg2enc/gstmpeg2enc.cc:
+         Add Andrew as second maintainer (he's helping me), and also add
+         an error if no caps was set. This happens if I pull before capsnego
+         and that's something I should solve sometime else.
+       * gst/matroska/matroska-demux.c:
+       (gst_matroska_demux_parse_blockgroup):
+         Fix time parsing.
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_audio_pad_link),
+       (gst_matroska_mux_track_header):
+         Add caps to templates.
+       * gst/mpegaudioparse/gstmpegaudioparse.c: (mp3_sink_factory):
+         Add mpegversion=1 to prevent confusion with MPEG/AAC.
+       * gst/mpegstream/gstmpegdemux.c:
+         Remove layer since it causes warnings about unfixed caps.
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+         Fix obvious typo (we error out if caps were set, we should of
+         course error out if *no* caps were set).
+       * sys/oss/gstosselement.c: (gst_osselement_convert):
+         Fix format conversion, we confused bits/bytes.
+       * sys/oss/gstosselement.h:
+         Improve documentation for 'bps'.
+       * sys/v4l/TODO:
+         Remove stuff about plugins that need removing - this was done
+         ages ago.
+       * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_init),
+       (gst_v4lmjpegsrc_src_convert), (gst_v4lmjpegsrc_src_query):
+       * sys/v4l/gstv4lsrc.c: (gst_v4lsrc_init), (gst_v4lsrc_src_convert),
+       (gst_v4lsrc_src_query):
+       * sys/v4l2/gstv4l2src.c: (gst_v4l2src_init),
+       (gst_v4l2src_src_convert), (gst_v4l2src_src_query):
+         Add get_query_types(), get_formats() and query() functions.
+
+2003-12-21  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       * ChangeLog: moved to gstreamer/docs/random/old/ChangeLog.gst-plugins
+        * moved CVS to freedesktop.org
+
diff --git a/docs/version.entities.in b/docs/version.entities.in
new file mode 100644 (file)
index 0000000..79a6898
--- /dev/null
@@ -0,0 +1,2 @@
+<!ENTITY GST_MAJORMINOR "@GST_MAJORMINOR@">
+<!ENTITY GST_VERSION "@VERSION@">
diff --git a/ext/Makefile.am b/ext/Makefile.am
new file mode 100644 (file)
index 0000000..e34480d
--- /dev/null
@@ -0,0 +1,93 @@
+if USE_A52DEC
+A52DEC_DIR = a52dec
+else
+A52DEC_DIR =
+endif
+
+if USE_AMRNB
+ AMRNB_DIR = amrnb
+else
+ AMRNB_DIR =
+endif
+
+if USE_AMRWB
+ AMRWB_DIR = amrwbdec
+else
+ AMRWB_DIR =
+endif
+
+if USE_CDIO
+CDIO_DIR = cdio
+else
+CDIO_DIR = 
+endif
+
+if USE_DVDREAD
+ DVDREAD_DIR = dvdread
+else
+ DVDREAD_DIR =
+endif
+
+if USE_LAME
+LAME_DIR = lame
+else
+LAME_DIR =
+endif
+
+if USE_MAD
+MAD_DIR = mad
+else
+MAD_DIR =
+endif
+
+if USE_MPEG2DEC
+MPEG2DEC_DIR = mpeg2dec
+else
+MPEG2DEC_DIR =
+endif
+
+if USE_SIDPLAY
+SIDPLAY_DIR = sidplay
+else
+SIDPLAY_DIR =
+endif
+
+if USE_TWOLAME
+TWOLAME_DIR = twolame
+else
+TWOLAME_DIR =
+endif
+
+if USE_X264
+X264_DIR=x264
+else
+X264_DIR=
+endif
+
+SUBDIRS = \
+       $(A52DEC_DIR) \
+       $(AMRNB_DIR) \
+       $(AMRWB_DIR) \
+       $(CDIO_DIR) \
+       $(DVDREAD_DIR) \
+       $(LAME_DIR) \
+       $(MAD_DIR) \
+       $(MPEG2DEC_DIR) \
+       $(SIDPLAY_DIR) \
+       $(TWOLAME_DIR) \
+       $(X264_DIR)
+
+DIST_SUBDIRS = \
+       a52dec \
+       amrnb \
+       amrwbdec \
+       cdio \
+       dvdread \
+       lame \
+       mad \
+       mpeg2dec \
+       sidplay \
+       twolame \
+       x264
+
+include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/ext/Makefile.in b/ext/Makefile.in
new file mode 100644 (file)
index 0000000..d6b35f9
--- /dev/null
@@ -0,0 +1,785 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+
+# include this at the end of $MODULE/ext/Makefile.am to force make to
+# build subdirectories in parallel when make -jN is used. We will end up
+# descending into all subdirectories a second time, but only after the first
+# (parallel) run has finished, so it should go right through the second time.
+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@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/common/parallel-subdirs.mak
+subdir = ext
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+@USE_A52DEC_FALSE@A52DEC_DIR = 
+@USE_A52DEC_TRUE@A52DEC_DIR = a52dec
+@USE_AMRNB_FALSE@AMRNB_DIR = 
+@USE_AMRNB_TRUE@AMRNB_DIR = amrnb
+@USE_AMRWB_FALSE@AMRWB_DIR = 
+@USE_AMRWB_TRUE@AMRWB_DIR = amrwbdec
+@USE_CDIO_FALSE@CDIO_DIR = 
+@USE_CDIO_TRUE@CDIO_DIR = cdio
+@USE_DVDREAD_FALSE@DVDREAD_DIR = 
+@USE_DVDREAD_TRUE@DVDREAD_DIR = dvdread
+@USE_LAME_FALSE@LAME_DIR = 
+@USE_LAME_TRUE@LAME_DIR = lame
+@USE_MAD_FALSE@MAD_DIR = 
+@USE_MAD_TRUE@MAD_DIR = mad
+@USE_MPEG2DEC_FALSE@MPEG2DEC_DIR = 
+@USE_MPEG2DEC_TRUE@MPEG2DEC_DIR = mpeg2dec
+@USE_SIDPLAY_FALSE@SIDPLAY_DIR = 
+@USE_SIDPLAY_TRUE@SIDPLAY_DIR = sidplay
+@USE_TWOLAME_FALSE@TWOLAME_DIR = 
+@USE_TWOLAME_TRUE@TWOLAME_DIR = twolame
+@USE_X264_FALSE@X264_DIR = 
+@USE_X264_TRUE@X264_DIR = x264
+SUBDIRS = \
+       $(A52DEC_DIR) \
+       $(AMRNB_DIR) \
+       $(AMRWB_DIR) \
+       $(CDIO_DIR) \
+       $(DVDREAD_DIR) \
+       $(LAME_DIR) \
+       $(MAD_DIR) \
+       $(MPEG2DEC_DIR) \
+       $(SIDPLAY_DIR) \
+       $(TWOLAME_DIR) \
+       $(X264_DIR)
+
+DIST_SUBDIRS = \
+       a52dec \
+       amrnb \
+       amrwbdec \
+       cdio \
+       dvdread \
+       lame \
+       mad \
+       mpeg2dec \
+       sidplay \
+       twolame \
+       x264
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/parallel-subdirs.mak $(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 ext/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/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_srcdir)/common/parallel-subdirs.mak:
+
+$(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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+.PHONY: independent-subdirs $(SUBDIRS)
+
+independent-subdirs: $(SUBDIRS)
+
+$(SUBDIRS):
+       $(MAKE) -C $@
+
+all-recursive: independent-subdirs
+
+# 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 --git a/ext/a52dec/Makefile.am b/ext/a52dec/Makefile.am
new file mode 100644 (file)
index 0000000..d572236
--- /dev/null
@@ -0,0 +1,17 @@
+plugin_LTLIBRARIES = libgsta52dec.la
+
+libgsta52dec_la_SOURCES = gsta52dec.c
+libgsta52dec_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(ORC_CFLAGS) \
+       $(A52DEC_CFLAGS)
+libgsta52dec_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-$(GST_MAJORMINOR) \
+       $(ORC_LIBS) \
+       $(A52DEC_LIBS)
+libgsta52dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsta52dec_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gsta52dec.h
diff --git a/ext/a52dec/Makefile.in b/ext/a52dec/Makefile.in
new file mode 100644 (file)
index 0000000..6ce4feb
--- /dev/null
@@ -0,0 +1,731 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/a52dec
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgsta52dec_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgsta52dec_la_OBJECTS = libgsta52dec_la-gsta52dec.lo
+libgsta52dec_la_OBJECTS = $(am_libgsta52dec_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgsta52dec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgsta52dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgsta52dec_la_CFLAGS) $(CFLAGS) \
+       $(libgsta52dec_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgsta52dec_la_SOURCES)
+DIST_SOURCES = $(libgsta52dec_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgsta52dec.la
+libgsta52dec_la_SOURCES = gsta52dec.c
+libgsta52dec_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(ORC_CFLAGS) \
+       $(A52DEC_CFLAGS)
+
+libgsta52dec_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-$(GST_MAJORMINOR) \
+       $(ORC_LIBS) \
+       $(A52DEC_LIBS)
+
+libgsta52dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsta52dec_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gsta52dec.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 ext/a52dec/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/a52dec/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
+libgsta52dec.la: $(libgsta52dec_la_OBJECTS) $(libgsta52dec_la_DEPENDENCIES) $(EXTRA_libgsta52dec_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgsta52dec_la_LINK) -rpath $(plugindir) $(libgsta52dec_la_OBJECTS) $(libgsta52dec_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsta52dec_la-gsta52dec.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgsta52dec_la-gsta52dec.lo: gsta52dec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsta52dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsta52dec_la_CFLAGS) $(CFLAGS) -MT libgsta52dec_la-gsta52dec.lo -MD -MP -MF $(DEPDIR)/libgsta52dec_la-gsta52dec.Tpo -c -o libgsta52dec_la-gsta52dec.lo `test -f 'gsta52dec.c' || echo '$(srcdir)/'`gsta52dec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgsta52dec_la-gsta52dec.Tpo $(DEPDIR)/libgsta52dec_la-gsta52dec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gsta52dec.c' object='libgsta52dec_la-gsta52dec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsta52dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsta52dec_la_CFLAGS) $(CFLAGS) -c -o libgsta52dec_la-gsta52dec.lo `test -f 'gsta52dec.c' || echo '$(srcdir)/'`gsta52dec.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/a52dec/gsta52dec.c b/ext/a52dec/gsta52dec.c
new file mode 100644 (file)
index 0000000..3840c44
--- /dev/null
@@ -0,0 +1,1011 @@
+/* GStreamer
+ * Copyright (C) <2001> David I. Lehn <dlehn@users.sourceforge.net>
+ *
+ * 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-a52dec
+ *
+ * Dolby Digital (AC-3) audio decoder.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch dvdreadsrc title=1 ! mpegpsdemux ! a52dec ! audioresample ! audioconvert ! alsasink
+ * ]| Play audio track from a dvd.
+ * |[
+ * gst-launch filesrc location=abc.ac3 ! a52dec ! audioresample ! audioconvert ! alsasink
+ * ]| Decode a stand alone file and play it.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <stdlib.h>
+#include "_stdint.h"
+
+#include <gst/gst.h>
+#include <gst/audio/multichannel.h>
+
+#include <a52dec/a52.h>
+#include <a52dec/mm_accel.h>
+#include "gsta52dec.h"
+
+#if HAVE_ORC
+#include <orc/orc.h>
+#endif
+
+#ifdef LIBA52_DOUBLE
+#define SAMPLE_WIDTH 64
+#else
+#define SAMPLE_WIDTH 32
+#endif
+
+GST_DEBUG_CATEGORY_STATIC (a52dec_debug);
+#define GST_CAT_DEFAULT (a52dec_debug)
+
+/* A52Dec args */
+enum
+{
+  ARG_0,
+  ARG_DRC,
+  ARG_MODE,
+  ARG_LFE,
+};
+
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-ac3; audio/ac3; audio/x-private1-ac3")
+    );
+
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-float, "
+        "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+        "width = (int) " G_STRINGIFY (SAMPLE_WIDTH) ", "
+        "rate = (int) [ 4000, 96000 ], " "channels = (int) [ 1, 6 ]")
+    );
+
+GST_BOILERPLATE (GstA52Dec, gst_a52dec, GstElement, GST_TYPE_ELEMENT);
+
+static GstFlowReturn gst_a52dec_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_a52dec_chain_raw (GstPad * pad, GstBuffer * buf);
+static gboolean gst_a52dec_sink_setcaps (GstPad * pad, GstCaps * caps);
+static gboolean gst_a52dec_sink_event (GstPad * pad, GstEvent * event);
+static GstStateChangeReturn gst_a52dec_change_state (GstElement * element,
+    GstStateChange transition);
+
+static void gst_a52dec_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_a52dec_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+#define GST_TYPE_A52DEC_MODE (gst_a52dec_mode_get_type())
+static GType
+gst_a52dec_mode_get_type (void)
+{
+  static GType a52dec_mode_type = 0;
+  static const GEnumValue a52dec_modes[] = {
+    {A52_MONO, "Mono", "mono"},
+    {A52_STEREO, "Stereo", "stereo"},
+    {A52_3F, "3 Front", "3f"},
+    {A52_2F1R, "2 Front, 1 Rear", "2f1r"},
+    {A52_3F1R, "3 Front, 1 Rear", "3f1r"},
+    {A52_2F2R, "2 Front, 2 Rear", "2f2r"},
+    {A52_3F2R, "3 Front, 2 Rear", "3f2r"},
+    {A52_DOLBY, "Dolby", "dolby"},
+    {0, NULL, NULL},
+  };
+
+  if (!a52dec_mode_type) {
+    a52dec_mode_type = g_enum_register_static ("GstA52DecMode", a52dec_modes);
+  }
+  return a52dec_mode_type;
+}
+
+static void
+gst_a52dec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_set_details_simple (element_class,
+      "ATSC A/52 audio decoder", "Codec/Decoder/Audio",
+      "Decodes ATSC A/52 encoded audio streams",
+      "David I. Lehn <dlehn@users.sourceforge.net>");
+
+  GST_DEBUG_CATEGORY_INIT (a52dec_debug, "a52dec", 0,
+      "AC3/A52 software decoder");
+}
+
+static void
+gst_a52dec_class_init (GstA52DecClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  guint cpuflags;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->set_property = gst_a52dec_set_property;
+  gobject_class->get_property = gst_a52dec_get_property;
+
+  gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_a52dec_change_state);
+
+  /**
+   * GstA52Dec::drc
+   *
+   * Set to true to apply the recommended Dolby Digital dynamic range compression
+   * to the audio stream. Dynamic range compression makes loud sounds
+   * softer and soft sounds louder, so you can more easily listen
+   * to the stream without disturbing other people.
+   */
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DRC,
+      g_param_spec_boolean ("drc", "Dynamic Range Compression",
+          "Use Dynamic Range Compression", FALSE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstA52Dec::mode
+   *
+   * Force a particular output channel configuration from the decoder. By default,
+   * the channel downmix (if any) is chosen automatically based on the downstream
+   * capabilities of the pipeline.
+   */
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODE,
+      g_param_spec_enum ("mode", "Decoder Mode", "Decoding Mode (default 3f2r)",
+          GST_TYPE_A52DEC_MODE, A52_3F2R,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstA52Dec::lfe
+   *
+   * Whether to output the LFE (Low Frequency Emitter) channel of the audio stream.
+   */
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LFE,
+      g_param_spec_boolean ("lfe", "LFE", "LFE", TRUE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /* If no CPU instruction based acceleration is available, end up using the
+   * generic software djbfft based one when available in the used liba52 */
+#ifdef MM_ACCEL_DJBFFT
+  klass->a52_cpuflags = MM_ACCEL_DJBFFT;
+#else
+  klass->a52_cpuflags = 0;
+#endif
+
+#if HAVE_ORC
+  cpuflags = orc_target_get_default_flags (orc_target_get_by_name ("mmx"));
+
+  if (cpuflags & ORC_TARGET_MMX_MMX)
+    klass->a52_cpuflags |= MM_ACCEL_X86_MMX;
+  if (cpuflags & ORC_TARGET_MMX_3DNOW)
+    klass->a52_cpuflags |= MM_ACCEL_X86_3DNOW;
+  if (cpuflags & ORC_TARGET_MMX_MMXEXT)
+    klass->a52_cpuflags |= MM_ACCEL_X86_MMXEXT;
+#else
+  cpuflags = 0;
+#endif
+
+  GST_LOG ("CPU flags: a52=%08x, liboil=%08x", klass->a52_cpuflags, cpuflags);
+}
+
+static void
+gst_a52dec_init (GstA52Dec * a52dec, GstA52DecClass * g_class)
+{
+  /* create the sink and src pads */
+  a52dec->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
+  gst_pad_set_setcaps_function (a52dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_a52dec_sink_setcaps));
+  gst_pad_set_chain_function (a52dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_a52dec_chain));
+  gst_pad_set_event_function (a52dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_a52dec_sink_event));
+  gst_element_add_pad (GST_ELEMENT (a52dec), a52dec->sinkpad);
+
+  a52dec->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
+  gst_pad_use_fixed_caps (a52dec->srcpad);
+  gst_element_add_pad (GST_ELEMENT (a52dec), a52dec->srcpad);
+
+  a52dec->request_channels = A52_CHANNEL;
+  a52dec->dynamic_range_compression = FALSE;
+
+  a52dec->state = NULL;
+  a52dec->samples = NULL;
+
+  gst_segment_init (&a52dec->segment, GST_FORMAT_UNDEFINED);
+}
+
+static gint
+gst_a52dec_channels (int flags, GstAudioChannelPosition ** _pos)
+{
+  gint chans = 0;
+  GstAudioChannelPosition *pos = NULL;
+
+  /* allocated just for safety. Number makes no sense */
+  if (_pos) {
+    pos = g_new (GstAudioChannelPosition, 6);
+    *_pos = pos;
+  }
+
+  if (flags & A52_LFE) {
+    chans += 1;
+    if (pos) {
+      pos[0] = GST_AUDIO_CHANNEL_POSITION_LFE;
+    }
+  }
+  flags &= A52_CHANNEL_MASK;
+  switch (flags) {
+    case A52_3F2R:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+        pos[2 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+        pos[3 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+        pos[4 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+      }
+      chans += 5;
+      break;
+    case A52_2F2R:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+        pos[2 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+        pos[3 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+      }
+      chans += 4;
+      break;
+    case A52_3F1R:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+        pos[2 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+        pos[3 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
+      }
+      chans += 4;
+      break;
+    case A52_2F1R:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+        pos[2 + chans] = GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
+      }
+      chans += 3;
+      break;
+    case A52_3F:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+        pos[2 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+      }
+      chans += 3;
+      break;
+    case A52_CHANNEL:          /* Dual mono. Should really be handled as 2 src pads */
+    case A52_STEREO:
+    case A52_DOLBY:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        pos[1 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+      }
+      chans += 2;
+      break;
+    case A52_MONO:
+      if (pos) {
+        pos[0 + chans] = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
+      }
+      chans += 1;
+      break;
+    default:
+      /* error, caller should post error message */
+      g_free (pos);
+      return 0;
+  }
+
+  return chans;
+}
+
+static void
+clear_queued (GstA52Dec * dec)
+{
+  g_list_foreach (dec->queued, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (dec->queued);
+  dec->queued = NULL;
+}
+
+static GstFlowReturn
+flush_queued (GstA52Dec * dec)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  while (dec->queued) {
+    GstBuffer *buf = GST_BUFFER_CAST (dec->queued->data);
+
+    GST_LOG_OBJECT (dec, "pushing buffer %p, timestamp %"
+        GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT, buf,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+    /* iterate ouput queue an push downstream */
+    ret = gst_pad_push (dec->srcpad, buf);
+
+    dec->queued = g_list_delete_link (dec->queued, dec->queued);
+  }
+  return ret;
+}
+
+static GstFlowReturn
+gst_a52dec_drain (GstA52Dec * dec)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  if (dec->segment.rate < 0.0) {
+    /* if we have some queued frames for reverse playback, flush
+     * them now */
+    ret = flush_queued (dec);
+  }
+  return ret;
+}
+
+static GstFlowReturn
+gst_a52dec_push (GstA52Dec * a52dec,
+    GstPad * srcpad, int flags, sample_t * samples, GstClockTime timestamp)
+{
+  GstBuffer *buf;
+  int chans, n, c;
+  GstFlowReturn result;
+
+  flags &= (A52_CHANNEL_MASK | A52_LFE);
+  chans = gst_a52dec_channels (flags, NULL);
+  if (!chans) {
+    GST_ELEMENT_ERROR (GST_ELEMENT (a52dec), STREAM, DECODE, (NULL),
+        ("invalid channel flags: %d", flags));
+    return GST_FLOW_ERROR;
+  }
+
+  result =
+      gst_pad_alloc_buffer_and_set_caps (srcpad, 0,
+      256 * chans * (SAMPLE_WIDTH / 8), GST_PAD_CAPS (srcpad), &buf);
+  if (result != GST_FLOW_OK)
+    return result;
+
+  for (n = 0; n < 256; n++) {
+    for (c = 0; c < chans; c++) {
+      ((sample_t *) GST_BUFFER_DATA (buf))[n * chans + c] =
+          samples[c * 256 + n];
+    }
+  }
+
+  GST_BUFFER_TIMESTAMP (buf) = timestamp;
+  GST_BUFFER_DURATION (buf) = 256 * GST_SECOND / a52dec->sample_rate;
+
+  result = GST_FLOW_OK;
+  if ((buf = gst_audio_buffer_clip (buf, &a52dec->segment,
+              a52dec->sample_rate, (SAMPLE_WIDTH / 8) * chans))) {
+    /* set discont when needed */
+    if (a52dec->discont) {
+      GST_LOG_OBJECT (a52dec, "marking DISCONT");
+      GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      a52dec->discont = FALSE;
+    }
+
+    if (a52dec->segment.rate > 0.0) {
+      GST_DEBUG_OBJECT (a52dec,
+          "Pushing buffer with ts %" GST_TIME_FORMAT " duration %"
+          GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+          GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+      result = gst_pad_push (srcpad, buf);
+    } else {
+      /* reverse playback, queue frame till later when we get a discont. */
+      GST_DEBUG_OBJECT (a52dec, "queued frame");
+      a52dec->queued = g_list_prepend (a52dec->queued, buf);
+    }
+  }
+  return result;
+}
+
+static gboolean
+gst_a52dec_reneg (GstA52Dec * a52dec, GstPad * pad)
+{
+  GstAudioChannelPosition *pos;
+  gint channels = gst_a52dec_channels (a52dec->using_channels, &pos);
+  GstCaps *caps = NULL;
+  gboolean result = FALSE;
+
+  if (!channels)
+    goto done;
+
+  GST_INFO_OBJECT (a52dec, "reneg channels:%d rate:%d",
+      channels, a52dec->sample_rate);
+
+  caps = gst_caps_new_simple ("audio/x-raw-float",
+      "endianness", G_TYPE_INT, G_BYTE_ORDER,
+      "width", G_TYPE_INT, SAMPLE_WIDTH,
+      "channels", G_TYPE_INT, channels,
+      "rate", G_TYPE_INT, a52dec->sample_rate, NULL);
+  gst_audio_set_channel_positions (gst_caps_get_structure (caps, 0), pos);
+  g_free (pos);
+
+  if (!gst_pad_set_caps (pad, caps))
+    goto done;
+
+  result = TRUE;
+
+done:
+  if (caps)
+    gst_caps_unref (caps);
+  return result;
+}
+
+static gboolean
+gst_a52dec_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstA52Dec *a52dec = GST_A52DEC (gst_pad_get_parent (pad));
+  gboolean ret = FALSE;
+
+  GST_LOG ("Handling %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      GstFormat fmt;
+      gboolean update;
+      gint64 start, end, pos;
+      gdouble rate, arate;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &arate, &fmt,
+          &start, &end, &pos);
+
+      /* drain queued buffers before activating the segment so that we can clip
+       * against the old segment first */
+      gst_a52dec_drain (a52dec);
+
+      if (fmt != GST_FORMAT_TIME || !GST_CLOCK_TIME_IS_VALID (start)) {
+        GST_WARNING ("No time in newsegment event %p (format is %s)",
+            event, gst_format_get_name (fmt));
+        gst_event_unref (event);
+        a52dec->sent_segment = FALSE;
+        /* set some dummy values, FIXME: do proper conversion */
+        a52dec->time = start = pos = 0;
+        fmt = GST_FORMAT_TIME;
+        end = -1;
+      } else {
+        a52dec->time = start;
+        a52dec->sent_segment = TRUE;
+        GST_DEBUG_OBJECT (a52dec,
+            "Pushing newseg rate %g, applied rate %g, format %d, start %"
+            G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT ", pos %"
+            G_GINT64_FORMAT, rate, arate, fmt, start, end, pos);
+
+        ret = gst_pad_push_event (a52dec->srcpad, event);
+      }
+
+      gst_segment_set_newsegment (&a52dec->segment, update, rate, fmt, start,
+          end, pos);
+      break;
+    }
+    case GST_EVENT_TAG:
+      ret = gst_pad_push_event (a52dec->srcpad, event);
+      break;
+    case GST_EVENT_EOS:
+      gst_a52dec_drain (a52dec);
+      ret = gst_pad_push_event (a52dec->srcpad, event);
+      break;
+    case GST_EVENT_FLUSH_START:
+      ret = gst_pad_push_event (a52dec->srcpad, event);
+      break;
+    case GST_EVENT_FLUSH_STOP:
+      if (a52dec->cache) {
+        gst_buffer_unref (a52dec->cache);
+        a52dec->cache = NULL;
+      }
+      clear_queued (a52dec);
+      gst_segment_init (&a52dec->segment, GST_FORMAT_UNDEFINED);
+      ret = gst_pad_push_event (a52dec->srcpad, event);
+      break;
+    default:
+      ret = gst_pad_push_event (a52dec->srcpad, event);
+      break;
+  }
+
+  gst_object_unref (a52dec);
+  return ret;
+}
+
+static void
+gst_a52dec_update_streaminfo (GstA52Dec * a52dec)
+{
+  GstTagList *taglist;
+
+  taglist = gst_tag_list_new ();
+
+  gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND,
+      GST_TAG_AUDIO_CODEC, "Dolby Digital (AC-3)",
+      GST_TAG_BITRATE, (guint) a52dec->bit_rate, NULL);
+
+  gst_element_found_tags_for_pad (GST_ELEMENT (a52dec),
+      GST_PAD (a52dec->srcpad), taglist);
+}
+
+static GstFlowReturn
+gst_a52dec_handle_frame (GstA52Dec * a52dec, guint8 * data,
+    guint length, gint flags, gint sample_rate, gint bit_rate)
+{
+  gint channels, i;
+  gboolean need_reneg = FALSE;
+
+  /* update stream information, renegotiate or re-streaminfo if needed */
+  need_reneg = FALSE;
+  if (a52dec->sample_rate != sample_rate) {
+    need_reneg = TRUE;
+    a52dec->sample_rate = sample_rate;
+  }
+
+  if (flags) {
+    a52dec->stream_channels = flags & (A52_CHANNEL_MASK | A52_LFE);
+  }
+
+  if (bit_rate != a52dec->bit_rate) {
+    a52dec->bit_rate = bit_rate;
+    gst_a52dec_update_streaminfo (a52dec);
+  }
+
+  /* If we haven't had an explicit number of channels chosen through properties
+   * at this point, choose what to downmix to now, based on what the peer will
+   * accept - this allows a52dec to do downmixing in preference to a
+   * downstream element such as audioconvert.
+   */
+  if (a52dec->request_channels != A52_CHANNEL) {
+    flags = a52dec->request_channels;
+  } else if (a52dec->flag_update) {
+    GstCaps *caps;
+
+    a52dec->flag_update = FALSE;
+
+    caps = gst_pad_get_allowed_caps (a52dec->srcpad);
+    if (caps && gst_caps_get_size (caps) > 0) {
+      GstCaps *copy = gst_caps_copy_nth (caps, 0);
+      GstStructure *structure = gst_caps_get_structure (copy, 0);
+      gint channels;
+      const int a52_channels[6] = {
+        A52_MONO,
+        A52_STEREO,
+        A52_STEREO | A52_LFE,
+        A52_2F2R,
+        A52_2F2R | A52_LFE,
+        A52_3F2R | A52_LFE,
+      };
+
+      /* Prefer the original number of channels, but fixate to something
+       * preferred (first in the caps) downstream if possible.
+       */
+      gst_structure_fixate_field_nearest_int (structure, "channels",
+          flags ? gst_a52dec_channels (flags, NULL) : 6);
+      if (gst_structure_get_int (structure, "channels", &channels)
+          && channels <= 6)
+        flags = a52_channels[channels - 1];
+      else
+        flags = a52_channels[5];
+
+      gst_caps_unref (copy);
+    } else if (flags)
+      flags = a52dec->stream_channels;
+    else
+      flags = A52_3F2R | A52_LFE;
+
+    if (caps)
+      gst_caps_unref (caps);
+  } else {
+    flags = a52dec->using_channels;
+  }
+  /* process */
+  flags |= A52_ADJUST_LEVEL;
+  a52dec->level = 1;
+  if (a52_frame (a52dec->state, data, &flags, &a52dec->level, a52dec->bias)) {
+    GST_WARNING ("a52_frame error");
+    a52dec->discont = TRUE;
+    return GST_FLOW_OK;
+  }
+  channels = flags & (A52_CHANNEL_MASK | A52_LFE);
+  if (a52dec->using_channels != channels) {
+    need_reneg = TRUE;
+    a52dec->using_channels = channels;
+  }
+
+  /* negotiate if required */
+  if (need_reneg) {
+    GST_DEBUG ("a52dec reneg: sample_rate:%d stream_chans:%d using_chans:%d",
+        a52dec->sample_rate, a52dec->stream_channels, a52dec->using_channels);
+    if (!gst_a52dec_reneg (a52dec, a52dec->srcpad)) {
+      GST_ELEMENT_ERROR (a52dec, CORE, NEGOTIATION, (NULL), (NULL));
+      return GST_FLOW_ERROR;
+    }
+  }
+
+  if (a52dec->dynamic_range_compression == FALSE) {
+    a52_dynrng (a52dec->state, NULL, NULL);
+  }
+
+  /* each frame consists of 6 blocks */
+  for (i = 0; i < 6; i++) {
+    if (a52_block (a52dec->state)) {
+      /* ignore errors but mark a discont */
+      GST_WARNING ("a52_block error %d", i);
+      a52dec->discont = TRUE;
+    } else {
+      GstFlowReturn ret;
+
+      /* push on */
+      ret = gst_a52dec_push (a52dec, a52dec->srcpad, a52dec->using_channels,
+          a52dec->samples, a52dec->time);
+      if (ret != GST_FLOW_OK)
+        return ret;
+    }
+    a52dec->time += 256 * GST_SECOND / a52dec->sample_rate;
+  }
+
+  return GST_FLOW_OK;
+}
+
+static gboolean
+gst_a52dec_sink_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstA52Dec *a52dec = GST_A52DEC (gst_pad_get_parent (pad));
+  GstStructure *structure;
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  if (structure && gst_structure_has_name (structure, "audio/x-private1-ac3"))
+    a52dec->dvdmode = TRUE;
+  else
+    a52dec->dvdmode = FALSE;
+
+  gst_object_unref (a52dec);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_a52dec_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstA52Dec *a52dec = GST_A52DEC (GST_PAD_PARENT (pad));
+  GstFlowReturn ret;
+  gint first_access;
+
+  if (GST_BUFFER_IS_DISCONT (buf)) {
+    GST_LOG_OBJECT (a52dec, "received DISCONT");
+    gst_a52dec_drain (a52dec);
+    /* clear cache on discont and mark a discont in the element */
+    if (a52dec->cache) {
+      gst_buffer_unref (a52dec->cache);
+      a52dec->cache = NULL;
+    }
+    a52dec->discont = TRUE;
+  }
+
+  if (a52dec->dvdmode) {
+    gint size = GST_BUFFER_SIZE (buf);
+    guchar *data = GST_BUFFER_DATA (buf);
+    gint offset;
+    gint len;
+    GstBuffer *subbuf;
+
+    if (size < 2)
+      goto not_enough_data;
+
+    first_access = (data[0] << 8) | data[1];
+
+    /* Skip the first_access header */
+    offset = 2;
+
+    if (first_access > 1) {
+      /* Length of data before first_access */
+      len = first_access - 1;
+
+      if (len <= 0 || offset + len > size)
+        goto bad_first_access_parameter;
+
+      subbuf = gst_buffer_create_sub (buf, offset, len);
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_CLOCK_TIME_NONE;
+      ret = gst_a52dec_chain_raw (pad, subbuf);
+      if (ret != GST_FLOW_OK)
+        goto done;
+
+      offset += len;
+      len = size - offset;
+
+      if (len > 0) {
+        subbuf = gst_buffer_create_sub (buf, offset, len);
+        GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf);
+
+        ret = gst_a52dec_chain_raw (pad, subbuf);
+      }
+    } else {
+      /* first_access = 0 or 1, so if there's a timestamp it applies to the first byte */
+      subbuf = gst_buffer_create_sub (buf, offset, size - offset);
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf);
+      ret = gst_a52dec_chain_raw (pad, subbuf);
+    }
+  } else {
+    gst_buffer_ref (buf);
+    ret = gst_a52dec_chain_raw (pad, buf);
+  }
+
+done:
+  gst_buffer_unref (buf);
+  return ret;
+
+/* ERRORS */
+not_enough_data:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (a52dec), STREAM, DECODE, (NULL),
+        ("Insufficient data in buffer. Can't determine first_acess"));
+    gst_buffer_unref (buf);
+    return GST_FLOW_ERROR;
+  }
+bad_first_access_parameter:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (a52dec), STREAM, DECODE, (NULL),
+        ("Bad first_access parameter (%d) in buffer", first_access));
+    gst_buffer_unref (buf);
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_a52dec_chain_raw (GstPad * pad, GstBuffer * buf)
+{
+  GstA52Dec *a52dec;
+  guint8 *data;
+  guint size;
+  gint length = 0, flags, sample_rate, bit_rate;
+  GstFlowReturn result = GST_FLOW_OK;
+
+  a52dec = GST_A52DEC (GST_PAD_PARENT (pad));
+
+  if (!a52dec->sent_segment) {
+    GstSegment segment;
+
+    /* Create a basic segment. Usually, we'll get a new-segment sent by
+     * another element that will know more information (a demuxer). If we're
+     * just looking at a raw AC3 stream, we won't - so we need to send one
+     * here, but we don't know much info, so just send a minimal TIME
+     * new-segment event
+     */
+    gst_segment_init (&segment, GST_FORMAT_TIME);
+    gst_pad_push_event (a52dec->srcpad, gst_event_new_new_segment (FALSE,
+            segment.rate, segment.format, segment.start,
+            segment.duration, segment.start));
+    a52dec->sent_segment = TRUE;
+  }
+
+  /* merge with cache, if any. Also make sure timestamps match */
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    a52dec->time = GST_BUFFER_TIMESTAMP (buf);
+    GST_DEBUG_OBJECT (a52dec,
+        "Received buffer with ts %" GST_TIME_FORMAT " duration %"
+        GST_TIME_FORMAT, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+  }
+
+  if (a52dec->cache) {
+    buf = gst_buffer_join (a52dec->cache, buf);
+    a52dec->cache = NULL;
+  }
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+
+  /* find and read header */
+  bit_rate = a52dec->bit_rate;
+  sample_rate = a52dec->sample_rate;
+  flags = 0;
+  while (size >= 7) {
+    length = a52_syncinfo (data, &flags, &sample_rate, &bit_rate);
+
+    if (length == 0) {
+      /* no sync */
+      data++;
+      size--;
+    } else if (length <= size) {
+      GST_DEBUG ("Sync: %d", length);
+
+      if (flags != a52dec->prev_flags)
+        a52dec->flag_update = TRUE;
+      a52dec->prev_flags = flags;
+
+      result = gst_a52dec_handle_frame (a52dec, data,
+          length, flags, sample_rate, bit_rate);
+      if (result != GST_FLOW_OK) {
+        size = 0;
+        break;
+      }
+      size -= length;
+      data += length;
+    } else {
+      /* not enough data */
+      GST_LOG ("Not enough data available");
+      break;
+    }
+  }
+
+  /* keep cache */
+  if (length == 0) {
+    GST_LOG ("No sync found");
+  }
+
+  if (size > 0) {
+    a52dec->cache = gst_buffer_create_sub (buf,
+        GST_BUFFER_SIZE (buf) - size, size);
+  }
+
+  gst_buffer_unref (buf);
+
+  return result;
+}
+
+static GstStateChangeReturn
+gst_a52dec_change_state (GstElement * element, GstStateChange transition)
+{
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  GstA52Dec *a52dec = GST_A52DEC (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:{
+      GstA52DecClass *klass;
+
+      klass = GST_A52DEC_CLASS (G_OBJECT_GET_CLASS (a52dec));
+      a52dec->state = a52_init (klass->a52_cpuflags);
+
+      if (!a52dec->state) {
+        GST_ELEMENT_ERROR (GST_ELEMENT (a52dec), STREAM, DECODE, (NULL),
+            ("Failed to initialize a52 state"));
+        ret = GST_STATE_CHANGE_FAILURE;
+      }
+      break;
+    }
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      a52dec->samples = a52_samples (a52dec->state);
+      a52dec->bit_rate = -1;
+      a52dec->sample_rate = -1;
+      a52dec->stream_channels = A52_CHANNEL;
+      a52dec->using_channels = A52_CHANNEL;
+      a52dec->level = 1;
+      a52dec->bias = 0;
+      a52dec->time = 0;
+      a52dec->sent_segment = FALSE;
+      a52dec->flag_update = TRUE;
+      gst_segment_init (&a52dec->segment, GST_FORMAT_UNDEFINED);
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      a52dec->samples = NULL;
+      if (a52dec->cache) {
+        gst_buffer_unref (a52dec->cache);
+        a52dec->cache = NULL;
+      }
+      clear_queued (a52dec);
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      if (a52dec->state) {
+        a52_free (a52dec->state);
+        a52dec->state = NULL;
+      }
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static void
+gst_a52dec_set_property (GObject * object, guint prop_id, const GValue * value,
+    GParamSpec * pspec)
+{
+  GstA52Dec *src = GST_A52DEC (object);
+
+  switch (prop_id) {
+    case ARG_DRC:
+      GST_OBJECT_LOCK (src);
+      src->dynamic_range_compression = g_value_get_boolean (value);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case ARG_MODE:
+      GST_OBJECT_LOCK (src);
+      src->request_channels &= ~A52_CHANNEL_MASK;
+      src->request_channels |= g_value_get_enum (value);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case ARG_LFE:
+      GST_OBJECT_LOCK (src);
+      src->request_channels &= ~A52_LFE;
+      src->request_channels |= g_value_get_boolean (value) ? A52_LFE : 0;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_a52dec_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstA52Dec *src = GST_A52DEC (object);
+
+  switch (prop_id) {
+    case ARG_DRC:
+      GST_OBJECT_LOCK (src);
+      g_value_set_boolean (value, src->dynamic_range_compression);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case ARG_MODE:
+      GST_OBJECT_LOCK (src);
+      g_value_set_enum (value, src->request_channels & A52_CHANNEL_MASK);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case ARG_LFE:
+      GST_OBJECT_LOCK (src);
+      g_value_set_boolean (value, src->request_channels & A52_LFE);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+#if HAVE_ORC
+  orc_init ();
+#endif
+
+  /* ensure GstAudioChannelPosition type is registered */
+  if (!gst_audio_channel_position_get_type ())
+    return FALSE;
+
+  if (!gst_element_register (plugin, "a52dec", GST_RANK_SECONDARY,
+          GST_TYPE_A52DEC))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "a52dec",
+    "Decodes ATSC A/52 encoded audio streams",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/a52dec/gsta52dec.h b/ext/a52dec/gsta52dec.h
new file mode 100644 (file)
index 0000000..e575b81
--- /dev/null
@@ -0,0 +1,111 @@
+/* GStreamer
+ * Copyright (C) <2001> David I. Lehn <dlehn@users.sourceforge.net>
+ *
+ * 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_A52DEC_H__
+#define __GST_A52DEC_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_A52DEC \
+  (gst_a52dec_get_type())
+#define GST_A52DEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_A52DEC,GstA52Dec))
+#define GST_A52DEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_A52DEC,GstA52DecClass))
+#define GST_IS_A52DEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_A52DEC))
+#define GST_IS_A52DEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_A52DEC))
+
+typedef struct _GstA52Dec GstA52Dec;
+typedef struct _GstA52DecClass GstA52DecClass;
+
+struct _GstA52Dec {
+  GstElement     element;
+
+  /* pads */
+  GstPad        *sinkpad,
+                *srcpad;
+  GstSegment     segment;
+
+  gboolean       dvdmode;
+  gboolean       sent_segment;
+  gboolean       discont;
+
+  gboolean       flag_update;
+  int            prev_flags;
+
+  int            bit_rate;
+  int            sample_rate;
+  int            stream_channels;
+  int            request_channels;
+  int            using_channels;
+
+  sample_t       level;
+  sample_t       bias;
+  gboolean       dynamic_range_compression;
+  sample_t      *samples;
+  a52_state_t   *state;
+
+  GstBuffer     *cache;
+  GstClockTime   time;
+
+  /* reverse */
+  GList         *queued;
+};
+
+struct _GstA52DecClass {
+  GstElementClass parent_class;
+
+  guint32 a52_cpuflags;
+};
+
+GType gst_a52dec_get_type (void);
+
+#ifndef A52_MONO
+#define A52_MONO 1
+#endif
+#ifndef A52_STEREO
+#define A52_STEREO 2
+#endif
+#ifndef A52_3F
+#define A52_3F 3
+#endif
+#ifndef A52_2F1R
+#define A52_2F1R 4
+#endif
+#ifndef A52_3F1R
+#define A52_3F1R 5
+#endif
+#ifndef A52_2F2R
+#define A52_2F2R 6
+#endif
+#ifndef A52_3F2R
+#define A52_3F2R 7
+#endif
+#ifndef A52_DOLBY
+#define A52_DOLBY 10
+#endif
+
+G_END_DECLS
+
+#endif /* __GST_A52DEC_H__ */
diff --git a/ext/amrnb/GstAmrnbEnc.prs b/ext/amrnb/GstAmrnbEnc.prs
new file mode 100644 (file)
index 0000000..69e3719
--- /dev/null
@@ -0,0 +1,11 @@
+[_presets_]
+version=0.10
+element-name=GstAmrnbEnc
+
+[enhance-size]
+_meta/comment=Maximize compression, lowest bitrate
+band-mode=0
+
+[enhance-quality]
+_meta/comment=Maximize quality, highest bitrate
+band-mode=7
diff --git a/ext/amrnb/Makefile.am b/ext/amrnb/Makefile.am
new file mode 100644 (file)
index 0000000..4e528dc
--- /dev/null
@@ -0,0 +1,23 @@
+plugin_LTLIBRARIES = libgstamrnb.la
+
+libgstamrnb_la_SOURCES = \
+       amrnb.c \
+       amrnbdec.c \
+       amrnbenc.c
+
+libgstamrnb_la_CFLAGS = -DGST_USE_UNSTABLE_API $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AMRNB_CFLAGS)
+libgstamrnb_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+        -lgstaudio-@GST_MAJORMINOR@ \
+        $(GST_BASE_LIBS) $(GST_LIBS) $(AMRNB_LIBS)
+libgstamrnb_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstamrnb_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = \
+       amrnbdec.h \
+       amrnbenc.h
+
+presetdir = $(datadir)/gstreamer-$(GST_MAJORMINOR)/presets
+preset_DATA = GstAmrnbEnc.prs
+
+EXTRA_DIST = $(preset_DATA)
diff --git a/ext/amrnb/Makefile.in b/ext/amrnb/Makefile.in
new file mode 100644 (file)
index 0000000..cb0c295
--- /dev/null
@@ -0,0 +1,775 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/amrnb
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(presetdir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstamrnb_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstamrnb_la_OBJECTS = libgstamrnb_la-amrnb.lo \
+       libgstamrnb_la-amrnbdec.lo libgstamrnb_la-amrnbenc.lo
+libgstamrnb_la_OBJECTS = $(am_libgstamrnb_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstamrnb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstamrnb_la_CFLAGS) $(CFLAGS) \
+       $(libgstamrnb_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstamrnb_la_SOURCES)
+DIST_SOURCES = $(libgstamrnb_la_SOURCES)
+DATA = $(preset_DATA)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstamrnb.la
+libgstamrnb_la_SOURCES = \
+       amrnb.c \
+       amrnbdec.c \
+       amrnbenc.c
+
+libgstamrnb_la_CFLAGS = -DGST_USE_UNSTABLE_API $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AMRNB_CFLAGS)
+
+libgstamrnb_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+        -lgstaudio-@GST_MAJORMINOR@ \
+        $(GST_BASE_LIBS) $(GST_LIBS) $(AMRNB_LIBS)
+
+libgstamrnb_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstamrnb_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = \
+       amrnbdec.h \
+       amrnbenc.h
+
+presetdir = $(datadir)/gstreamer-$(GST_MAJORMINOR)/presets
+preset_DATA = GstAmrnbEnc.prs
+EXTRA_DIST = $(preset_DATA)
+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 ext/amrnb/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/amrnb/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
+libgstamrnb.la: $(libgstamrnb_la_OBJECTS) $(libgstamrnb_la_DEPENDENCIES) $(EXTRA_libgstamrnb_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstamrnb_la_LINK) -rpath $(plugindir) $(libgstamrnb_la_OBJECTS) $(libgstamrnb_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstamrnb_la-amrnb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstamrnb_la-amrnbdec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstamrnb_la-amrnbenc.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstamrnb_la-amrnb.lo: amrnb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -MT libgstamrnb_la-amrnb.lo -MD -MP -MF $(DEPDIR)/libgstamrnb_la-amrnb.Tpo -c -o libgstamrnb_la-amrnb.lo `test -f 'amrnb.c' || echo '$(srcdir)/'`amrnb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstamrnb_la-amrnb.Tpo $(DEPDIR)/libgstamrnb_la-amrnb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='amrnb.c' object='libgstamrnb_la-amrnb.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -c -o libgstamrnb_la-amrnb.lo `test -f 'amrnb.c' || echo '$(srcdir)/'`amrnb.c
+
+libgstamrnb_la-amrnbdec.lo: amrnbdec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -MT libgstamrnb_la-amrnbdec.lo -MD -MP -MF $(DEPDIR)/libgstamrnb_la-amrnbdec.Tpo -c -o libgstamrnb_la-amrnbdec.lo `test -f 'amrnbdec.c' || echo '$(srcdir)/'`amrnbdec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstamrnb_la-amrnbdec.Tpo $(DEPDIR)/libgstamrnb_la-amrnbdec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='amrnbdec.c' object='libgstamrnb_la-amrnbdec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -c -o libgstamrnb_la-amrnbdec.lo `test -f 'amrnbdec.c' || echo '$(srcdir)/'`amrnbdec.c
+
+libgstamrnb_la-amrnbenc.lo: amrnbenc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -MT libgstamrnb_la-amrnbenc.lo -MD -MP -MF $(DEPDIR)/libgstamrnb_la-amrnbenc.Tpo -c -o libgstamrnb_la-amrnbenc.lo `test -f 'amrnbenc.c' || echo '$(srcdir)/'`amrnbenc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstamrnb_la-amrnbenc.Tpo $(DEPDIR)/libgstamrnb_la-amrnbenc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='amrnbenc.c' object='libgstamrnb_la-amrnbenc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrnb_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrnb_la_CFLAGS) $(CFLAGS) -c -o libgstamrnb_la-amrnbenc.lo `test -f 'amrnbenc.c' || echo '$(srcdir)/'`amrnbenc.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-presetDATA: $(preset_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(presetdir)" || $(MKDIR_P) "$(DESTDIR)$(presetdir)"
+       @list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(presetdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(presetdir)" || exit $$?; \
+       done
+
+uninstall-presetDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(presetdir)'; $(am__uninstall_files_from_dir)
+
+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) $(DATA) $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(presetdir)"; 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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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-presetDATA
+
+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 uninstall-presetDATA
+
+.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-presetDATA 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 \
+       uninstall-presetDATA
+
+
+# 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 --git a/ext/amrnb/README b/ext/amrnb/README
new file mode 100644 (file)
index 0000000..879dbe7
--- /dev/null
@@ -0,0 +1,6 @@
+Compiling AMRNB:
+================
+
+To compile the amrnb plugin, you need the opencore-amrnb development package.
+If your distribution does not provide this package, you can download the 
+source code from "http://sourceforge.net/projects/opencore-amr".
diff --git a/ext/amrnb/amrnb.c b/ext/amrnb/amrnb.c
new file mode 100644 (file)
index 0000000..a97df78
--- /dev/null
@@ -0,0 +1,42 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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 "amrnbdec.h"
+#include "amrnbenc.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "amrnbdec",
+      GST_RANK_PRIMARY, GST_TYPE_AMRNBDEC) &&
+      gst_element_register (plugin, "amrnbenc",
+      GST_RANK_SECONDARY, GST_TYPE_AMRNBENC);
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "amrnb",
+    "Adaptive Multi-Rate Narrow-Band",
+    plugin_init, VERSION, GST_LICENSE_UNKNOWN, GST_PACKAGE_NAME,
+    GST_PACKAGE_ORIGIN);
diff --git a/ext/amrnb/amrnbdec.c b/ext/amrnb/amrnbdec.c
new file mode 100644 (file)
index 0000000..bf59d8d
--- /dev/null
@@ -0,0 +1,329 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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-amrnbdec
+ * @see_also: #GstAmrnbEnc, #GstAmrParse
+ *
+ * AMR narrowband decoder based on the 
+ * <ulink url="http://sourceforge.net/projects/opencore-amr">opencore codec implementation</ulink>.
+ * 
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch filesrc location=abc.amr ! amrparse ! amrnbdec ! audioresample ! audioconvert ! alsasink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "amrnbdec.h"
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/AMR, " "rate = (int) 8000, " "channels = (int) 1")
+    );
+
+static GstStaticPadTemplate 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, "
+        "signed = (boolean) TRUE, "
+        "endianness = (int) BYTE_ORDER, "
+        "rate = (int) 8000," "channels = (int) 1")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_amrnbdec_debug);
+#define GST_CAT_DEFAULT gst_amrnbdec_debug
+
+static const gint block_size_if1[16] = { 12, 13, 15, 17, 19, 20, 26, 31, 5,
+  0, 0, 0, 0, 0, 0, 0
+};
+
+static const gint block_size_if2[16] = { 12, 13, 15, 17, 18, 20, 25, 30, 5,
+  0, 0, 0, 0, 0, 0, 0
+};
+
+static GType
+gst_amrnb_variant_get_type (void)
+{
+  static GType gst_amrnb_variant_type = 0;
+  static const GEnumValue gst_amrnb_variant[] = {
+    {GST_AMRNB_VARIANT_IF1, "IF1", "IF1"},
+    {GST_AMRNB_VARIANT_IF2, "IF2", "IF2"},
+    {0, NULL, NULL},
+  };
+  if (!gst_amrnb_variant_type) {
+    gst_amrnb_variant_type =
+        g_enum_register_static ("GstAmrnbVariant", gst_amrnb_variant);
+  }
+  return gst_amrnb_variant_type;
+}
+
+#define GST_AMRNB_VARIANT_TYPE (gst_amrnb_variant_get_type())
+
+#define VARIANT_DEFAULT GST_AMRNB_VARIANT_IF1
+enum
+{
+  PROP_0,
+  PROP_VARIANT
+};
+
+static void gst_amrnbdec_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_amrnbdec_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static gboolean gst_amrnbdec_start (GstAudioDecoder * dec);
+static gboolean gst_amrnbdec_stop (GstAudioDecoder * dec);
+static gboolean gst_amrnbdec_set_format (GstAudioDecoder * dec, GstCaps * caps);
+static gboolean gst_amrnbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+    gint * offset, gint * length);
+static GstFlowReturn gst_amrnbdec_handle_frame (GstAudioDecoder * dec,
+    GstBuffer * buffer);
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gst_amrnbdec_debug, "amrnbdec", 0, "AMR-NB audio decoder");
+
+GST_BOILERPLATE_FULL (GstAmrnbDec, gst_amrnbdec, GstAudioDecoder,
+    GST_TYPE_AUDIO_DECODER, _do_init);
+
+static void
+gst_amrnbdec_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+
+  gst_element_class_set_details_simple (element_class, "AMR-NB audio decoder",
+      "Codec/Decoder/Audio",
+      "Adaptive Multi-Rate Narrow-Band audio decoder",
+      "GStreamer maintainers <gstreamer-devel@lists.sourceforge.net>");
+}
+
+static void
+gst_amrnbdec_class_init (GstAmrnbDecClass * klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
+
+  object_class->set_property = gst_amrnbdec_set_property;
+  object_class->get_property = gst_amrnbdec_get_property;
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_amrnbdec_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_amrnbdec_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_amrnbdec_set_format);
+  base_class->parse = GST_DEBUG_FUNCPTR (gst_amrnbdec_parse);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_amrnbdec_handle_frame);
+
+  g_object_class_install_property (object_class, PROP_VARIANT,
+      g_param_spec_enum ("variant", "Variant",
+          "The decoder variant", GST_AMRNB_VARIANT_TYPE,
+          VARIANT_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_amrnbdec_init (GstAmrnbDec * amrnbdec, GstAmrnbDecClass * klass)
+{
+}
+
+static gboolean
+gst_amrnbdec_start (GstAudioDecoder * dec)
+{
+  GstAmrnbDec *amrnbdec = GST_AMRNBDEC (dec);
+
+  GST_DEBUG_OBJECT (dec, "start");
+  if (!(amrnbdec->handle = Decoder_Interface_init ()))
+    return FALSE;
+
+  amrnbdec->rate = 0;
+  amrnbdec->channels = 0;
+
+  return TRUE;
+}
+
+static gboolean
+gst_amrnbdec_stop (GstAudioDecoder * dec)
+{
+  GstAmrnbDec *amrnbdec = GST_AMRNBDEC (dec);
+
+  GST_DEBUG_OBJECT (dec, "stop");
+  Decoder_Interface_exit (amrnbdec->handle);
+
+  return TRUE;
+}
+
+static void
+gst_amrnbdec_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstAmrnbDec *self = GST_AMRNBDEC (object);
+
+  switch (prop_id) {
+    case PROP_VARIANT:
+      self->variant = g_value_get_enum (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static void
+gst_amrnbdec_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstAmrnbDec *self = GST_AMRNBDEC (object);
+
+  switch (prop_id) {
+    case PROP_VARIANT:
+      g_value_set_enum (value, self->variant);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static gboolean
+gst_amrnbdec_set_format (GstAudioDecoder * dec, GstCaps * caps)
+{
+  GstStructure *structure;
+  GstAmrnbDec *amrnbdec;
+  GstCaps *copy;
+
+  amrnbdec = GST_AMRNBDEC (dec);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  /* get channel count */
+  gst_structure_get_int (structure, "channels", &amrnbdec->channels);
+  gst_structure_get_int (structure, "rate", &amrnbdec->rate);
+
+  /* create reverse caps */
+  copy = gst_caps_new_simple ("audio/x-raw-int",
+      "channels", G_TYPE_INT, amrnbdec->channels,
+      "width", G_TYPE_INT, 16,
+      "depth", G_TYPE_INT, 16,
+      "endianness", G_TYPE_INT, G_BYTE_ORDER,
+      "rate", G_TYPE_INT, amrnbdec->rate, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+  gst_pad_set_caps (GST_AUDIO_DECODER_SRC_PAD (dec), copy);
+  gst_caps_unref (copy);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_amrnbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+    gint * offset, gint * length)
+{
+  GstAmrnbDec *amrnbdec = GST_AMRNBDEC (dec);
+  const guint8 *data;
+  guint size;
+  gboolean sync, eos;
+  gint block, mode;
+
+  size = gst_adapter_available (adapter);
+  g_return_val_if_fail (size > 0, GST_FLOW_ERROR);
+
+  gst_audio_decoder_get_parse_state (dec, &sync, &eos);
+
+  /* need to peek data to get the size */
+  if (size < 1)
+    return GST_FLOW_ERROR;
+
+  data = gst_adapter_peek (adapter, 1);
+
+  /* get size */
+  switch (amrnbdec->variant) {
+    case GST_AMRNB_VARIANT_IF1:
+      mode = (data[0] >> 3) & 0x0F;
+      block = block_size_if1[mode] + 1;
+      break;
+    case GST_AMRNB_VARIANT_IF2:
+      mode = data[0] & 0x0F;
+      block = block_size_if2[mode] + 1;
+      break;
+    default:
+      g_assert_not_reached ();
+      return GST_FLOW_ERROR;
+      break;
+  }
+
+  GST_DEBUG_OBJECT (amrnbdec, "mode %d, block %d", mode, block);
+
+  if (block > size)
+    return GST_FLOW_UNEXPECTED;
+
+  *offset = 0;
+  *length = block;
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_amrnbdec_handle_frame (GstAudioDecoder * dec, GstBuffer * buffer)
+{
+  GstAmrnbDec *amrnbdec;
+  guint8 *data;
+  GstBuffer *out;
+
+  amrnbdec = GST_AMRNBDEC (dec);
+
+  /* no fancy flushing */
+  if (!buffer || !GST_BUFFER_SIZE (buffer))
+    return GST_FLOW_OK;
+
+  if (amrnbdec->rate == 0 || amrnbdec->channels == 0)
+    goto not_negotiated;
+
+  /* the library seems to write into the source data, hence
+   * the copy. */
+  /* should not be a problem though */
+  data = GST_BUFFER_DATA (buffer);
+
+  /* get output */
+  out = gst_buffer_new_and_alloc (160 * 2);
+
+  /* decode */
+  Decoder_Interface_Decode (amrnbdec->handle, data,
+      (short *) GST_BUFFER_DATA (out), 0);
+
+  return gst_audio_decoder_finish_frame (dec, out, 1);
+
+  /* ERRORS */
+not_negotiated:
+  {
+    GST_ELEMENT_ERROR (amrnbdec, STREAM, TYPE_NOT_FOUND, (NULL),
+        ("Decoder is not initialized"));
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+}
diff --git a/ext/amrnb/amrnbdec.h b/ext/amrnb/amrnbdec.h
new file mode 100644 (file)
index 0000000..1e81839
--- /dev/null
@@ -0,0 +1,69 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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_AMRNBDEC_H__
+#define __GST_AMRNBDEC_H__
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudiodecoder.h>
+#include <interf_dec.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_AMRNBDEC \
+  (gst_amrnbdec_get_type())
+#define GST_AMRNBDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_AMRNBDEC, GstAmrnbDec))
+#define GST_AMRNBDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_AMRNBDEC, GstAmrnbDecClass))
+#define GST_IS_AMRNBDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_AMRNBDEC))
+#define GST_IS_AMRNBDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_AMRNBDEC))
+
+typedef struct _GstAmrnbDec GstAmrnbDec;
+typedef struct _GstAmrnbDecClass GstAmrnbDecClass;
+
+typedef enum
+{
+  GST_AMRNB_VARIANT_IF1,
+  GST_AMRNB_VARIANT_IF2
+} GstAmrnbVariant;
+
+struct _GstAmrnbDec {
+  GstAudioDecoder element;
+
+  GstAmrnbVariant variant;
+
+  /* library handle */
+  void *handle;
+
+  /* output settings */
+  gint channels, rate;
+};
+
+struct _GstAmrnbDecClass {
+  GstAudioDecoderClass parent_class;
+};
+
+GType gst_amrnbdec_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_AMRNBDEC_H__ */
diff --git a/ext/amrnb/amrnbenc.c b/ext/amrnb/amrnbenc.c
new file mode 100644 (file)
index 0000000..8070ec1
--- /dev/null
@@ -0,0 +1,294 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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-amrnbenc
+ * @see_also: #GstAmrnbDec, #GstAmrnbParse
+ *
+ * AMR narrowband encoder based on the 
+ * <ulink url="http://sourceforge.net/projects/opencore-amr">opencore codec implementation</ulink>.
+ * 
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch filesrc location=abc.wav ! wavparse ! audioresample ! audioconvert ! amrnbenc ! filesink location=abc.amr
+ * ]|
+ * Please note that the above stream misses the header, that is needed to play
+ * the stream.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "amrnbenc.h"
+
+static GType
+gst_amrnbenc_bandmode_get_type (void)
+{
+  static GType gst_amrnbenc_bandmode_type = 0;
+  static const GEnumValue gst_amrnbenc_bandmode[] = {
+    {MR475, "MR475", "MR475"},
+    {MR515, "MR515", "MR515"},
+    {MR59, "MR59", "MR59"},
+    {MR67, "MR67", "MR67"},
+    {MR74, "MR74", "MR74"},
+    {MR795, "MR795", "MR795"},
+    {MR102, "MR102", "MR102"},
+    {MR122, "MR122", "MR122"},
+    {MRDTX, "MRDTX", "MRDTX"},
+    {0, NULL, NULL},
+  };
+  if (!gst_amrnbenc_bandmode_type) {
+    gst_amrnbenc_bandmode_type =
+        g_enum_register_static ("GstAmrnbEncBandMode", gst_amrnbenc_bandmode);
+  }
+  return gst_amrnbenc_bandmode_type;
+}
+
+#define GST_AMRNBENC_BANDMODE_TYPE (gst_amrnbenc_bandmode_get_type())
+
+#define BANDMODE_DEFAULT MR122
+enum
+{
+  PROP_0,
+  PROP_BANDMODE
+};
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "width = (int) 16, "
+        "depth = (int) 16, "
+        "signed = (boolean) TRUE, "
+        "endianness = (int) BYTE_ORDER, "
+        "rate = (int) 8000," "channels = (int) 1")
+    );
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/AMR, " "rate = (int) 8000, " "channels = (int) 1")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_amrnbenc_debug);
+#define GST_CAT_DEFAULT gst_amrnbenc_debug
+
+static gboolean gst_amrnbenc_start (GstAudioEncoder * enc);
+static gboolean gst_amrnbenc_stop (GstAudioEncoder * enc);
+static gboolean gst_amrnbenc_set_format (GstAudioEncoder * enc,
+    GstAudioInfo * info);
+static GstFlowReturn gst_amrnbenc_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * in_buf);
+
+GST_BOILERPLATE (GstAmrnbEnc, gst_amrnbenc, GstAudioEncoder,
+    GST_TYPE_AUDIO_ENCODER);
+
+static void
+gst_amrnbenc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstAmrnbEnc *self = GST_AMRNBENC (object);
+
+  switch (prop_id) {
+    case PROP_BANDMODE:
+      self->bandmode = g_value_get_enum (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static void
+gst_amrnbenc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstAmrnbEnc *self = GST_AMRNBENC (object);
+
+  switch (prop_id) {
+    case PROP_BANDMODE:
+      g_value_set_enum (value, self->bandmode);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static void
+gst_amrnbenc_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+
+  gst_element_class_set_details_simple (element_class, "AMR-NB audio encoder",
+      "Codec/Encoder/Audio",
+      "Adaptive Multi-Rate Narrow-Band audio encoder",
+      "Wim Taymans <wim.taymans@gmail.com>");
+}
+
+static void
+gst_amrnbenc_class_init (GstAmrnbEncClass * klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GstAudioEncoderClass *base_class = GST_AUDIO_ENCODER_CLASS (klass);
+
+  object_class->set_property = gst_amrnbenc_set_property;
+  object_class->get_property = gst_amrnbenc_get_property;
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_amrnbenc_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_amrnbenc_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_amrnbenc_set_format);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_amrnbenc_handle_frame);
+
+  g_object_class_install_property (object_class, PROP_BANDMODE,
+      g_param_spec_enum ("band-mode", "Band Mode",
+          "Encoding Band Mode (Kbps)", GST_AMRNBENC_BANDMODE_TYPE,
+          BANDMODE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  GST_DEBUG_CATEGORY_INIT (gst_amrnbenc_debug, "amrnbenc", 0,
+      "AMR-NB audio encoder");
+}
+
+static void
+gst_amrnbenc_init (GstAmrnbEnc * amrnbenc, GstAmrnbEncClass * klass)
+{
+}
+
+static gboolean
+gst_amrnbenc_start (GstAudioEncoder * enc)
+{
+  GstAmrnbEnc *amrnbenc = GST_AMRNBENC (enc);
+
+  GST_DEBUG_OBJECT (amrnbenc, "start");
+
+  if (!(amrnbenc->handle = Encoder_Interface_init (0)))
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_amrnbenc_stop (GstAudioEncoder * enc)
+{
+  GstAmrnbEnc *amrnbenc = GST_AMRNBENC (enc);
+
+  GST_DEBUG_OBJECT (amrnbenc, "stop");
+
+  Encoder_Interface_exit (amrnbenc->handle);
+
+  return TRUE;
+}
+
+static gboolean
+gst_amrnbenc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstAmrnbEnc *amrnbenc;
+  GstCaps *copy;
+
+  amrnbenc = GST_AMRNBENC (enc);
+
+  /* parameters already parsed for us */
+  amrnbenc->rate = GST_AUDIO_INFO_RATE (info);
+  amrnbenc->channels = GST_AUDIO_INFO_CHANNELS (info);
+
+  /* we do not really accept other input, but anyway ... */
+  /* this is not wrong but will sound bad */
+  if (amrnbenc->channels != 1) {
+    g_warning ("amrnbdec is only optimized for mono channels");
+  }
+  if (amrnbenc->rate != 8000) {
+    g_warning ("amrnbdec is only optimized for 8000 Hz samplerate");
+  }
+
+  /* create reverse caps */
+  copy = gst_caps_new_simple ("audio/AMR",
+      "channels", G_TYPE_INT, amrnbenc->channels,
+      "rate", G_TYPE_INT, amrnbenc->rate, NULL);
+
+  gst_pad_set_caps (GST_AUDIO_ENCODER_SRC_PAD (amrnbenc), copy);
+  gst_caps_unref (copy);
+
+  /* report needs to base class: hand one frame at a time */
+  gst_audio_encoder_set_frame_samples_min (enc, 160);
+  gst_audio_encoder_set_frame_samples_max (enc, 160);
+  gst_audio_encoder_set_frame_max (enc, 1);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_amrnbenc_handle_frame (GstAudioEncoder * enc, GstBuffer * buffer)
+{
+  GstAmrnbEnc *amrnbenc;
+  GstFlowReturn ret;
+  GstBuffer *out;
+  guint8 *data;
+  gint outsize;
+
+  amrnbenc = GST_AMRNBENC (enc);
+
+  g_return_val_if_fail (amrnbenc->handle, GST_FLOW_WRONG_STATE);
+
+  /* we don't deal with squeezing remnants, so simply discard those */
+  if (G_UNLIKELY (buffer == NULL)) {
+    GST_DEBUG_OBJECT (amrnbenc, "no data");
+    return GST_FLOW_OK;
+  }
+
+  if (G_UNLIKELY (GST_BUFFER_SIZE (buffer) < 320)) {
+    GST_DEBUG_OBJECT (amrnbenc, "discarding trailing data %d",
+        buffer ? GST_BUFFER_SIZE (buffer) : 0);
+    return gst_audio_encoder_finish_frame (enc, NULL, -1);
+  }
+
+  /* get output, max size is 32 */
+  out = gst_buffer_new_and_alloc (32);
+  /* AMR encoder actually writes into the source data buffers it gets */
+  /* should be able to handle that with what we are given */
+  data = GST_BUFFER_DATA (buffer);
+
+  /* encode */
+  outsize =
+      Encoder_Interface_Encode (amrnbenc->handle, amrnbenc->bandmode,
+      (short *) data, (guint8 *) GST_BUFFER_DATA (out), 0);
+
+  GST_LOG_OBJECT (amrnbenc, "output data size %d", outsize);
+
+  if (outsize) {
+    GST_BUFFER_SIZE (out) = outsize;
+    ret = gst_audio_encoder_finish_frame (enc, out, 160);
+  } else {
+    /* should not happen (without dtx or so at least) */
+    GST_WARNING_OBJECT (amrnbenc, "no encoded data; discarding input");
+    gst_buffer_unref (out);
+    ret = gst_audio_encoder_finish_frame (enc, NULL, -1);
+  }
+
+  return ret;
+}
diff --git a/ext/amrnb/amrnbenc.h b/ext/amrnb/amrnbenc.h
new file mode 100644 (file)
index 0000000..7f673ac
--- /dev/null
@@ -0,0 +1,65 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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_AMRNBENC_H__
+#define __GST_AMRNBENC_H__
+
+#include <gst/gst.h>
+#include <interf_enc.h>
+#include <gst/audio/gstaudioencoder.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_AMRNBENC \
+  (gst_amrnbenc_get_type())
+#define GST_AMRNBENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_AMRNBENC, GstAmrnbEnc))
+#define GST_AMRNBENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_AMRNBENC, GstAmrnbEncClass))
+#define GST_IS_AMRNBENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_AMRNBENC))
+#define GST_IS_AMRNBENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_AMRNBENC))
+
+typedef struct _GstAmrnbEnc GstAmrnbEnc;
+typedef struct _GstAmrnbEncClass GstAmrnbEncClass;
+
+struct _GstAmrnbEnc {
+  GstAudioEncoder element;
+
+  /* library handle */
+  void *handle;
+
+  /* input settings */
+  gint channels, rate;
+  gint duration;
+
+  /* property */
+  enum Mode bandmode;
+};
+
+struct _GstAmrnbEncClass {
+  GstAudioEncoderClass parent_class;
+};
+
+GType gst_amrnbenc_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_AMRNBENC_H__ */
diff --git a/ext/amrwbdec/Makefile.am b/ext/amrwbdec/Makefile.am
new file mode 100644 (file)
index 0000000..2f822f0
--- /dev/null
@@ -0,0 +1,16 @@
+plugin_LTLIBRARIES = libgstamrwbdec.la
+
+libgstamrwbdec_la_SOURCES = \
+       amrwb.c \
+       amrwbdec.c
+
+libgstamrwbdec_la_CFLAGS = -DGST_USE_UNSTABLE_API $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AMRWB_CFLAGS)
+libgstamrwbdec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-@GST_MAJORMINOR@ \
+       $(GST_BASE_LIBS) $(GST_LIBS) $(AMRWB_LIBS)
+libgstamrwbdec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstamrwbdec_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = \
+       amrwbdec.h
diff --git a/ext/amrwbdec/Makefile.in b/ext/amrwbdec/Makefile.in
new file mode 100644 (file)
index 0000000..78a5c0a
--- /dev/null
@@ -0,0 +1,741 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/amrwbdec
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstamrwbdec_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstamrwbdec_la_OBJECTS = libgstamrwbdec_la-amrwb.lo \
+       libgstamrwbdec_la-amrwbdec.lo
+libgstamrwbdec_la_OBJECTS = $(am_libgstamrwbdec_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstamrwbdec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstamrwbdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstamrwbdec_la_CFLAGS) $(CFLAGS) \
+       $(libgstamrwbdec_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstamrwbdec_la_SOURCES)
+DIST_SOURCES = $(libgstamrwbdec_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstamrwbdec.la
+libgstamrwbdec_la_SOURCES = \
+       amrwb.c \
+       amrwbdec.c
+
+libgstamrwbdec_la_CFLAGS = -DGST_USE_UNSTABLE_API $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AMRWB_CFLAGS)
+
+libgstamrwbdec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-@GST_MAJORMINOR@ \
+       $(GST_BASE_LIBS) $(GST_LIBS) $(AMRWB_LIBS)
+
+libgstamrwbdec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstamrwbdec_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = \
+       amrwbdec.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 ext/amrwbdec/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/amrwbdec/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
+libgstamrwbdec.la: $(libgstamrwbdec_la_OBJECTS) $(libgstamrwbdec_la_DEPENDENCIES) $(EXTRA_libgstamrwbdec_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstamrwbdec_la_LINK) -rpath $(plugindir) $(libgstamrwbdec_la_OBJECTS) $(libgstamrwbdec_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstamrwbdec_la-amrwb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstamrwbdec_la-amrwbdec.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstamrwbdec_la-amrwb.lo: amrwb.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrwbdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrwbdec_la_CFLAGS) $(CFLAGS) -MT libgstamrwbdec_la-amrwb.lo -MD -MP -MF $(DEPDIR)/libgstamrwbdec_la-amrwb.Tpo -c -o libgstamrwbdec_la-amrwb.lo `test -f 'amrwb.c' || echo '$(srcdir)/'`amrwb.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstamrwbdec_la-amrwb.Tpo $(DEPDIR)/libgstamrwbdec_la-amrwb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='amrwb.c' object='libgstamrwbdec_la-amrwb.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrwbdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrwbdec_la_CFLAGS) $(CFLAGS) -c -o libgstamrwbdec_la-amrwb.lo `test -f 'amrwb.c' || echo '$(srcdir)/'`amrwb.c
+
+libgstamrwbdec_la-amrwbdec.lo: amrwbdec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrwbdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrwbdec_la_CFLAGS) $(CFLAGS) -MT libgstamrwbdec_la-amrwbdec.lo -MD -MP -MF $(DEPDIR)/libgstamrwbdec_la-amrwbdec.Tpo -c -o libgstamrwbdec_la-amrwbdec.lo `test -f 'amrwbdec.c' || echo '$(srcdir)/'`amrwbdec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstamrwbdec_la-amrwbdec.Tpo $(DEPDIR)/libgstamrwbdec_la-amrwbdec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='amrwbdec.c' object='libgstamrwbdec_la-amrwbdec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstamrwbdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstamrwbdec_la_CFLAGS) $(CFLAGS) -c -o libgstamrwbdec_la-amrwbdec.lo `test -f 'amrwbdec.c' || echo '$(srcdir)/'`amrwbdec.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/amrwbdec/README b/ext/amrwbdec/README
new file mode 100644 (file)
index 0000000..835adef
--- /dev/null
@@ -0,0 +1,6 @@
+Compiling AMRWB decoder:
+========================
+
+To compile the amrwbdec plugin, you need the opencore-amrwb development
+package. If your distribution does not provide this package, you can
+download the source code from "http://sourceforge.net/projects/opencore-amr".
diff --git a/ext/amrwbdec/amrwb.c b/ext/amrwbdec/amrwb.c
new file mode 100644 (file)
index 0000000..5438410
--- /dev/null
@@ -0,0 +1,39 @@
+/* GStreamer Adaptive Multi-Rate Wide-Band (AMR-WB) Decoder plugin
+ * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
+ *
+ * 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 "amrwbdec.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "amrwbdec",
+      GST_RANK_PRIMARY, GST_TYPE_AMRWBDEC);
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "amrwbdec",
+    "Adaptive Multi-Rate Wide-Band Decoder",
+    plugin_init, VERSION, GST_LICENSE_UNKNOWN, GST_PACKAGE_NAME,
+    GST_PACKAGE_ORIGIN);
diff --git a/ext/amrwbdec/amrwbdec.c b/ext/amrwbdec/amrwbdec.c
new file mode 100644 (file)
index 0000000..5335866
--- /dev/null
@@ -0,0 +1,247 @@
+/* GStreamer Adaptive Multi-Rate Narrow-Band (AMR-NB) plugin
+ * Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
+ *
+ * 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-amrwbdec
+ * @see_also: #GstAmrwbEnc
+ *
+ * AMR wideband decoder based on the 
+ * <ulink url="http://sourceforge.net/projects/opencore-amr">opencore codec implementation</ulink>.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch filesrc location=abc.amr ! amrparse ! amrwbdec ! audioresample ! audioconvert ! alsasink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "amrwbdec.h"
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/AMR-WB, "
+        "rate = (int) 16000, " "channels = (int) 1")
+    );
+
+static GstStaticPadTemplate 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, "
+        "signed = (boolean) TRUE, "
+        "endianness = (int) BYTE_ORDER, "
+        "rate = (int) 16000, " "channels = (int) 1")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_amrwbdec_debug);
+#define GST_CAT_DEFAULT gst_amrwbdec_debug
+
+#define L_FRAME16k      320     /* Frame size at 16kHz  */
+
+static const unsigned char block_size[16] =
+    { 18, 24, 33, 37, 41, 47, 51, 59, 61,
+  6, 0, 0, 0, 0, 1, 1
+};
+
+static gboolean gst_amrwbdec_start (GstAudioDecoder * dec);
+static gboolean gst_amrwbdec_stop (GstAudioDecoder * dec);
+static gboolean gst_amrwbdec_set_format (GstAudioDecoder * dec, GstCaps * caps);
+static gboolean gst_amrwbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+    gint * offset, gint * length);
+static GstFlowReturn gst_amrwbdec_handle_frame (GstAudioDecoder * dec,
+    GstBuffer * buffer);
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gst_amrwbdec_debug, "amrwbdec", 0, "AMR-WB audio decoder");
+
+GST_BOILERPLATE_FULL (GstAmrwbDec, gst_amrwbdec, GstAudioDecoder,
+    GST_TYPE_AUDIO_DECODER, _do_init);
+
+static void
+gst_amrwbdec_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+
+  gst_element_class_set_details_simple (element_class, "AMR-WB audio decoder",
+      "Codec/Decoder/Audio",
+      "Adaptive Multi-Rate Wideband audio decoder",
+      "Renato Araujo <renato.filho@indt.org.br>");
+}
+
+static void
+gst_amrwbdec_class_init (GstAmrwbDecClass * klass)
+{
+  GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_amrwbdec_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_amrwbdec_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_amrwbdec_set_format);
+  base_class->parse = GST_DEBUG_FUNCPTR (gst_amrwbdec_parse);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_amrwbdec_handle_frame);
+}
+
+static void
+gst_amrwbdec_init (GstAmrwbDec * amrwbdec, GstAmrwbDecClass * klass)
+{
+}
+
+static gboolean
+gst_amrwbdec_start (GstAudioDecoder * dec)
+{
+  GstAmrwbDec *amrwbdec = GST_AMRWBDEC (dec);
+
+  GST_DEBUG_OBJECT (dec, "start");
+  if (!(amrwbdec->handle = D_IF_init ()))
+    return FALSE;
+
+  amrwbdec->rate = 0;
+  amrwbdec->channels = 0;
+
+  return TRUE;
+}
+
+static gboolean
+gst_amrwbdec_stop (GstAudioDecoder * dec)
+{
+  GstAmrwbDec *amrwbdec = GST_AMRWBDEC (dec);
+
+  GST_DEBUG_OBJECT (dec, "stop");
+  D_IF_exit (amrwbdec->handle);
+
+  return TRUE;
+}
+
+static gboolean
+gst_amrwbdec_set_format (GstAudioDecoder * dec, GstCaps * caps)
+{
+  GstStructure *structure;
+  GstAmrwbDec *amrwbdec;
+  GstCaps *copy;
+
+  amrwbdec = GST_AMRWBDEC (dec);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  /* get channel count */
+  gst_structure_get_int (structure, "channels", &amrwbdec->channels);
+  gst_structure_get_int (structure, "rate", &amrwbdec->rate);
+
+  /* create reverse caps */
+  copy = gst_caps_new_simple ("audio/x-raw-int",
+      "channels", G_TYPE_INT, amrwbdec->channels,
+      "width", G_TYPE_INT, 16,
+      "depth", G_TYPE_INT, 16,
+      "endianness", G_TYPE_INT, G_BYTE_ORDER,
+      "rate", G_TYPE_INT, amrwbdec->rate, "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+  gst_pad_set_caps (GST_AUDIO_DECODER_SRC_PAD (amrwbdec), copy);
+  gst_caps_unref (copy);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_amrwbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
+    gint * offset, gint * length)
+{
+  GstAmrwbDec *amrwbdec = GST_AMRWBDEC (dec);
+  const guint8 *data;
+  guint size;
+  gboolean sync, eos;
+  gint block, mode;
+
+  size = gst_adapter_available (adapter);
+  g_return_val_if_fail (size > 0, GST_FLOW_ERROR);
+
+  gst_audio_decoder_get_parse_state (dec, &sync, &eos);
+
+  /* need to peek data to get the size */
+  if (size < 1)
+    return GST_FLOW_ERROR;
+
+  data = gst_adapter_peek (adapter, 1);
+  mode = (data[0] >> 3) & 0x0F;
+  block = block_size[mode];
+
+  GST_DEBUG_OBJECT (amrwbdec, "mode %d, block %d", mode, block);
+
+  if (block) {
+    if (block > size)
+      return GST_FLOW_UNEXPECTED;
+    *offset = 0;
+    *length = block;
+  } else {
+    /* no frame yet, skip one byte */
+    GST_LOG_OBJECT (amrwbdec, "skipping byte");
+    *offset = 1;
+    return GST_FLOW_UNEXPECTED;
+  }
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_amrwbdec_handle_frame (GstAudioDecoder * dec, GstBuffer * buffer)
+{
+  GstAmrwbDec *amrwbdec;
+  GstBuffer *out;
+  const guint8 *data;
+
+  amrwbdec = GST_AMRWBDEC (dec);
+
+  /* no fancy flushing */
+  if (!buffer || !GST_BUFFER_SIZE (buffer))
+    return GST_FLOW_OK;
+
+  if (amrwbdec->rate == 0 || amrwbdec->channels == 0)
+    goto not_negotiated;
+
+  /* the library seems to write into the source data, hence the copy. */
+  /* should be no problem */
+  data = GST_BUFFER_DATA (buffer);
+
+  /* get output */
+  out = gst_buffer_new_and_alloc (sizeof (gint16) * L_FRAME16k);
+
+  /* decode */
+  D_IF_decode (amrwbdec->handle, (unsigned char *) data,
+      (Word16 *) GST_BUFFER_DATA (out), _good_frame);
+
+  /* send out */
+  return gst_audio_decoder_finish_frame (dec, out, 1);
+
+  /* ERRORS */
+not_negotiated:
+  {
+    GST_ELEMENT_ERROR (amrwbdec, STREAM, TYPE_NOT_FOUND, (NULL),
+        ("Decoder is not initialized"));
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+}
diff --git a/ext/amrwbdec/amrwbdec.h b/ext/amrwbdec/amrwbdec.h
new file mode 100644 (file)
index 0000000..c3528fc
--- /dev/null
@@ -0,0 +1,67 @@
+/* GStreamer Adaptive Multi-Rate Wide-Band (AMR-WB) plugin
+ * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
+ *
+ * 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_AMRWBDEC_H__
+#define __GST_AMRWBDEC_H__
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudiodecoder.h>
+#include <dec_if.h>
+#include <if_rom.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_AMRWBDEC                      \
+  (gst_amrwbdec_get_type())
+#define GST_AMRWBDEC(obj)                                              \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_AMRWBDEC, GstAmrwbDec))
+#define GST_AMRWBDEC_CLASS(klass)                                      \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_AMRWBDEC, GstAmrwbDecClass))
+#define GST_IS_AMRWBDEC(obj)                                   \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_AMRWBDEC))
+#define GST_IS_AMRWBDEC_CLASS(klass)                   \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_AMRWBDEC))
+
+typedef struct _GstAmrwbDec GstAmrwbDec;
+typedef struct _GstAmrwbDecClass GstAmrwbDecClass;
+
+/**
+ * GstAmrwbDec:
+ *
+ * Opaque data structure.
+ */
+struct _GstAmrwbDec {
+  GstAudioDecoder element;
+
+  /* library handle */
+  void *handle;
+
+  /* output settings */
+  gint channels, rate;
+};
+
+struct _GstAmrwbDecClass {
+  GstAudioDecoderClass parent_class;
+};
+
+GType gst_amrwbdec_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_AMRWBDEC_H__ */
diff --git a/ext/cdio/Makefile.am b/ext/cdio/Makefile.am
new file mode 100644 (file)
index 0000000..5db9418
--- /dev/null
@@ -0,0 +1,23 @@
+plugin_LTLIBRARIES = libgstcdio.la
+
+libgstcdio_la_SOURCES = \
+       gstcdio.c \
+       gstcdiocddasrc.c
+
+libgstcdio_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(CDIO_CFLAGS)
+
+libgstcdio_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) -lgstcdda-$(GST_MAJORMINOR) \
+       $(GST_BASE_LIBS) \
+       $(CDIO_LIBS)
+
+libgstcdio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) 
+libgstcdio_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = \
+       gstcdio.h \
+       gstcdiocddasrc.h
diff --git a/ext/cdio/Makefile.in b/ext/cdio/Makefile.in
new file mode 100644 (file)
index 0000000..9669843
--- /dev/null
@@ -0,0 +1,745 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/cdio
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstcdio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstcdio_la_OBJECTS = libgstcdio_la-gstcdio.lo \
+       libgstcdio_la-gstcdiocddasrc.lo
+libgstcdio_la_OBJECTS = $(am_libgstcdio_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstcdio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstcdio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstcdio_la_CFLAGS) $(CFLAGS) \
+       $(libgstcdio_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstcdio_la_SOURCES)
+DIST_SOURCES = $(libgstcdio_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstcdio.la
+libgstcdio_la_SOURCES = \
+       gstcdio.c \
+       gstcdiocddasrc.c
+
+libgstcdio_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(CDIO_CFLAGS)
+
+libgstcdio_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) -lgstcdda-$(GST_MAJORMINOR) \
+       $(GST_BASE_LIBS) \
+       $(CDIO_LIBS)
+
+libgstcdio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) 
+libgstcdio_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = \
+       gstcdio.h \
+       gstcdiocddasrc.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 ext/cdio/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/cdio/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
+libgstcdio.la: $(libgstcdio_la_OBJECTS) $(libgstcdio_la_DEPENDENCIES) $(EXTRA_libgstcdio_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstcdio_la_LINK) -rpath $(plugindir) $(libgstcdio_la_OBJECTS) $(libgstcdio_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcdio_la-gstcdio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcdio_la-gstcdiocddasrc.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstcdio_la-gstcdio.lo: gstcdio.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcdio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcdio_la_CFLAGS) $(CFLAGS) -MT libgstcdio_la-gstcdio.lo -MD -MP -MF $(DEPDIR)/libgstcdio_la-gstcdio.Tpo -c -o libgstcdio_la-gstcdio.lo `test -f 'gstcdio.c' || echo '$(srcdir)/'`gstcdio.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcdio_la-gstcdio.Tpo $(DEPDIR)/libgstcdio_la-gstcdio.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstcdio.c' object='libgstcdio_la-gstcdio.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcdio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcdio_la_CFLAGS) $(CFLAGS) -c -o libgstcdio_la-gstcdio.lo `test -f 'gstcdio.c' || echo '$(srcdir)/'`gstcdio.c
+
+libgstcdio_la-gstcdiocddasrc.lo: gstcdiocddasrc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcdio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcdio_la_CFLAGS) $(CFLAGS) -MT libgstcdio_la-gstcdiocddasrc.lo -MD -MP -MF $(DEPDIR)/libgstcdio_la-gstcdiocddasrc.Tpo -c -o libgstcdio_la-gstcdiocddasrc.lo `test -f 'gstcdiocddasrc.c' || echo '$(srcdir)/'`gstcdiocddasrc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcdio_la-gstcdiocddasrc.Tpo $(DEPDIR)/libgstcdio_la-gstcdiocddasrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstcdiocddasrc.c' object='libgstcdio_la-gstcdiocddasrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcdio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcdio_la_CFLAGS) $(CFLAGS) -c -o libgstcdio_la-gstcdiocddasrc.lo `test -f 'gstcdiocddasrc.c' || echo '$(srcdir)/'`gstcdiocddasrc.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/cdio/gstcdio.c b/ext/cdio/gstcdio.c
new file mode 100644 (file)
index 0000000..8940112
--- /dev/null
@@ -0,0 +1,124 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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 "gstcdio.h"
+#include "gstcdiocddasrc.h"
+
+#include <cdio/logging.h>
+
+GST_DEBUG_CATEGORY (gst_cdio_debug);
+
+void
+gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
+    cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags)
+{
+  const gchar *txt;
+
+  txt = cdtext_get_const (field, cdtext);
+  if (txt == NULL || *txt == '\0') {
+    GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
+    return;
+  }
+
+  /* FIXME: beautify strings (they might be all uppercase for example)? */
+  /* FIXME: what encoding are these strings in? Let's hope ASCII or UTF-8 */
+  if (!g_utf8_validate (txt, -1, NULL)) {
+    GST_WARNING_OBJECT (src, "CD-TEXT string is not UTF-8! (%s)", gst_tag);
+    return;
+  }
+
+  if (*p_tags == NULL)
+    *p_tags = gst_tag_list_new ();
+
+  gst_tag_list_add (*p_tags, GST_TAG_MERGE_REPLACE, gst_tag, txt, NULL);
+
+  GST_DEBUG_OBJECT (src, "CD-TEXT: %s = %s", gst_tag, txt);
+}
+
+GstTagList *
+gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
+{
+  GstTagList *tags = NULL;
+  cdtext_t *t;
+
+  t = cdio_get_cdtext (cdio, track);
+  if (t == NULL) {
+    GST_DEBUG_OBJECT (src, "no CD-TEXT for track %u", track);
+    return NULL;
+  }
+
+  gst_cdio_add_cdtext_field (src, t, CDTEXT_PERFORMER, GST_TAG_ARTIST, &tags);
+  gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_TITLE, &tags);
+
+  return tags;
+}
+
+void
+gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
+{
+  cdtext_t *t;
+
+  t = cdio_get_cdtext (cdio, 0);
+  if (t == NULL) {
+    GST_DEBUG_OBJECT (src, "no CD-TEXT for album");
+    return;
+  }
+
+  /* FIXME: map CDTEXT_PERFORMER to GST_TAG_ALBUM_ARTIST once we have that */
+  gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_ALBUM, &tags);
+  gst_cdio_add_cdtext_field (src, t, CDTEXT_GENRE, GST_TAG_GENRE, &tags);
+
+  GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
+}
+
+static void
+gst_cdio_log_handler (cdio_log_level_t level, const char *msg)
+{
+  const gchar *level_str[] = { "DEBUG", "INFO", "WARN", "ERROR", "ASSERT" };
+  const gchar *s;
+
+  s = level_str[CLAMP (level, 1, G_N_ELEMENTS (level_str)) - 1];
+  GST_DEBUG ("CDIO-%s: %s", s, GST_STR_NULL (msg));
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, "cdiocddasrc", GST_RANK_SECONDARY - 1,
+          GST_TYPE_CDIO_CDDA_SRC))
+    return FALSE;
+
+  cdio_log_set_handler (gst_cdio_log_handler);
+
+  GST_DEBUG_CATEGORY_INIT (gst_cdio_debug, "cdio", 0, "libcdio elements");
+
+  return TRUE;
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "cdio",
+    "Read audio from audio CDs",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/cdio/gstcdio.h b/ext/cdio/gstcdio.h
new file mode 100644 (file)
index 0000000..ef31ed0
--- /dev/null
@@ -0,0 +1,46 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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_CDIO_H__
+#define __GST_CDIO_H__
+
+#include <gst/gst.h>
+#include <cdio/cdio.h>
+#include <cdio/cdtext.h>
+
+GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug);
+#define GST_CAT_DEFAULT gst_cdio_debug
+
+void     gst_cdio_add_cdtext_field (GstObject      * src,
+                                    cdtext_t       * cdtext,
+                                    cdtext_field_t   field,
+                                    const gchar    * gst_tag,
+                                    GstTagList    ** p_tags);
+
+GstTagList  * gst_cdio_get_cdtext  (GstObject      * src,
+                                    CdIo           * cdio,
+                                    track_t          track);
+
+void      gst_cdio_add_cdtext_album_tags (GstObject  * src,
+                                          CdIo       * cdio,
+                                          GstTagList * tags);
+
+#endif /* __GST_CDIO_H__ */
+
diff --git a/ext/cdio/gstcdiocddasrc.c b/ext/cdio/gstcdiocddasrc.c
new file mode 100644 (file)
index 0000000..f57e368
--- /dev/null
@@ -0,0 +1,382 @@
+/* GStreamer
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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-cdiocddasrc
+ * @see_also: GstCdParanoiaSrc, GstCddaBaseSrc
+ *
+ * <refsect2>
+ * <para>
+ * cdiocddasrc reads and extracts raw audio from Audio CDs. It can operate
+ * in one of two modes:
+ * <itemizedlist>
+ *  <listitem><para>
+ *    treat each track as a separate stream, counting time from the start
+ *    of the track to the end of the track and posting EOS at the end of
+ *    a track, or
+ *  </para></listitem>
+ *  <listitem><para>
+ *    treat the entire disc as one stream, counting time from the start of
+ *    the first track to the end of the last track, posting EOS only at
+ *    the end of the last track.
+ *  </para></listitem>
+ * </itemizedlist>
+ * </para>
+ * <para>
+ * With a recent-enough version of libcdio, the element will extract
+ * CD-TEXT if this is supported by the CD-drive and CD-TEXT information
+ * is available on the CD. The information will be posted on the bus in
+ * form of a tag message.
+ * </para>
+ * <para>
+ * When opened, the element will also calculate a CDDB disc ID and a
+ * MusicBrainz disc ID, which applications can use to query online
+ * databases for artist/title information. These disc IDs will also be
+ * posted on the bus as part of the tag messages.
+ * </para>
+ * <para>
+ * cdiocddasrc supports the GstUriHandler interface, so applications can use
+ * playbin with cdda://&lt;track-number&gt; URIs for playback (they will have
+ * to connect to playbin's notify::source signal and set the device on the
+ * cd source in the notify callback if they want to set the device property).
+ * Applications should use seeks in "track" format to switch between different
+ * tracks of the same CD (passing a new cdda:// URI to playbin involves opening
+ * and closing the CD device, which is much slower).
+ * </para>
+ * <title>Example launch line</title>
+ * <para>
+ * <programlisting>
+ * gst-launch cdiocddasrc track=5 device=/dev/cdrom ! audioconvert ! vorbisenc ! oggmux ! filesink location=track5.ogg
+ * </programlisting>
+ * This pipeline extracts track 5 of the audio CD and encodes it into an
+ * Ogg/Vorbis file.
+ * </para>
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstcdio.h"
+#include "gstcdiocddasrc.h"
+
+#include <gst/gst.h>
+#include "gst/gst-i18n-plugin.h"
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#define DEFAULT_READ_SPEED   -1
+
+enum
+{
+  PROP_0 = 0,
+  PROP_READ_SPEED
+};
+
+GST_BOILERPLATE (GstCdioCddaSrc, gst_cdio_cdda_src, GstCddaBaseSrc,
+    GST_TYPE_CDDA_BASE_SRC);
+
+static void gst_cdio_cdda_src_finalize (GObject * obj);
+static void gst_cdio_cdda_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_cdio_cdda_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static gchar *gst_cdio_cdda_src_get_default_device (GstCddaBaseSrc * src);
+static GstBuffer *gst_cdio_cdda_src_read_sector (GstCddaBaseSrc * src,
+    gint sector);
+static gboolean gst_cdio_cdda_src_open (GstCddaBaseSrc * src,
+    const gchar * device);
+static void gst_cdio_cdda_src_close (GstCddaBaseSrc * src);
+
+static void
+gst_cdio_cdda_src_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_set_details_simple (element_class, "CD audio source (CDDA)",
+      "Source/File",
+      "Read audio from CD using libcdio",
+      "Tim-Philipp Müller <tim centricular net>");
+}
+
+static gchar *
+gst_cdio_cdda_src_get_default_device (GstCddaBaseSrc * cddabasesrc)
+{
+  GstCdioCddaSrc *src;
+  gchar *default_device, *ret;
+
+  src = GST_CDIO_CDDA_SRC (cddabasesrc);
+
+  /* src->cdio may be NULL here */
+  default_device = cdio_get_default_device (src->cdio);
+
+  ret = g_strdup (default_device);
+  free (default_device);
+
+  GST_LOG_OBJECT (src, "returning default device: %s", GST_STR_NULL (ret));
+
+  return ret;
+}
+
+static gchar **
+gst_cdio_cdda_src_probe_devices (GstCddaBaseSrc * cddabasesrc)
+{
+  char **devices, **ret, **d;
+
+  /* FIXME: might return the same hardware device twice, e.g.
+   * as /dev/cdrom and /dev/dvd - gotta do something more sophisticated */
+  devices = cdio_get_devices (DRIVER_DEVICE);
+
+  if (devices == NULL)
+    goto no_devices;
+
+  if (*devices == NULL)
+    goto empty_devices;
+
+  ret = g_strdupv (devices);
+  for (d = devices; *d != NULL; ++d) {
+    GST_DEBUG_OBJECT (cddabasesrc, "device: %s", GST_STR_NULL (*d));
+    free (*d);
+  }
+  free (devices);
+
+  return ret;
+
+  /* ERRORS */
+no_devices:
+  {
+    GST_DEBUG_OBJECT (cddabasesrc, "no devices found");
+    return NULL;
+  }
+empty_devices:
+  {
+    GST_DEBUG_OBJECT (cddabasesrc, "empty device list found");
+    free (devices);
+    return NULL;
+  }
+}
+
+static GstBuffer *
+gst_cdio_cdda_src_read_sector (GstCddaBaseSrc * cddabasesrc, gint sector)
+{
+  GstCdioCddaSrc *src;
+  GstBuffer *buf;
+
+  src = GST_CDIO_CDDA_SRC (cddabasesrc);
+
+  /* can't use pad_alloc because we can't return the GstFlowReturn */
+  buf = gst_buffer_new_and_alloc (CDIO_CD_FRAMESIZE_RAW);
+
+  if (cdio_read_audio_sector (src->cdio, GST_BUFFER_DATA (buf), sector) != 0)
+    goto read_failed;
+
+  return buf;
+
+  /* ERRORS */
+read_failed:
+  {
+    GST_WARNING_OBJECT (src, "read at sector %d failed!", sector);
+    GST_ELEMENT_ERROR (src, RESOURCE, READ,
+        (_("Could not read from CD.")),
+        ("cdio_read_audio_sector at %d failed: %s", sector,
+            g_strerror (errno)));
+    gst_buffer_unref (buf);
+    return NULL;
+  }
+}
+
+static gboolean
+notcdio_track_is_audio_track (const CdIo * p_cdio, track_t i_track)
+{
+  return (cdio_get_track_format (p_cdio, i_track) == TRACK_FORMAT_AUDIO);
+}
+
+static gboolean
+gst_cdio_cdda_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
+{
+  GstCdioCddaSrc *src;
+  discmode_t discmode;
+  gint first_track, num_tracks, i;
+
+  src = GST_CDIO_CDDA_SRC (cddabasesrc);
+
+  g_assert (device != NULL);
+  g_assert (src->cdio == NULL);
+
+  GST_LOG_OBJECT (src, "trying to open device %s", device);
+
+  if (!(src->cdio = cdio_open (device, DRIVER_UNKNOWN)))
+    goto open_failed;
+
+  discmode = cdio_get_discmode (src->cdio);
+  GST_LOG_OBJECT (src, "discmode: %d", (gint) discmode);
+
+  if (discmode != CDIO_DISC_MODE_CD_DA && discmode != CDIO_DISC_MODE_CD_MIXED)
+    goto not_audio;
+
+  first_track = cdio_get_first_track_num (src->cdio);
+  num_tracks = cdio_get_num_tracks (src->cdio);
+
+  if (num_tracks <= 0 || first_track < 0)
+    return TRUE;                /* base class will generate 'has no tracks' error */
+
+  if (src->read_speed != -1)
+    cdio_set_speed (src->cdio, src->read_speed);
+
+  gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
+      cddabasesrc->tags);
+
+  GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
+
+  for (i = 0; i < num_tracks; ++i) {
+    GstCddaBaseSrcTrack track = { 0, };
+    gint len_sectors;
+
+    len_sectors = cdio_get_track_sec_count (src->cdio, i + first_track);
+
+    track.num = i + first_track;
+    track.is_audio = notcdio_track_is_audio_track (src->cdio, i + first_track);
+
+    /* Note: LSN/LBA confusion all around us; in any case, this does
+     * the right thing here (for cddb id calculations etc. as well) */
+    track.start = cdio_get_track_lsn (src->cdio, i + first_track);
+    track.end = track.start + len_sectors - 1;  /* -1? */
+    track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), src->cdio,
+        i + first_track);
+
+    gst_cdda_base_src_add_track (GST_CDDA_BASE_SRC (src), &track);
+  }
+  return TRUE;
+
+  /* ERRORS */
+open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open CD device for reading.")),
+        ("cdio_open() failed: %s", g_strerror (errno)));
+    return FALSE;
+  }
+not_audio:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Disc is not an Audio CD.")), ("discmode: %d", (gint) discmode));
+
+    cdio_destroy (src->cdio);
+    src->cdio = NULL;
+    return FALSE;
+  }
+}
+
+static void
+gst_cdio_cdda_src_close (GstCddaBaseSrc * cddabasesrc)
+{
+  GstCdioCddaSrc *src = GST_CDIO_CDDA_SRC (cddabasesrc);
+
+  if (src->cdio) {
+    cdio_destroy (src->cdio);
+    src->cdio = NULL;
+  }
+}
+
+static void
+gst_cdio_cdda_src_init (GstCdioCddaSrc * src, GstCdioCddaSrcClass * klass)
+{
+  src->read_speed = DEFAULT_READ_SPEED; /* don't need atomic access here */
+  src->cdio = NULL;
+}
+
+static void
+gst_cdio_cdda_src_finalize (GObject * obj)
+{
+  GstCdioCddaSrc *src = GST_CDIO_CDDA_SRC (obj);
+
+  if (src->cdio) {
+    cdio_destroy (src->cdio);
+    src->cdio = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_cdio_cdda_src_class_init (GstCdioCddaSrcClass * klass)
+{
+  GstCddaBaseSrcClass *cddabasesrc_class = GST_CDDA_BASE_SRC_CLASS (klass);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = gst_cdio_cdda_src_set_property;
+  gobject_class->get_property = gst_cdio_cdda_src_get_property;
+  gobject_class->finalize = gst_cdio_cdda_src_finalize;
+
+  cddabasesrc_class->open = gst_cdio_cdda_src_open;
+  cddabasesrc_class->close = gst_cdio_cdda_src_close;
+  cddabasesrc_class->read_sector = gst_cdio_cdda_src_read_sector;
+  cddabasesrc_class->probe_devices = gst_cdio_cdda_src_probe_devices;
+  cddabasesrc_class->get_default_device = gst_cdio_cdda_src_get_default_device;
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_READ_SPEED,
+      g_param_spec_int ("read-speed", "Read speed",
+          "Read from device at the specified speed (-1 = default)", -1, 100,
+          DEFAULT_READ_SPEED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_cdio_cdda_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstCdioCddaSrc *src = GST_CDIO_CDDA_SRC (object);
+
+  switch (prop_id) {
+    case PROP_READ_SPEED:{
+      gint speed;
+
+      speed = g_value_get_int (value);
+      g_atomic_int_set (&src->read_speed, speed);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_cdio_cdda_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstCdioCddaSrc *src = GST_CDIO_CDDA_SRC (object);
+
+  switch (prop_id) {
+    case PROP_READ_SPEED:{
+      gint speed;
+
+      speed = g_atomic_int_get (&src->read_speed);
+      g_value_set_int (value, speed);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
diff --git a/ext/cdio/gstcdiocddasrc.h b/ext/cdio/gstcdiocddasrc.h
new file mode 100644 (file)
index 0000000..29ec8d6
--- /dev/null
@@ -0,0 +1,52 @@
+/* GStreamer
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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_CDIO_CDDA_SRC_H__
+#define __GST_CDIO_CDDA_SRC_H__
+
+#include <gst/cdda/gstcddabasesrc.h>
+#include <cdio/cdio.h>
+
+#define GST_TYPE_CDIO_CDDA_SRC            (gst_cdio_cdda_src_get_type ())
+#define GST_CDIO_CDDA_SRC(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_CDIO_CDDA_SRC, GstCdioCddaSrc))
+#define GST_CDIO_CDDA_SRC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  GST_TYPE_CDIO_CDDA_SRC, GstCdioCddaSrcClass))
+#define GST_IS_CDIO_CDDA_SRC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_CDIO_CDDA_SRC))
+#define GST_IS_CDIO_CDDA_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  GST_TYPE_CDIO_CDDA_SRC))
+
+typedef struct _GstCdioCddaSrc GstCdioCddaSrc;
+typedef struct _GstCdioCddaSrcClass GstCdioCddaSrcClass;
+
+struct _GstCdioCddaSrc
+{
+  GstCddaBaseSrc cddabasesrc;
+
+  gint           read_speed;    /* ATOMIC */
+
+  CdIo          *cdio;          /* NULL if not open */
+};
+
+struct _GstCdioCddaSrcClass
+{
+  GstCddaBaseSrcClass  cddabasesrc_class;
+};
+
+GType   gst_cdio_cdda_src_get_type (void);
+
+#endif /* __GST_CDIO_CDDA_SRC_H__ */
+
diff --git a/ext/dvdread/Makefile.am b/ext/dvdread/Makefile.am
new file mode 100644 (file)
index 0000000..e3bfa82
--- /dev/null
@@ -0,0 +1,11 @@
+plugin_LTLIBRARIES = libgstdvdread.la
+
+libgstdvdread_la_SOURCES = dvdreadsrc.c
+libgstdvdread_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(DVDREAD_CFLAGS)
+libgstdvdread_la_LIBADD = $(GST_BASE_LIBS) $(DVDREAD_LIBS)
+libgstdvdread_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdread_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = dvdreadsrc.h
+
+EXTRA_DIST = README demo-play
diff --git a/ext/dvdread/Makefile.in b/ext/dvdread/Makefile.in
new file mode 100644 (file)
index 0000000..f09c017
--- /dev/null
@@ -0,0 +1,722 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/dvdread
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstdvdread_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstdvdread_la_OBJECTS = libgstdvdread_la-dvdreadsrc.lo
+libgstdvdread_la_OBJECTS = $(am_libgstdvdread_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstdvdread_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstdvdread_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstdvdread_la_CFLAGS) $(CFLAGS) \
+       $(libgstdvdread_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstdvdread_la_SOURCES)
+DIST_SOURCES = $(libgstdvdread_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstdvdread.la
+libgstdvdread_la_SOURCES = dvdreadsrc.c
+libgstdvdread_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(DVDREAD_CFLAGS)
+libgstdvdread_la_LIBADD = $(GST_BASE_LIBS) $(DVDREAD_LIBS)
+libgstdvdread_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdread_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = dvdreadsrc.h
+EXTRA_DIST = README demo-play
+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 ext/dvdread/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/dvdread/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
+libgstdvdread.la: $(libgstdvdread_la_OBJECTS) $(libgstdvdread_la_DEPENDENCIES) $(EXTRA_libgstdvdread_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstdvdread_la_LINK) -rpath $(plugindir) $(libgstdvdread_la_OBJECTS) $(libgstdvdread_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdvdread_la-dvdreadsrc.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstdvdread_la-dvdreadsrc.lo: dvdreadsrc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdread_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdread_la_CFLAGS) $(CFLAGS) -MT libgstdvdread_la-dvdreadsrc.lo -MD -MP -MF $(DEPDIR)/libgstdvdread_la-dvdreadsrc.Tpo -c -o libgstdvdread_la-dvdreadsrc.lo `test -f 'dvdreadsrc.c' || echo '$(srcdir)/'`dvdreadsrc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdvdread_la-dvdreadsrc.Tpo $(DEPDIR)/libgstdvdread_la-dvdreadsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dvdreadsrc.c' object='libgstdvdread_la-dvdreadsrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdread_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdread_la_CFLAGS) $(CFLAGS) -c -o libgstdvdread_la-dvdreadsrc.lo `test -f 'dvdreadsrc.c' || echo '$(srcdir)/'`dvdreadsrc.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/dvdread/README b/ext/dvdread/README
new file mode 100644 (file)
index 0000000..acf8d08
--- /dev/null
@@ -0,0 +1,5 @@
+Various Info
+============
+
+http://members.aol.com/mpucoder/DVD/index.html
+http://dvd.sourceforge.net/
diff --git a/ext/dvdread/demo-play b/ext/dvdread/demo-play
new file mode 100755 (executable)
index 0000000..1def730
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+AUDIOSINK=`gconftool-2 -g /system/gstreamer/0.8/default/audiosink`
+VIDEOSINK=`gconftool-2 -g /system/gstreamer/0.8/default/videosink`
+gst-launch dvdreadsrc ! dvddemux name=demux .video_00 ! \
+       { queue ! mpeg2dec ! ffmpegcolorspace ! videoscale ! $VIDEOSINK } \
+       { demux.audio_00 ! queue ! a52dec ! audioconvert ! audioscale ! $AUDIOSINK }
diff --git a/ext/dvdread/dvdreadsrc.c b/ext/dvdread/dvdreadsrc.c
new file mode 100644 (file)
index 0000000..9877f07
--- /dev/null
@@ -0,0 +1,1801 @@
+/* GStreamer DVD title source
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) 2001 Billy Biggs <vektor@dumbterm.net>.
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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 "_stdint.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "dvdreadsrc.h"
+
+#include <gst/gst-i18n-plugin.h>
+
+GST_DEBUG_CATEGORY_STATIC (gstgst_dvd_read_src_debug);
+#define GST_CAT_DEFAULT (gstgst_dvd_read_src_debug)
+
+static void gst_dvd_read_src_do_init (GType dvdreadsrc_type);
+
+enum
+{
+  ARG_0,
+  ARG_DEVICE,
+  ARG_TITLE,
+  ARG_CHAPTER,
+  ARG_ANGLE
+};
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, mpegversion=2, systemstream=(boolean)true"));
+
+static GstFormat title_format;
+static GstFormat angle_format;
+static GstFormat sector_format;
+static GstFormat chapter_format;
+
+static gboolean gst_dvd_read_src_start (GstBaseSrc * basesrc);
+static gboolean gst_dvd_read_src_stop (GstBaseSrc * basesrc);
+static GstFlowReturn gst_dvd_read_src_create (GstPushSrc * pushsrc,
+    GstBuffer ** buf);
+static gboolean gst_dvd_read_src_src_query (GstBaseSrc * basesrc,
+    GstQuery * query);
+static gboolean gst_dvd_read_src_src_event (GstBaseSrc * basesrc,
+    GstEvent * event);
+static gboolean gst_dvd_read_src_goto_title (GstDvdReadSrc * src, gint title,
+    gint angle);
+static gboolean gst_dvd_read_src_goto_chapter (GstDvdReadSrc * src,
+    gint chapter);
+static gboolean gst_dvd_read_src_goto_sector (GstDvdReadSrc * src, gint angle);
+static void gst_dvd_read_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_dvd_read_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static GstEvent *gst_dvd_read_src_make_clut_change_event (GstDvdReadSrc * src,
+    const guint * clut);
+static gboolean gst_dvd_read_src_get_size (GstDvdReadSrc * src, gint64 * size);
+static gboolean gst_dvd_read_src_do_seek (GstBaseSrc * src, GstSegment * s);
+static gint64 gst_dvd_read_src_convert_timecode (dvd_time_t * time);
+static gint gst_dvd_read_src_get_next_cell (GstDvdReadSrc * src,
+    pgc_t * pgc, gint cell);
+static GstClockTime gst_dvd_read_src_get_time_for_sector (GstDvdReadSrc * src,
+    guint sector);
+static gint gst_dvd_read_src_get_sector_from_time (GstDvdReadSrc * src,
+    GstClockTime ts);
+
+GST_BOILERPLATE_FULL (GstDvdReadSrc, gst_dvd_read_src, GstPushSrc,
+    GST_TYPE_PUSH_SRC, gst_dvd_read_src_do_init);
+
+static void
+gst_dvd_read_src_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
+
+  gst_element_class_set_details_simple (element_class, "DVD Source",
+      "Source/File/DVD",
+      "Access a DVD title/chapter/angle using libdvdread",
+      "Erik Walthinsen <omega@cse.ogi.edu>");
+}
+
+static void
+gst_dvd_read_src_finalize (GObject * object)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (object);
+
+  g_free (src->location);
+  g_free (src->last_uri);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_dvd_read_src_init (GstDvdReadSrc * src, GstDvdReadSrcClass * klass)
+{
+  src->dvd = NULL;
+  src->vts_file = NULL;
+  src->vmg_file = NULL;
+  src->dvd_title = NULL;
+
+  src->location = g_strdup ("/dev/dvd");
+  src->last_uri = NULL;
+  src->new_seek = TRUE;
+  src->new_cell = TRUE;
+  src->change_cell = FALSE;
+  src->uri_title = 1;
+  src->uri_chapter = 1;
+  src->uri_angle = 1;
+
+  src->title_lang_event_pending = NULL;
+  src->pending_clut_event = NULL;
+
+  gst_pad_use_fixed_caps (GST_BASE_SRC_PAD (src));
+  gst_pad_set_caps (GST_BASE_SRC_PAD (src),
+      gst_static_pad_template_get_caps (&srctemplate));
+}
+
+static gboolean
+gst_dvd_read_src_is_seekable (GstBaseSrc * src)
+{
+  return TRUE;
+}
+
+static void
+gst_dvd_read_src_class_init (GstDvdReadSrcClass * klass)
+{
+  GstPushSrcClass *gstpushsrc_class = GST_PUSH_SRC_CLASS (klass);
+  GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->finalize = gst_dvd_read_src_finalize;
+  gobject_class->set_property = gst_dvd_read_src_set_property;
+  gobject_class->get_property = gst_dvd_read_src_get_property;
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE,
+      g_param_spec_string ("device", "Device",
+          "DVD device location", NULL,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TITLE,
+      g_param_spec_int ("title", "title", "title",
+          1, 999, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CHAPTER,
+      g_param_spec_int ("chapter", "chapter", "chapter",
+          1, 999, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ANGLE,
+      g_param_spec_int ("angle", "angle", "angle",
+          1, 999, 1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_dvd_read_src_start);
+  gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dvd_read_src_stop);
+  gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_query);
+  gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dvd_read_src_src_event);
+  gstbasesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_dvd_read_src_do_seek);
+  gstbasesrc_class->is_seekable =
+      GST_DEBUG_FUNCPTR (gst_dvd_read_src_is_seekable);
+
+  gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_dvd_read_src_create);
+}
+
+static gboolean
+gst_dvd_read_src_start (GstBaseSrc * basesrc)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (basesrc);
+
+  g_return_val_if_fail (src->location != NULL, FALSE);
+
+  GST_DEBUG_OBJECT (src, "Opening DVD '%s'", src->location);
+
+  if ((src->dvd = DVDOpen (src->location)) == NULL)
+    goto open_failed;
+
+  /* Load the video manager to find out the information about the titles */
+  GST_DEBUG_OBJECT (src, "Loading VMG info");
+
+  if (!(src->vmg_file = ifoOpen (src->dvd, 0)))
+    goto ifo_open_failed;
+
+  src->tt_srpt = src->vmg_file->tt_srpt;
+
+  src->title = src->uri_title - 1;
+  src->chapter = src->uri_chapter - 1;
+  src->angle = src->uri_angle - 1;
+
+  if (!gst_dvd_read_src_goto_title (src, src->title, src->angle))
+    goto title_open_failed;
+
+  if (!gst_dvd_read_src_goto_chapter (src, src->chapter))
+    goto chapter_open_failed;
+
+  src->new_seek = FALSE;
+  src->change_cell = TRUE;
+
+  return TRUE;
+
+  /* ERRORS */
+open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD")),
+        ("DVDOpen(%s) failed: %s", src->location, g_strerror (errno)));
+    return FALSE;
+  }
+ifo_open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD")),
+        ("ifoOpen() failed: %s", g_strerror (errno)));
+    return FALSE;
+  }
+title_open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD title %d"), src->uri_title), (NULL));
+    return FALSE;
+  }
+chapter_open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Failed to go to chapter %d of DVD title %d"),
+            src->uri_chapter, src->uri_title), (NULL));
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_dvd_read_src_stop (GstBaseSrc * basesrc)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (basesrc);
+
+  if (src->vts_file) {
+    ifoClose (src->vts_file);
+    src->vts_file = NULL;
+  }
+  if (src->vmg_file) {
+    ifoClose (src->vmg_file);
+    src->vmg_file = NULL;
+  }
+  if (src->dvd_title) {
+    DVDCloseFile (src->dvd_title);
+    src->dvd_title = NULL;
+  }
+  if (src->dvd) {
+    DVDClose (src->dvd);
+    src->dvd = NULL;
+  }
+  src->new_cell = TRUE;
+  src->new_seek = TRUE;
+  src->change_cell = FALSE;
+  src->chapter = 0;
+  src->title = 0;
+  src->need_newsegment = TRUE;
+  src->vts_tmapt = NULL;
+  if (src->title_lang_event_pending) {
+    gst_event_unref (src->title_lang_event_pending);
+    src->title_lang_event_pending = NULL;
+  }
+  if (src->pending_clut_event) {
+    gst_event_unref (src->pending_clut_event);
+    src->pending_clut_event = NULL;
+  }
+  if (src->chapter_starts) {
+    g_free (src->chapter_starts);
+    src->chapter_starts = NULL;
+  }
+
+  GST_LOG_OBJECT (src, "closed DVD");
+
+  return TRUE;
+}
+
+static void
+cur_title_get_chapter_pgc (GstDvdReadSrc * src, gint chapter, gint * p_pgn,
+    gint * p_pgc_id, pgc_t ** p_pgc)
+{
+  pgc_t *pgc;
+  gint pgn, pgc_id;
+
+  g_assert (chapter >= 0 && chapter < src->num_chapters);
+
+  pgc_id = src->vts_ptt_srpt->title[src->ttn - 1].ptt[chapter].pgcn;
+  pgn = src->vts_ptt_srpt->title[src->ttn - 1].ptt[chapter].pgn;
+  pgc = src->vts_file->vts_pgcit->pgci_srp[pgc_id - 1].pgc;
+
+  *p_pgn = pgn;
+  *p_pgc_id = pgc_id;
+  *p_pgc = pgc;
+}
+
+static void
+cur_title_get_chapter_bounds (GstDvdReadSrc * src, gint chapter,
+    gint * p_first_cell, gint * p_last_cell)
+{
+  pgc_t *pgc;
+  gint pgn, pgc_id, pgn_next_ch;
+
+  g_assert (chapter >= 0 && chapter < src->num_chapters);
+
+  cur_title_get_chapter_pgc (src, chapter, &pgn, &pgc_id, &pgc);
+
+  *p_first_cell = pgc->program_map[pgn - 1] - 1;
+
+  if (chapter == (src->num_chapters - 1)) {
+    *p_last_cell = pgc->nr_of_cells - 1;
+  } else {
+    pgn_next_ch = src->vts_ptt_srpt->title[src->ttn - 1].ptt[chapter + 1].pgn;
+    *p_last_cell = pgc->program_map[pgn_next_ch - 1] - 1;
+  }
+
+  GST_DEBUG_OBJECT (src, "Chapter %d bounds: %d %d (within %d cells)",
+      chapter, *p_first_cell, *p_last_cell, pgc->nr_of_cells);
+}
+
+static gboolean
+gst_dvd_read_src_goto_chapter (GstDvdReadSrc * src, gint chapter)
+{
+  gint i;
+
+  /* make sure the chapter number is valid for this title */
+  if (chapter < 0 || chapter >= src->num_chapters) {
+    GST_WARNING_OBJECT (src, "invalid chapter %d (only %d available)",
+        chapter, src->num_chapters);
+    chapter = CLAMP (chapter, 0, src->num_chapters - 1);
+  }
+
+  /* determine which program chain we want to watch. This is
+   * based on the chapter number */
+  cur_title_get_chapter_pgc (src, chapter, &src->pgn, &src->pgc_id,
+      &src->cur_pgc);
+  cur_title_get_chapter_bounds (src, chapter, &src->start_cell,
+      &src->last_cell);
+
+  GST_LOG_OBJECT (src, "Opened chapter %d - cell %d-%d", chapter + 1,
+      src->start_cell, src->last_cell);
+
+  /* retrieve position */
+  src->cur_pack = 0;
+  for (i = 0; i < chapter; i++) {
+    gint c1, c2;
+
+    cur_title_get_chapter_bounds (src, i, &c1, &c2);
+
+    while (c1 < c2) {
+      src->cur_pack +=
+          src->cur_pgc->cell_playback[c1].last_sector -
+          src->cur_pgc->cell_playback[c1].first_sector;
+      ++c1;
+    }
+  }
+
+  /* prepare reading for new cell */
+  src->new_cell = TRUE;
+  src->next_cell = src->start_cell;
+
+  src->chapter = chapter;
+
+  if (src->pending_clut_event)
+    gst_event_unref (src->pending_clut_event);
+
+  src->pending_clut_event =
+      gst_dvd_read_src_make_clut_change_event (src, src->cur_pgc->palette);
+
+  return TRUE;
+}
+
+static void
+gst_dvd_read_src_get_chapter_starts (GstDvdReadSrc * src)
+{
+  GstClockTime uptohere;
+  guint c;
+
+  g_free (src->chapter_starts);
+  src->chapter_starts = g_new (GstClockTime, src->num_chapters);
+
+  uptohere = (GstClockTime) 0;
+  for (c = 0; c < src->num_chapters; ++c) {
+    GstClockTime chapter_duration = 0;
+    gint cell_start, cell_end, cell;
+    gint pgn, pgc_id;
+    pgc_t *pgc;
+
+    cur_title_get_chapter_pgc (src, c, &pgn, &pgc_id, &pgc);
+    cur_title_get_chapter_bounds (src, c, &cell_start, &cell_end);
+
+    cell = cell_start;
+    while (cell < cell_end) {
+      dvd_time_t *cell_duration;
+
+      cell_duration = &pgc->cell_playback[cell].playback_time;
+      chapter_duration += gst_dvd_read_src_convert_timecode (cell_duration);
+      cell = gst_dvd_read_src_get_next_cell (src, pgc, cell);
+    }
+
+    src->chapter_starts[c] = uptohere;
+
+    GST_INFO_OBJECT (src, "[%02u] Chapter %02u starts at %" GST_TIME_FORMAT
+        ", dur = %" GST_TIME_FORMAT ", cells %d-%d", src->title + 1, c + 1,
+        GST_TIME_ARGS (uptohere), GST_TIME_ARGS (chapter_duration),
+        cell_start, cell_end);
+
+    uptohere += chapter_duration;
+  }
+}
+
+static gboolean
+gst_dvd_read_src_goto_title (GstDvdReadSrc * src, gint title, gint angle)
+{
+  GstStructure *s;
+  gchar lang_code[3] = { '\0', '\0', '\0' }, *t;
+  pgc_t *pgc0;
+  gint title_set_nr;
+  gint num_titles;
+  gint pgn0, pgc0_id;
+  gint i;
+
+  /* make sure our title number is valid */
+  num_titles = src->tt_srpt->nr_of_srpts;
+  GST_INFO_OBJECT (src, "There are %d titles on this DVD", num_titles);
+  if (title < 0 || title >= num_titles)
+    goto invalid_title;
+
+  src->num_chapters = src->tt_srpt->title[title].nr_of_ptts;
+  GST_INFO_OBJECT (src, "Title %d has %d chapters", title + 1,
+      src->num_chapters);
+
+  /* make sure the angle number is valid for this title */
+  src->num_angles = src->tt_srpt->title[title].nr_of_angles;
+  GST_LOG_OBJECT (src, "Title %d has %d angles", title + 1, src->num_angles);
+  if (angle < 0 || angle >= src->num_angles) {
+    GST_WARNING_OBJECT (src, "Invalid angle %d (only %d available)",
+        angle, src->num_angles);
+    angle = CLAMP (angle, 0, src->num_angles - 1);
+  }
+
+  /* load the VTS information for the title set our title is in */
+  title_set_nr = src->tt_srpt->title[title].title_set_nr;
+  src->vts_file = ifoOpen (src->dvd, title_set_nr);
+  if (src->vts_file == NULL)
+    goto ifo_open_failed;
+
+  src->ttn = src->tt_srpt->title[title].vts_ttn;
+  src->vts_ptt_srpt = src->vts_file->vts_ptt_srpt;
+
+  /* interactive title? */
+  if (src->num_chapters > 0 &&
+      src->vts_ptt_srpt->title[src->ttn - 1].ptt[0].pgn == 0) {
+    goto commands_only_pgc;
+  }
+
+  /* we've got enough info, time to open the title set data */
+  src->dvd_title = DVDOpenFile (src->dvd, title_set_nr, DVD_READ_TITLE_VOBS);
+  if (src->dvd_title == NULL)
+    goto title_open_failed;
+
+  GST_INFO_OBJECT (src, "Opened title %d, angle %d", title + 1, angle);
+  src->title = title;
+  src->angle = angle;
+
+  /* build event */
+
+  if (src->title_lang_event_pending) {
+    gst_event_unref (src->title_lang_event_pending);
+    src->title_lang_event_pending = NULL;
+  }
+
+  s = gst_structure_new ("application/x-gst-dvd",
+      "event", G_TYPE_STRING, "dvd-lang-codes", NULL);
+
+  /* so we can filter out invalid/unused streams (same for all chapters) */
+  cur_title_get_chapter_pgc (src, 0, &pgn0, &pgc0_id, &pgc0);
+
+  /* audio */
+  for (i = 0; i < src->vts_file->vtsi_mat->nr_of_vts_audio_streams; i++) {
+    const audio_attr_t *a;
+
+    /* audio stream present? */
+    if (pgc0 != NULL && (pgc0->audio_control[i] & 0x8000) == 0)
+      continue;
+
+    a = &src->vts_file->vtsi_mat->vts_audio_attr[i];
+
+    t = g_strdup_printf ("audio-%d-format", i);
+    gst_structure_set (s, t, G_TYPE_INT, (int) a->audio_format, NULL);
+    g_free (t);
+
+    if (a->lang_type) {
+      t = g_strdup_printf ("audio-%d-language", i);
+      lang_code[0] = (a->lang_code >> 8) & 0xff;
+      lang_code[1] = a->lang_code & 0xff;
+      gst_structure_set (s, t, G_TYPE_STRING, lang_code, NULL);
+      g_free (t);
+    } else {
+      lang_code[0] = '\0';
+    }
+
+    GST_INFO_OBJECT (src, "[%02d] Audio    %02d: lang='%s', format=%d",
+        src->title + 1, i, lang_code, (gint) a->audio_format);
+  }
+
+  /* subtitle */
+  for (i = 0; i < src->vts_file->vtsi_mat->nr_of_vts_subp_streams; i++) {
+    const subp_attr_t *u;
+    const video_attr_t *v;
+    gint sid;
+
+    /* subpicture stream present? */
+    if (pgc0 != NULL && (pgc0->subp_control[i] & 0x80000000) == 0)
+      continue;
+
+    u = &src->vts_file->vtsi_mat->vts_subp_attr[i];
+    v = &src->vts_file->vtsi_mat->vts_video_attr;
+
+    sid = i;
+    if (pgc0 != NULL) {
+      if (v->display_aspect_ratio == 0)         /* 4:3 */
+        sid = (pgc0->subp_control[i] >> 24) & 0x1f;
+      else if (v->display_aspect_ratio == 3)    /* 16:9 */
+        sid = (pgc0->subp_control[i] >> 8) & 0x1f;
+    }
+
+    if (u->type) {
+      t = g_strdup_printf ("subtitle-%d-language", sid);
+      lang_code[0] = (u->lang_code >> 8) & 0xff;
+      lang_code[1] = u->lang_code & 0xff;
+      gst_structure_set (s, t, G_TYPE_STRING, lang_code, NULL);
+      g_free (t);
+    } else {
+      lang_code[0] = '\0';
+    }
+
+    GST_INFO_OBJECT (src, "[%02d] Subtitle %02d: lang='%s', type=%d",
+        src->title + 1, sid, lang_code, u->type);
+  }
+
+  src->title_lang_event_pending =
+      gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, s);
+
+  /* dump seek tables */
+  src->vts_tmapt = src->vts_file->vts_tmapt;
+  if (src->vts_tmapt) {
+    gint i, j;
+
+    GST_LOG_OBJECT (src, "nr_of_tmaps = %d", src->vts_tmapt->nr_of_tmaps);
+    for (i = 0; i < src->vts_tmapt->nr_of_tmaps; ++i) {
+      GST_LOG_OBJECT (src, "======= Table %d ===================", i);
+      GST_LOG_OBJECT (src, "Offset relative to VTS_TMAPTI: %d",
+          src->vts_tmapt->tmap_offset[i]);
+      GST_LOG_OBJECT (src, "Time unit (seconds)          : %d",
+          src->vts_tmapt->tmap[i].tmu);
+      GST_LOG_OBJECT (src, "Number of entries            : %d",
+          src->vts_tmapt->tmap[i].nr_of_entries);
+      for (j = 0; j < src->vts_tmapt->tmap[i].nr_of_entries; j++) {
+        guint64 time;
+
+        time = src->vts_tmapt->tmap[i].tmu * (j + 1) * GST_SECOND;
+        GST_LOG_OBJECT (src, "Time: %" GST_TIME_FORMAT " VOBU "
+            "Sector: 0x%08x %s", GST_TIME_ARGS (time),
+            src->vts_tmapt->tmap[i].map_ent[j] & 0x7fffffff,
+            (src->vts_tmapt->tmap[i].map_ent[j] >> 31) ? "discontinuity" : "");
+      }
+    }
+  } else {
+    GST_WARNING_OBJECT (src, "no vts_tmapt - seeking will suck");
+  }
+
+  gst_dvd_read_src_get_chapter_starts (src);
+
+  return TRUE;
+
+  /* ERRORS */
+invalid_title:
+  {
+    GST_WARNING_OBJECT (src, "Invalid title %d (only %d available)",
+        title, num_titles);
+    return FALSE;
+  }
+ifo_open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD title %d"), title_set_nr),
+        ("ifoOpen(%d) failed: %s", title_set_nr, g_strerror (errno)));
+    return FALSE;
+  }
+title_open_failed:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD title %d"), title_set_nr),
+        ("Can't open title VOBS (VTS_%02d_1.VOB)", title_set_nr));
+    return FALSE;
+  }
+commands_only_pgc:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ,
+        (_("Could not open DVD title %d. Interactive titles are not supported "
+                "by this element"), title_set_nr),
+        ("Commands-only PGC, not supported, use rsndvdbin"));
+    return FALSE;
+  }
+}
+
+/* FIXME: double-check this function, compare against original */
+static gint
+gst_dvd_read_src_get_next_cell (GstDvdReadSrc * src, pgc_t * pgc, gint cell)
+{
+  /* Check if we're entering an angle block. */
+  if (pgc->cell_playback[cell].block_type != BLOCK_TYPE_ANGLE_BLOCK)
+    return (cell + 1);
+
+  while (pgc->cell_playback[cell].block_mode != BLOCK_MODE_LAST_CELL)
+    ++cell;
+
+  return cell + 1;
+}
+
+/* Returns true if the pack is a NAV pack */
+static gboolean
+gst_dvd_read_src_is_nav_pack (const guint8 * data, gint lbn, dsi_t * dsi_pack)
+{
+  if (GST_READ_UINT32_BE (data + 0x26) != 0x000001BF)
+    return FALSE;
+
+  /* Check that this is substream 0 (PCI) */
+  if (data[0x2c] != 0)
+    return FALSE;
+
+  if (GST_READ_UINT32_BE (data + 0x400) != 0x000001BF)
+    return FALSE;
+
+  /* Check that this is substream 1 (DSI) */
+  if (data[0x406] != 1)
+    return FALSE;
+
+  /* Check sizes of PCI and DSI packets */
+  if (GST_READ_UINT16_BE (data + 0x2a) != 0x03d4)
+    return FALSE;
+
+  if (GST_READ_UINT16_BE (data + 0x404) != 0x03fa)
+    return FALSE;
+
+  /* Read the DSI packet into the provided struct and check it */
+  navRead_DSI (dsi_pack, (unsigned char *) data + DSI_START_BYTE);
+  if (lbn != dsi_pack->dsi_gi.nv_pck_lbn)
+    return FALSE;
+
+  return TRUE;
+}
+
+/* find time for sector from index, returns NONE if there is no exact match */
+static GstClockTime
+gst_dvd_read_src_get_time_for_sector (GstDvdReadSrc * src, guint sector)
+{
+  gint i, j;
+
+  if (src->vts_tmapt == NULL || src->vts_tmapt->nr_of_tmaps == 0)
+    return GST_CLOCK_TIME_NONE;
+
+  for (i = 0; i < src->vts_tmapt->nr_of_tmaps; ++i) {
+    for (j = 0; j < src->vts_tmapt->tmap[i].nr_of_entries; ++j) {
+      if ((src->vts_tmapt->tmap[i].map_ent[j] & 0x7fffffff) == sector)
+        return src->vts_tmapt->tmap[i].tmu * (j + 1) * GST_SECOND;
+    }
+  }
+
+  if (sector == 0)
+    return (GstClockTime) 0;
+
+  return GST_CLOCK_TIME_NONE;
+}
+
+/* returns the sector in the index at (or before) the given time, or -1 */
+static gint
+gst_dvd_read_src_get_sector_from_time (GstDvdReadSrc * src, GstClockTime ts)
+{
+  gint sector, j;
+
+  if (src->vts_tmapt == NULL || src->vts_tmapt->nr_of_tmaps < src->ttn)
+    return -1;
+
+  sector = 0;
+  for (j = 0; j < src->vts_tmapt->tmap[src->ttn - 1].nr_of_entries; ++j) {
+    GstClockTime entry_time;
+
+    entry_time = src->vts_tmapt->tmap[src->ttn - 1].tmu * (j + 1) * GST_SECOND;
+    if (entry_time <= ts) {
+      sector = src->vts_tmapt->tmap[src->ttn - 1].map_ent[j] & 0x7fffffff;
+    }
+    if (entry_time >= ts) {
+      return sector;
+    }
+  }
+
+  if (ts == 0)
+    return 0;
+
+  return -1;
+}
+
+typedef enum
+{
+  GST_DVD_READ_OK = 0,
+  GST_DVD_READ_ERROR = -1,
+  GST_DVD_READ_EOS = -2,
+  GST_DVD_READ_AGAIN = -3
+} GstDvdReadReturn;
+
+static GstDvdReadReturn
+gst_dvd_read_src_read (GstDvdReadSrc * src, gint angle, gint new_seek,
+    GstBuffer ** p_buf)
+{
+  GstBuffer *buf;
+  GstSegment *seg;
+  guint8 oneblock[DVD_VIDEO_LB_LEN];
+  dsi_t dsi_pack;
+  guint next_vobu, cur_output_size;
+  gint len;
+  gint retries;
+  gint64 next_time;
+
+  seg = &(GST_BASE_SRC (src)->segment);
+
+  /* playback by cell in this pgc, starting at the cell for our chapter */
+  if (new_seek)
+    src->cur_cell = src->start_cell;
+
+again:
+
+  if (src->cur_cell >= src->last_cell) {
+    /* advance to next chapter */
+    if (src->chapter == (src->num_chapters - 1) ||
+        (seg->format == chapter_format && seg->stop != -1 &&
+            src->chapter == (seg->stop - 1))) {
+      GST_DEBUG_OBJECT (src, "end of chapter segment");
+      goto eos;
+    }
+
+    GST_INFO_OBJECT (src, "end of chapter %d, switch to next",
+        src->chapter + 1);
+
+    ++src->chapter;
+    gst_dvd_read_src_goto_chapter (src, src->chapter);
+
+    return GST_DVD_READ_AGAIN;
+  }
+
+  if (src->new_cell || new_seek) {
+    if (!new_seek) {
+      src->cur_cell = src->next_cell;
+      if (src->cur_cell >= src->last_cell) {
+        GST_LOG_OBJECT (src, "last cell in chapter");
+        goto again;
+      }
+    }
+
+    /* take angle into account */
+    if (src->cur_pgc->cell_playback[src->cur_cell].block_type
+        == BLOCK_TYPE_ANGLE_BLOCK)
+      src->cur_cell += angle;
+
+    /* calculate next cell */
+    src->next_cell =
+        gst_dvd_read_src_get_next_cell (src, src->cur_pgc, src->cur_cell);
+
+    /* we loop until we're out of this cell */
+    src->cur_pack = src->cur_pgc->cell_playback[src->cur_cell].first_sector;
+    src->new_cell = FALSE;
+    GST_DEBUG_OBJECT (src, "Starting new cell %d @ pack %d", src->cur_cell,
+        src->cur_pack);
+  }
+
+  if (src->cur_pack >= src->cur_pgc->cell_playback[src->cur_cell].last_sector) {
+    src->new_cell = TRUE;
+    GST_LOG_OBJECT (src, "Beyond last sector for cell %d, going to next cell",
+        src->cur_cell);
+    return GST_DVD_READ_AGAIN;
+  }
+
+  /* read NAV packet */
+  retries = 0;
+nav_retry:
+  retries++;
+
+  len = DVDReadBlocks (src->dvd_title, src->cur_pack, 1, oneblock);
+  if (len != 1)
+    goto read_error;
+
+  if (!gst_dvd_read_src_is_nav_pack (oneblock, src->cur_pack, &dsi_pack)) {
+    GST_LOG_OBJECT (src, "Skipping nav packet @ pack %d", src->cur_pack);
+    src->cur_pack++;
+
+    if (retries < 2000) {
+      goto nav_retry;
+    } else {
+      GST_LOG_OBJECT (src, "No nav packet @ pack %d after 2000 blocks",
+          src->cur_pack);
+      goto read_error;
+    }
+  }
+
+  /* determine where we go next. These values are the ones we
+   * mostly care about */
+  cur_output_size = dsi_pack.dsi_gi.vobu_ea + 1;
+
+  /* If we're not at the end of this cell, we can determine the next
+   * VOBU to display using the VOBU_SRI information section of the
+   * DSI.  Using this value correctly follows the current angle,
+   * avoiding the doubled scenes in The Matrix, and makes our life
+   * really happy.
+   *
+   * Otherwise, we set our next address past the end of this cell to
+   * force the code above to go to the next cell in the program. */
+  if (dsi_pack.vobu_sri.next_vobu != SRI_END_OF_CELL) {
+    next_vobu = src->cur_pack + (dsi_pack.vobu_sri.next_vobu & 0x7fffffff);
+  } else {
+    next_vobu = src->cur_pgc->cell_playback[src->cur_cell].last_sector + 1;
+  }
+
+  g_assert (cur_output_size < 1024);
+
+  /* create the buffer (TODO: use buffer pool?) */
+  buf = gst_buffer_new_and_alloc (cur_output_size * DVD_VIDEO_LB_LEN);
+
+  GST_LOG_OBJECT (src, "Going to read %u sectors @ pack %d", cur_output_size,
+      src->cur_pack);
+
+  /* read in and output cursize packs */
+  len = DVDReadBlocks (src->dvd_title, src->cur_pack, cur_output_size,
+      GST_BUFFER_DATA (buf));
+
+  if (len != cur_output_size)
+    goto block_read_error;
+
+  GST_BUFFER_SIZE (buf) = cur_output_size * DVD_VIDEO_LB_LEN;
+  /* GST_BUFFER_OFFSET (buf) = priv->cur_pack * DVD_VIDEO_LB_LEN; */
+  GST_BUFFER_TIMESTAMP (buf) =
+      gst_dvd_read_src_get_time_for_sector (src, src->cur_pack);
+
+  gst_buffer_set_caps (buf, GST_PAD_CAPS (GST_BASE_SRC_PAD (src)));
+
+  *p_buf = buf;
+
+  GST_LOG_OBJECT (src, "Read %u sectors", cur_output_size);
+
+  src->cur_pack = next_vobu;
+
+  next_time = GST_BUFFER_TIMESTAMP (buf);
+  if (GST_CLOCK_TIME_IS_VALID (next_time) && seg->format == GST_FORMAT_TIME &&
+      GST_CLOCK_TIME_IS_VALID (seg->stop) &&
+      next_time > seg->stop + 5 * GST_SECOND) {
+    GST_DEBUG_OBJECT (src, "end of TIME segment");
+    goto eos;
+  }
+
+  return GST_DVD_READ_OK;
+
+  /* ERRORS */
+eos:
+  {
+    GST_INFO_OBJECT (src, "Reached end-of-segment/stream - EOS");
+    return GST_DVD_READ_EOS;
+  }
+read_error:
+  {
+    GST_ERROR_OBJECT (src, "Read failed for block %d", src->cur_pack);
+    return GST_DVD_READ_ERROR;
+  }
+block_read_error:
+  {
+    GST_ERROR_OBJECT (src, "Read failed for %d blocks at %d",
+        cur_output_size, src->cur_pack);
+    gst_buffer_unref (buf);
+    return GST_DVD_READ_ERROR;
+  }
+}
+
+/* we don't cache the result on purpose */
+static gboolean
+gst_dvd_read_descrambler_available (void)
+{
+  GModule *module;
+  gpointer sym;
+  gsize res;
+
+  module = g_module_open ("libdvdcss", 0);
+  if (module != NULL) {
+    res = g_module_symbol (module, "dvdcss_open", &sym);
+    g_module_close (module);
+  } else {
+    res = FALSE;
+  }
+
+  return res;
+}
+
+static GstFlowReturn
+gst_dvd_read_src_create (GstPushSrc * pushsrc, GstBuffer ** p_buf)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (pushsrc);
+  GstPad *srcpad;
+  gint res;
+
+  g_return_val_if_fail (src->dvd != NULL, GST_FLOW_ERROR);
+
+  srcpad = GST_BASE_SRC (src)->srcpad;
+
+  if (src->need_newsegment) {
+    gst_pad_push_event (srcpad,
+        gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES,
+            (gint64) src->cur_pack * DVD_VIDEO_LB_LEN, -1, 0));
+    src->need_newsegment = FALSE;
+  }
+
+  if (src->new_seek) {
+    gst_dvd_read_src_goto_title (src, src->title, src->angle);
+    gst_dvd_read_src_goto_chapter (src, src->chapter);
+
+    src->new_seek = FALSE;
+    src->change_cell = TRUE;
+  }
+
+  if (src->title_lang_event_pending) {
+    gst_pad_push_event (srcpad, src->title_lang_event_pending);
+    src->title_lang_event_pending = NULL;
+  }
+
+  if (src->pending_clut_event) {
+    gst_pad_push_event (srcpad, src->pending_clut_event);
+    src->pending_clut_event = NULL;
+  }
+
+  /* read it in */
+  do {
+    res = gst_dvd_read_src_read (src, src->angle, src->change_cell, p_buf);
+  } while (res == GST_DVD_READ_AGAIN);
+
+  switch (res) {
+    case GST_DVD_READ_ERROR:{
+      /* FIXME: figure out a way to detect if scrambling is the problem */
+      if (!gst_dvd_read_descrambler_available ()) {
+        GST_ELEMENT_ERROR (src, RESOURCE, READ,
+            (_("Could not read DVD. This may be because the DVD is encrypted "
+                    "and a DVD decryption library is not installed.")), (NULL));
+      } else {
+        GST_ELEMENT_ERROR (src, RESOURCE, READ, (_("Could not read DVD.")),
+            (NULL));
+      }
+      return GST_FLOW_ERROR;
+    }
+    case GST_DVD_READ_EOS:{
+      return GST_FLOW_UNEXPECTED;
+    }
+    case GST_DVD_READ_OK:{
+      src->change_cell = FALSE;
+      return GST_FLOW_OK;
+    }
+    default:
+      break;
+  }
+
+  g_return_val_if_reached (GST_FLOW_UNEXPECTED);
+}
+
+static void
+gst_dvd_read_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (object);
+  gboolean started;
+
+  GST_OBJECT_LOCK (src);
+  started = GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_STARTED);
+
+  switch (prop_id) {
+    case ARG_DEVICE:{
+      if (started) {
+        g_warning ("%s: property '%s' needs to be set before the device is "
+            "opened", GST_ELEMENT_NAME (src), pspec->name);
+        break;;
+      }
+
+      g_free (src->location);
+      /* clear the filename if we get a NULL (is that possible?) */
+      if (g_value_get_string (value) == NULL) {
+        src->location = g_strdup ("/dev/dvd");
+      } else {
+        src->location = g_strdup (g_value_get_string (value));
+      }
+      break;
+    }
+    case ARG_TITLE:
+      src->uri_title = g_value_get_int (value);
+      if (started) {
+        src->title = src->uri_title - 1;
+        src->new_seek = TRUE;
+      }
+      break;
+    case ARG_CHAPTER:
+      src->uri_chapter = g_value_get_int (value);
+      if (started) {
+        src->chapter = src->uri_chapter - 1;
+        src->new_seek = TRUE;
+      }
+      break;
+    case ARG_ANGLE:
+      src->uri_angle = g_value_get_int (value);
+      if (started) {
+        src->angle = src->uri_angle - 1;
+      }
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_OBJECT_UNLOCK (src);
+}
+
+static void
+gst_dvd_read_src_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (object);
+
+  GST_OBJECT_LOCK (src);
+
+  switch (prop_id) {
+    case ARG_DEVICE:
+      g_value_set_string (value, src->location);
+      break;
+    case ARG_TITLE:
+      g_value_set_int (value, src->uri_title);
+      break;
+    case ARG_CHAPTER:
+      g_value_set_int (value, src->uri_chapter);
+      break;
+    case ARG_ANGLE:
+      g_value_set_int (value, src->uri_angle);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_OBJECT_UNLOCK (src);
+}
+
+static gboolean
+gst_dvd_read_src_get_size (GstDvdReadSrc * src, gint64 * size)
+{
+  gboolean ret = FALSE;
+
+  if (src->dvd_title) {
+    gsize blocks;
+
+    blocks = DVDFileSize (src->dvd_title);
+    if (blocks >= 0) {
+      *size = (gint64) blocks *DVD_VIDEO_LB_LEN;
+
+      ret = TRUE;
+    } else {
+      GST_WARNING_OBJECT (src, "DVDFileSize(%p) failed!", src->dvd_title);
+    }
+  }
+
+  return ret;
+}
+
+/*** Querying and seeking ***/
+
+static gboolean
+gst_dvd_read_src_handle_seek_event (GstDvdReadSrc * src, GstEvent * event)
+{
+  GstSeekFlags flags;
+  GstSeekType cur_type, end_type;
+  gint64 new_off, total;
+  GstFormat format;
+  GstPad *srcpad;
+  gboolean query_ok;
+  gdouble rate;
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &new_off,
+      &end_type, NULL);
+
+  if (rate <= 0.0) {
+    GST_DEBUG_OBJECT (src, "cannot do backwards playback yet");
+    return FALSE;
+  }
+
+  if (end_type != GST_SEEK_TYPE_NONE) {
+    if ((format != chapter_format && format != GST_FORMAT_TIME) ||
+        end_type != GST_SEEK_TYPE_SET) {
+      GST_DEBUG_OBJECT (src, "end seek type not supported");
+      return FALSE;
+    }
+  }
+
+  if (cur_type != GST_SEEK_TYPE_SET) {
+    GST_DEBUG_OBJECT (src, "only SEEK_TYPE_SET is supported");
+    return FALSE;
+  }
+
+  if (format == angle_format) {
+    GST_OBJECT_LOCK (src);
+    if (new_off < 0 || new_off >= src->num_angles) {
+      GST_OBJECT_UNLOCK (src);
+      GST_DEBUG_OBJECT (src, "invalid angle %d, only %d available",
+          src->num_angles, src->num_angles);
+      return FALSE;
+    }
+    src->angle = (gint) new_off;
+    GST_OBJECT_UNLOCK (src);
+    GST_DEBUG_OBJECT (src, "switched to angle %d", (gint) new_off + 1);
+    return TRUE;
+  }
+
+  if (format != chapter_format && format != title_format &&
+      format != GST_FORMAT_BYTES && format != GST_FORMAT_TIME) {
+    GST_DEBUG_OBJECT (src, "unsupported seek format %d (%s)", format,
+        gst_format_get_name (format));
+    return FALSE;
+  }
+
+  if (format == GST_FORMAT_BYTES) {
+    GST_DEBUG_OBJECT (src, "Requested seek to byte %" G_GUINT64_FORMAT,
+        new_off);
+  } else if (format == GST_FORMAT_TIME) {
+    GST_DEBUG_OBJECT (src, "Requested seek to time %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (new_off));
+    if (gst_dvd_read_src_get_sector_from_time (src, new_off) < 0) {
+      GST_DEBUG_OBJECT (src, "Can't find sector for requested time");
+      return FALSE;
+    }
+  }
+
+  srcpad = GST_BASE_SRC_PAD (src);
+
+  /* check whether the seek looks reasonable (ie within possible range) */
+  if (format == GST_FORMAT_BYTES) {
+    GST_OBJECT_LOCK (src);
+    query_ok = gst_dvd_read_src_get_size (src, &total);
+    GST_OBJECT_UNLOCK (src);
+  } else {
+    query_ok = gst_pad_query_duration (srcpad, &format, &total);
+  }
+
+  if (!query_ok) {
+    GST_DEBUG_OBJECT (src, "Failed to query duration in format %s",
+        gst_format_get_name (format));
+    return FALSE;
+  }
+
+  GST_DEBUG_OBJECT (src, "Total      %s: %12" G_GINT64_FORMAT,
+      gst_format_get_name (format), total);
+  GST_DEBUG_OBJECT (src, "Seek to    %s: %12" G_GINT64_FORMAT,
+      gst_format_get_name (format), new_off);
+
+  if (new_off >= total) {
+    GST_DEBUG_OBJECT (src, "Seek position out of range");
+    return FALSE;
+  }
+
+  /* set segment to seek format; this allows us to use the do_seek
+   * virtual function and let the base source handle all the tricky
+   * stuff for us. We don't use the segment internally anyway */
+  /* FIXME: can't take the stream lock here - what to do? */
+  GST_OBJECT_LOCK (src);
+  GST_BASE_SRC (src)->segment.format = format;
+  GST_BASE_SRC (src)->segment.start = 0;
+  GST_BASE_SRC (src)->segment.stop = total;
+  GST_BASE_SRC (src)->segment.duration = total;
+  GST_OBJECT_UNLOCK (src);
+
+  return GST_BASE_SRC_CLASS (parent_class)->event (GST_BASE_SRC (src), event);
+}
+
+static void
+gst_dvd_read_src_get_sector_bounds (GstDvdReadSrc * src, gint * first,
+    gint * last)
+{
+  gint c1, c2, tmp;
+  cur_title_get_chapter_bounds (src, 0, &c1, &tmp);
+  cur_title_get_chapter_bounds (src, src->num_chapters - 1, &tmp, &c2);
+  *first = src->cur_pgc->cell_playback[c1].first_sector;
+  *last = src->cur_pgc->cell_playback[c2].last_sector;
+}
+
+static gboolean
+gst_dvd_read_src_do_seek (GstBaseSrc * basesrc, GstSegment * s)
+{
+  GstDvdReadSrc *src;
+
+  src = GST_DVD_READ_SRC (basesrc);
+
+  GST_DEBUG_OBJECT (src, "Seeking to %s: %12" G_GINT64_FORMAT,
+      gst_format_get_name (s->format), s->last_stop);
+
+  if (s->format == sector_format || s->format == GST_FORMAT_BYTES
+      || s->format == GST_FORMAT_TIME) {
+    guint old;
+
+    old = src->cur_pack;
+
+    if (s->format == sector_format) {
+      gint first, last;
+      gst_dvd_read_src_get_sector_bounds (src, &first, &last);
+      GST_DEBUG_OBJECT (src, "Format is sector, seeking to %" G_GINT64_FORMAT,
+          s->last_stop);
+      src->cur_pack = s->last_stop;
+      if (src->cur_pack < first)
+        src->cur_pack = first;
+      if (src->cur_pack > last)
+        src->cur_pack = last;
+    } else if (s->format == GST_FORMAT_TIME) {
+      gint sector;
+      GST_DEBUG_OBJECT (src, "Format is time");
+
+      sector = gst_dvd_read_src_get_sector_from_time (src, s->last_stop);
+
+      GST_DEBUG_OBJECT (src, "Time %" GST_TIME_FORMAT " => sector %d",
+          GST_TIME_ARGS (s->last_stop), sector);
+
+      /* really shouldn't happen, we've checked this earlier ... */
+      g_return_val_if_fail (sector >= 0, FALSE);
+
+      src->cur_pack = sector;
+    } else {
+      /* byte format */
+      gint first, last;
+      gst_dvd_read_src_get_sector_bounds (src, &first, &last);
+      GST_DEBUG_OBJECT (src, "Format is byte");
+      src->cur_pack = s->last_stop / DVD_VIDEO_LB_LEN;
+      if (((gint64) src->cur_pack * DVD_VIDEO_LB_LEN) != s->last_stop) {
+        GST_LOG_OBJECT (src, "rounded down offset %" G_GINT64_FORMAT " => %"
+            G_GINT64_FORMAT, s->last_stop,
+            (gint64) src->cur_pack * DVD_VIDEO_LB_LEN);
+      }
+      src->cur_pack += first;
+    }
+
+    if (!gst_dvd_read_src_goto_sector (src, src->angle)) {
+      GST_DEBUG_OBJECT (src, "seek to sector 0x%08x failed", src->cur_pack);
+      src->cur_pack = old;
+      return FALSE;
+    }
+
+    GST_LOG_OBJECT (src, "seek to sector 0x%08x ok", src->cur_pack);
+  } else if (s->format == chapter_format) {
+    if (!gst_dvd_read_src_goto_chapter (src, (gint) s->last_stop)) {
+      GST_DEBUG_OBJECT (src, "seek to chapter %d failed",
+          (gint) s->last_stop + 1);
+      return FALSE;
+    }
+    GST_INFO_OBJECT (src, "seek to chapter %d ok", (gint) s->last_stop + 1);
+    src->chapter = s->last_stop;
+  } else if (s->format == title_format) {
+    if (!gst_dvd_read_src_goto_title (src, (gint) s->last_stop, src->angle) ||
+        !gst_dvd_read_src_goto_chapter (src, 0)) {
+      GST_DEBUG_OBJECT (src, "seek to title %d failed", (gint) s->last_stop);
+      return FALSE;
+    }
+    src->title = (gint) s->last_stop;
+    src->chapter = 0;
+    GST_INFO_OBJECT (src, "seek to title %d ok", src->title + 1);
+  } else {
+    g_return_val_if_reached (FALSE);
+  }
+
+  src->need_newsegment = TRUE;
+  return TRUE;
+}
+
+static gboolean
+gst_dvd_read_src_src_event (GstBaseSrc * basesrc, GstEvent * event)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (basesrc);
+  gboolean res;
+
+  GST_LOG_OBJECT (src, "handling %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+      res = gst_dvd_read_src_handle_seek_event (src, event);
+      break;
+    default:
+      res = GST_BASE_SRC_CLASS (parent_class)->event (basesrc, event);
+      break;
+  }
+
+  return res;
+}
+
+static GstEvent *
+gst_dvd_read_src_make_clut_change_event (GstDvdReadSrc * src,
+    const guint * clut)
+{
+  GstStructure *structure;
+  gchar name[16];
+  gint i;
+
+  structure = gst_structure_new ("application/x-gst-dvd",
+      "event", G_TYPE_STRING, "dvd-spu-clut-change", NULL);
+
+  /* Create a separate field for each value in the table. */
+  for (i = 0; i < 16; i++) {
+    g_snprintf (name, sizeof (name), "clut%02d", i);
+    gst_structure_set (structure, name, G_TYPE_INT, (int) clut[i], NULL);
+  }
+
+  /* Create the DVD event and put the structure into it. */
+  return gst_event_new_custom (GST_EVENT_CUSTOM_DOWNSTREAM, structure);
+}
+
+static gint64
+gst_dvd_read_src_convert_timecode (dvd_time_t * time)
+{
+  gint64 ret_time;
+  const gint64 one_hour = 3600 * GST_SECOND;
+  const gint64 one_min = 60 * GST_SECOND;
+
+  g_return_val_if_fail ((time->hour >> 4) < 0xa
+      && (time->hour & 0xf) < 0xa, -1);
+  g_return_val_if_fail ((time->minute >> 4) < 0x7
+      && (time->minute & 0xf) < 0xa, -1);
+  g_return_val_if_fail ((time->second >> 4) < 0x7
+      && (time->second & 0xf) < 0xa, -1);
+
+  ret_time = ((time->hour >> 4) * 10 + (time->hour & 0xf)) * one_hour;
+  ret_time += ((time->minute >> 4) * 10 + (time->minute & 0xf)) * one_min;
+  ret_time += ((time->second >> 4) * 10 + (time->second & 0xf)) * GST_SECOND;
+
+  return ret_time;
+}
+
+static gboolean
+gst_dvd_read_src_do_duration_query (GstDvdReadSrc * src, GstQuery * query)
+{
+  GstFormat format;
+  gint64 val;
+
+  gst_query_parse_duration (query, &format, NULL);
+
+  switch (format) {
+    case GST_FORMAT_TIME:{
+      if (src->cur_pgc == NULL)
+        return FALSE;
+      val = gst_dvd_read_src_convert_timecode (&src->cur_pgc->playback_time);
+      if (val < 0)
+        return FALSE;
+      break;
+    }
+    case GST_FORMAT_BYTES:{
+      if (!gst_dvd_read_src_get_size (src, &val))
+        return FALSE;
+      break;
+    }
+    default:{
+      if (format == sector_format) {
+        val = DVDFileSize (src->dvd_title);
+      } else if (format == title_format) {
+        val = src->tt_srpt->nr_of_srpts;
+      } else if (format == chapter_format) {
+        val = src->num_chapters;
+      } else if (format == angle_format) {
+        val = src->tt_srpt->title[src->title].nr_of_angles;
+      } else {
+        GST_DEBUG_OBJECT (src, "Don't know how to handle format %d (%s)",
+            format, gst_format_get_name (format));
+        return FALSE;
+      }
+      break;
+    }
+  }
+
+  GST_LOG_OBJECT (src, "duration = %" G_GINT64_FORMAT " %s", val,
+      gst_format_get_name (format));
+
+  gst_query_set_duration (query, format, val);
+  return TRUE;
+}
+
+static gboolean
+gst_dvd_read_src_do_position_query (GstDvdReadSrc * src, GstQuery * query)
+{
+  GstFormat format;
+  gint64 val;
+
+  gst_query_parse_position (query, &format, NULL);
+
+  switch (format) {
+    case GST_FORMAT_BYTES:{
+      val = (gint64) src->cur_pack * DVD_VIDEO_LB_LEN;
+      break;
+    }
+    default:{
+      if (format == sector_format) {
+        val = src->cur_pack;
+      } else if (format == title_format) {
+        val = src->title;
+      } else if (format == chapter_format) {
+        val = src->chapter;
+      } else if (format == angle_format) {
+        val = src->angle;
+      } else {
+        GST_DEBUG_OBJECT (src, "Don't know how to handle format %d (%s)",
+            format, gst_format_get_name (format));
+        return FALSE;
+      }
+      break;
+    }
+  }
+
+  GST_LOG_OBJECT (src, "position = %" G_GINT64_FORMAT " %s", val,
+      gst_format_get_name (format));
+
+  gst_query_set_position (query, format, val);
+  return TRUE;
+}
+
+static gboolean
+gst_dvd_read_src_do_convert_query (GstDvdReadSrc * src, GstQuery * query)
+{
+  GstFormat src_format, dest_format;
+  gboolean ret = FALSE;
+  gint64 src_val, dest_val = -1;
+
+  gst_query_parse_convert (query, &src_format, &src_val, &dest_format, NULL);
+
+  if (src_format == dest_format) {
+    dest_val = src_val;
+    ret = TRUE;
+    goto done;
+  }
+
+  /* Formats to consider: TIME, DEFAULT, BYTES, title, chapter, sector.
+   * Note: title and chapter are counted as starting from 0 here, just like
+   * in the context of seek events. Another note: DEFAULT format is undefined */
+
+  if (src_format == GST_FORMAT_BYTES) {
+    src_format = sector_format;
+    src_val /= DVD_VIDEO_LB_LEN;
+  }
+
+  if (src_format == sector_format) {
+    /* SECTOR => xyz */
+    if (dest_format == GST_FORMAT_TIME && src_val < G_MAXUINT) {
+      dest_val = gst_dvd_read_src_get_time_for_sector (src, (guint) src_val);
+      ret = (dest_val >= 0);
+    } else if (dest_format == GST_FORMAT_BYTES) {
+      dest_val = src_val * DVD_VIDEO_LB_LEN;
+      ret = TRUE;
+    } else {
+      ret = FALSE;
+    }
+  } else if (src_format == title_format) {
+    /* TITLE => xyz */
+    if (dest_format == GST_FORMAT_TIME) {
+      /* not really true, but we use this to trick the base source into
+       * handling seeks in title-format for us (the source won't know that
+       * we changed the title in this case) (changing titles should really
+       * be done with an interface rather than a seek, but for now we're
+       * stuck with this mechanism. Fix in 0.11) */
+      dest_val = (GstClockTime) 0;
+      ret = TRUE;
+    } else {
+      ret = FALSE;
+    }
+  } else if (src_format == chapter_format) {
+    /* CHAPTER => xyz */
+    if (dest_format == GST_FORMAT_TIME) {
+      if (src->num_chapters >= 0 && src_val < src->num_chapters) {
+        dest_val = src->chapter_starts[src_val];
+        ret = TRUE;
+      }
+    } else if (dest_format == sector_format) {
+    } else {
+      ret = FALSE;
+    }
+  } else if (src_format == GST_FORMAT_TIME) {
+    /* TIME => xyz */
+    if (dest_format == sector_format || dest_format == GST_FORMAT_BYTES) {
+      dest_val = gst_dvd_read_src_get_sector_from_time (src, src_val);
+      ret = (dest_val >= 0);
+      if (dest_format == GST_FORMAT_BYTES)
+        dest_val *= DVD_VIDEO_LB_LEN;
+    } else if (dest_format == chapter_format) {
+      if (src->chapter_starts != NULL) {
+        gint i;
+
+        for (i = src->num_chapters - 1; i >= 0; --i) {
+          if (src->chapter_starts && src->chapter_starts[i] >= src_val) {
+            dest_val = i;
+            ret = TRUE;
+            break;
+          }
+        }
+      } else {
+        ret = FALSE;
+      }
+    } else {
+      ret = FALSE;
+    }
+  } else {
+    ret = FALSE;
+  }
+
+done:
+
+  if (ret) {
+    gst_query_set_convert (query, src_format, src_val, dest_format, dest_val);
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_dvd_read_src_src_query (GstBaseSrc * basesrc, GstQuery * query)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (basesrc);
+  gboolean started;
+  gboolean res = TRUE;
+
+  GST_LOG_OBJECT (src, "handling %s query",
+      gst_query_type_get_name (GST_QUERY_TYPE (query)));
+
+  GST_OBJECT_LOCK (src);
+  started = (GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_STARTED));
+  GST_OBJECT_UNLOCK (src);
+
+  if (!started) {
+    GST_DEBUG_OBJECT (src, "query failed: not started");
+    return FALSE;
+  }
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_DURATION:
+      GST_OBJECT_LOCK (src);
+      res = gst_dvd_read_src_do_duration_query (src, query);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case GST_QUERY_POSITION:
+      GST_OBJECT_LOCK (src);
+      res = gst_dvd_read_src_do_position_query (src, query);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case GST_QUERY_CONVERT:
+      GST_OBJECT_LOCK (src);
+      res = gst_dvd_read_src_do_convert_query (src, query);
+      GST_OBJECT_UNLOCK (src);
+      break;
+    default:
+      res = GST_BASE_SRC_CLASS (parent_class)->query (basesrc, query);
+      break;
+  }
+
+  return res;
+}
+
+static gboolean
+gst_dvd_read_src_goto_sector (GstDvdReadSrc * src, int angle)
+{
+  gint seek_to = src->cur_pack;
+  gint chapter, next, cur, i;
+
+  /* retrieve position */
+  src->cur_pack = 0;
+  GST_DEBUG_OBJECT (src, "Goto sector %d, angle %d, within %d chapters",
+      seek_to, angle, src->num_chapters);
+
+  for (i = 0; i < src->num_chapters; i++) {
+    gint c1, c2;
+
+    cur_title_get_chapter_bounds (src, i, &c1, &c2);
+    GST_DEBUG_OBJECT (src, " Looking in chapter %d, bounds: %d %d", i, c1, c2);
+
+    for (next = cur = c1; cur < c2;) {
+      gint first = src->cur_pgc->cell_playback[cur].first_sector;
+      gint last = src->cur_pgc->cell_playback[cur].last_sector;
+      GST_DEBUG_OBJECT (src, "Cell %d sector bounds: %d %d", cur, first, last);
+      /* seeking to 0 should end up at first chapter in any case */
+      if ((seek_to >= first && seek_to <= last) || (seek_to == 0 && i == 0)) {
+        GST_DEBUG_OBJECT (src, "Seek target found in chapter %d", i);
+        chapter = i;
+        goto done;
+      }
+      cur = next;
+      if (src->cur_pgc->cell_playback[cur].block_type == BLOCK_TYPE_ANGLE_BLOCK)
+        cur += angle;
+      next = gst_dvd_read_src_get_next_cell (src, src->cur_pgc, cur);
+    }
+  }
+
+  GST_DEBUG_OBJECT (src, "Seek to sector %u failed", seek_to);
+
+  return FALSE;
+
+done:
+  {
+    /* so chapter $chapter and cell $cur contain our sector
+     * of interest. Let's go there! */
+    GST_INFO_OBJECT (src, "Seek succeeded, going to chapter %u, cell %u",
+        chapter + 1, cur);
+
+    gst_dvd_read_src_goto_chapter (src, chapter);
+    src->cur_cell = cur;
+    src->next_cell = next;
+    src->new_cell = FALSE;
+    src->cur_pack = seek_to;
+
+    return TRUE;
+  }
+}
+
+
+/*** URI interface ***/
+
+static GstURIType
+gst_dvd_read_src_uri_get_type (void)
+{
+  return GST_URI_SRC;
+}
+
+static gchar **
+gst_dvd_read_src_uri_get_protocols (void)
+{
+  static gchar *protocols[] = { (gchar *) "dvd", NULL };
+
+  return protocols;
+}
+
+static const gchar *
+gst_dvd_read_src_uri_get_uri (GstURIHandler * handler)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (handler);
+
+  GST_OBJECT_LOCK (src);
+
+  g_free (src->last_uri);
+  src->last_uri = g_strdup_printf ("dvd://%d,%d,%d", src->uri_title,
+      src->uri_chapter, src->uri_angle);
+
+  GST_OBJECT_UNLOCK (src);
+
+  return src->last_uri;
+}
+
+static gboolean
+gst_dvd_read_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
+{
+  GstDvdReadSrc *src = GST_DVD_READ_SRC (handler);
+  gboolean ret;
+  gchar *protocol;
+
+  protocol = gst_uri_get_protocol (uri);
+  ret = (protocol != NULL && g_str_equal (protocol, "dvd"));
+  g_free (protocol);
+  protocol = NULL;
+
+  if (!ret)
+    return ret;
+
+  /* parse out the new t/c/a and seek to them */
+  {
+    gchar *location = NULL;
+    gchar **strs;
+    gchar **strcur;
+    gint pos = 0;
+
+    location = gst_uri_get_location (uri);
+
+    if (!location)
+      return ret;
+
+    GST_OBJECT_LOCK (src);
+
+    src->uri_title = 1;
+    src->uri_chapter = 1;
+    src->uri_angle = 1;
+
+    strcur = strs = g_strsplit (location, ",", 0);
+    while (strcur && *strcur) {
+      gint val;
+
+      if (!sscanf (*strcur, "%d", &val))
+        break;
+
+      if (val <= 0) {
+        g_warning ("Invalid value %d in URI '%s'. Must be 1 or greater",
+            val, location);
+        break;
+      }
+
+      switch (pos) {
+        case 0:
+          src->uri_title = val;
+          break;
+        case 1:
+          src->uri_chapter = val;
+          break;
+        case 2:
+          src->uri_angle = val;
+          break;
+      }
+
+      strcur++;
+      pos++;
+    }
+
+    if (pos > 0 && GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_STARTED)) {
+      src->title = src->uri_title - 1;
+      src->chapter = src->uri_chapter - 1;
+      src->angle = src->uri_angle - 1;
+      src->new_seek = TRUE;
+    }
+
+    GST_OBJECT_UNLOCK (src);
+
+    g_strfreev (strs);
+    g_free (location);
+  }
+
+  return ret;
+}
+
+static void
+gst_dvd_read_src_uri_handler_init (gpointer g_iface, gpointer iface_data)
+{
+  GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
+
+  iface->get_type = gst_dvd_read_src_uri_get_type;
+  iface->get_protocols = gst_dvd_read_src_uri_get_protocols;
+  iface->get_uri = gst_dvd_read_src_uri_get_uri;
+  iface->set_uri = gst_dvd_read_src_uri_set_uri;
+}
+
+static void
+gst_dvd_read_src_do_init (GType dvdreadsrc_type)
+{
+  static const GInterfaceInfo urihandler_info = {
+    gst_dvd_read_src_uri_handler_init,
+    NULL,
+    NULL
+  };
+
+  g_type_add_interface_static (dvdreadsrc_type, GST_TYPE_URI_HANDLER,
+      &urihandler_info);
+
+  title_format = gst_format_register ("title", "DVD title");
+  angle_format = gst_format_register ("angle", "DVD angle");
+  sector_format = gst_format_register ("sector", "DVD sector");
+  chapter_format = gst_format_register ("chapter", "DVD chapter");
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (gstgst_dvd_read_src_debug, "dvdreadsrc", 0,
+      "DVD reader element based on dvdreadsrc");
+
+#ifdef ENABLE_NLS
+  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
+      LOCALEDIR);
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
+
+  if (!gst_element_register (plugin, "dvdreadsrc", GST_RANK_SECONDARY,
+          GST_TYPE_DVD_READ_SRC)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "dvdread",
+    "Access a DVD with dvdread",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/dvdread/dvdreadsrc.h b/ext/dvdread/dvdreadsrc.h
new file mode 100644 (file)
index 0000000..77e8183
--- /dev/null
@@ -0,0 +1,102 @@
+/* GStreamer DVD title source
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2001> Billy Biggs <vektor@dumbterm.net>.
+ * Copyright (C) <2006> Tim-Philipp Müller <tim centricular net>
+ *
+ * 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_DVD_READ_SRC_H__
+#define __GST_DVD_READ_SRC_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+
+#include <dvdread/dvd_reader.h>
+#include <dvdread/ifo_types.h>
+#include <dvdread/ifo_read.h>
+#include <dvdread/nav_read.h>
+#include <dvdread/nav_print.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DVD_READ_SRC            (gst_dvd_read_src_get_type())
+#define GST_DVD_READ_SRC(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVD_READ_SRC,GstDvdReadSrc))
+#define GST_DVD_READ_SRC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVD_READ_SRC,GstDvdReadSrcClass))
+#define GST_IS_DVD_READ_SRC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVD_READ_SRC))
+#define GST_IS_DVD_READ_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVD_READ_SRC))
+
+typedef struct _GstDvdReadSrc GstDvdReadSrc;
+typedef struct _GstDvdReadSrcClass GstDvdReadSrcClass;
+
+struct _GstDvdReadSrc {
+  GstPushSrc       pushsrc;
+
+  /* location */
+  gchar           *location;
+  gchar           *last_uri;
+
+  gboolean         new_seek;
+  gboolean         change_cell;
+
+  gboolean         new_cell;
+
+  gint             uri_title;     /* set via the URI handler or properties,  */
+  gint             uri_chapter;   /* otherwise not touched; these values     */
+  gint             uri_angle;     /* start from 1                            */
+
+  gint             title;         /* current position while open, set to the */
+  gint             chapter;       /* URI-set values in ::start(). these      */
+  gint             angle;         /* values start from 0                     */
+
+  gint             start_cell, last_cell, cur_cell;
+  gint             cur_pack;
+  gint             next_cell;
+  dvd_reader_t    *dvd;
+  ifo_handle_t    *vmg_file;
+
+  /* title stuff */
+  gint             ttn;
+  tt_srpt_t       *tt_srpt;
+  ifo_handle_t    *vts_file;
+  vts_ptt_srpt_t  *vts_ptt_srpt;
+  vts_tmapt_t     *vts_tmapt;
+  dvd_file_t      *dvd_title;
+  gint             num_chapters;
+  gint             num_angles;
+
+  GstClockTime    *chapter_starts;  /* start time of chapters within title   */
+
+  /* which program chain to watch (based on title and chapter number) */
+  pgc_t           *cur_pgc;
+  gint             pgc_id;
+  gint             pgn;
+
+  gboolean         need_newsegment;
+  GstEvent        *title_lang_event_pending;
+  GstEvent        *pending_clut_event;
+};
+
+struct _GstDvdReadSrcClass {
+  GstPushSrcClass parent_class;
+};
+
+GType gst_dvd_read_src_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DVD_READ_SRC_H__ */
+
diff --git a/ext/lame/Makefile.am b/ext/lame/Makefile.am
new file mode 100644 (file)
index 0000000..41457e3
--- /dev/null
@@ -0,0 +1,11 @@
+plugin_LTLIBRARIES = libgstlame.la
+
+libgstlame_la_SOURCES = gstlame.c gstlamemp3enc.c plugin.c
+libgstlame_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+        $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LAME_CFLAGS)
+libgstlame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_MAJORMINOR) \
+       $(GST_BASE_LIBS) $(GST_LIBS) $(LAME_LIBS)
+libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstlame_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstlame.h gstlamemp3enc.h
diff --git a/ext/lame/Makefile.in b/ext/lame/Makefile.in
new file mode 100644 (file)
index 0000000..4c8922e
--- /dev/null
@@ -0,0 +1,743 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/lame
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstlame_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstlame_la_OBJECTS = libgstlame_la-gstlame.lo \
+       libgstlame_la-gstlamemp3enc.lo libgstlame_la-plugin.lo
+libgstlame_la_OBJECTS = $(am_libgstlame_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstlame_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstlame_la_CFLAGS) $(CFLAGS) \
+       $(libgstlame_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstlame_la_SOURCES)
+DIST_SOURCES = $(libgstlame_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstlame.la
+libgstlame_la_SOURCES = gstlame.c gstlamemp3enc.c plugin.c
+libgstlame_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+        $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LAME_CFLAGS)
+
+libgstlame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_MAJORMINOR) \
+       $(GST_BASE_LIBS) $(GST_LIBS) $(LAME_LIBS)
+
+libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstlame_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstlame.h gstlamemp3enc.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 ext/lame/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/lame/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
+libgstlame.la: $(libgstlame_la_OBJECTS) $(libgstlame_la_DEPENDENCIES) $(EXTRA_libgstlame_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstlame_la_LINK) -rpath $(plugindir) $(libgstlame_la_OBJECTS) $(libgstlame_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlame_la-gstlame.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlame_la-gstlamemp3enc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlame_la-plugin.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstlame_la-gstlame.lo: gstlame.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -MT libgstlame_la-gstlame.lo -MD -MP -MF $(DEPDIR)/libgstlame_la-gstlame.Tpo -c -o libgstlame_la-gstlame.lo `test -f 'gstlame.c' || echo '$(srcdir)/'`gstlame.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlame_la-gstlame.Tpo $(DEPDIR)/libgstlame_la-gstlame.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstlame.c' object='libgstlame_la-gstlame.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -c -o libgstlame_la-gstlame.lo `test -f 'gstlame.c' || echo '$(srcdir)/'`gstlame.c
+
+libgstlame_la-gstlamemp3enc.lo: gstlamemp3enc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -MT libgstlame_la-gstlamemp3enc.lo -MD -MP -MF $(DEPDIR)/libgstlame_la-gstlamemp3enc.Tpo -c -o libgstlame_la-gstlamemp3enc.lo `test -f 'gstlamemp3enc.c' || echo '$(srcdir)/'`gstlamemp3enc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlame_la-gstlamemp3enc.Tpo $(DEPDIR)/libgstlame_la-gstlamemp3enc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstlamemp3enc.c' object='libgstlame_la-gstlamemp3enc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -c -o libgstlame_la-gstlamemp3enc.lo `test -f 'gstlamemp3enc.c' || echo '$(srcdir)/'`gstlamemp3enc.c
+
+libgstlame_la-plugin.lo: plugin.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -MT libgstlame_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstlame_la-plugin.Tpo -c -o libgstlame_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlame_la-plugin.Tpo $(DEPDIR)/libgstlame_la-plugin.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='plugin.c' object='libgstlame_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlame_la_CFLAGS) $(CFLAGS) -c -o libgstlame_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/lame/README b/ext/lame/README
new file mode 100644 (file)
index 0000000..49facf9
--- /dev/null
@@ -0,0 +1,4 @@
+The lame plugin uses the lame library available at:
+lame.sourceforge.net
+
+lame is available under the terms of the LGPL license
diff --git a/ext/lame/gstlame.c b/ext/lame/gstlame.c
new file mode 100644 (file)
index 0000000..9ce689d
--- /dev/null
@@ -0,0 +1,1458 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2004> Wim Taymans <wim@fluendo.com>
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ *
+ * 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-lame
+ * @see_also: lame, mad, vorbisenc
+ *
+ * This element encodes raw integer audio into an MPEG-1 layer 3 (MP3) stream.
+ * Note that <ulink url="http://en.wikipedia.org/wiki/MP3">MP3</ulink> is not
+ * a free format, there are licensing and patent issues to take into
+ * consideration. See <ulink url="http://www.vorbis.com/">Ogg/Vorbis</ulink>
+ * for a royalty free (and often higher quality) alternative.
+ *
+ * <refsect2>
+ * <title>Note</title>
+ * This element is deprecated, use the lame element instead
+ * which provides a much simpler interface and results in better MP3 files.
+ * </refsect2>
+ *
+ * <refsect2>
+ * <title>Output sample rate</title>
+ * If no fixed output sample rate is negotiated on the element's src pad,
+ * the element will choose an optimal sample rate to resample to internally.
+ * For example, a 16-bit 44.1 KHz mono audio stream encoded at 48 kbit will
+ * get resampled to 32 KHz.  Use filter caps on the src pad to force a
+ * particular sample rate.
+ * </refsect2>
+ * <refsect2>
+ * <title>Writing metadata (tags)</title>
+ * Whilst the lame encoder element does claim to implement the GstTagSetter
+ * interface, it does so only for backwards compatibility reasons. Tag writing
+ * has been removed from lame. Use external elements like id3v2mux or apev2mux
+ * to add tags to your MP3 streams. The same goes for XING headers: use the
+ * xingmux element to add XING headers to your VBR mp3 file.
+ * </refsect2>
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch -v audiotestsrc wave=sine num-buffers=100 ! audioconvert ! lame ! filesink location=sine.mp3
+ * ]| Encode a test sine signal to MP3.
+ * |[
+ * gst-launch -v alsasrc ! audioconvert ! lame bitrate=192 ! filesink location=alsasrc.mp3
+ * ]| Record from a sound card using ALSA and encode to MP3
+ * |[
+ * gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lame bitrate=192 ! id3v2mux ! filesink location=music.mp3
+ * ]| Transcode from a .wav file to MP3 (the id3v2mux element is optional)
+ * |[
+ * gst-launch -v cdda://5 ! audioconvert ! lame bitrate=192 ! filesink location=track5.mp3
+ * ]| Encode Audio CD track 5 to MP3
+ * |[
+ * gst-launch -v audiotestsrc num-buffers=10 ! audio/x-raw-int,rate=44100,channels=1 ! lame bitrate=48 mode=3 ! filesink location=test.mp3
+ * ]| Encode to a fixed sample rate
+ * </refsect2>
+ *
+ * Last reviewed on 2007-07-24 (0.10.7)
+ */
+
+/* FIXME 0.11: Remove all properties except the useful ones. Nobody knows what most
+ * properties are doing and they're intended for LAME developers only.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "string.h"
+#include "gstlame.h"
+#include "gst/gst-i18n-plugin.h"
+
+#ifdef lame_set_preset
+#define GST_LAME_PRESET
+#endif
+
+GST_DEBUG_CATEGORY_STATIC (debug);
+#define GST_CAT_DEFAULT debug
+
+/* LAME can do MPEG-1, MPEG-2, and MPEG-2.5, so it has 9 possible
+ * sample rates it supports */
+static GstStaticPadTemplate gst_lame_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+        "signed = (boolean) true, "
+        "width = (int) 16, "
+        "depth = (int) 16, "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static GstStaticPadTemplate gst_lame_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, "
+        "layer = (int) 3, "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static struct
+{
+  gint bitrate;
+  gfloat compression_ratio;
+  gint quality;
+  gint mode;
+  gboolean force_ms;
+  gboolean free_format;
+  gboolean copyright;
+  gboolean original;
+  gboolean error_protection;
+  gboolean extension;
+  gboolean strict_iso;
+  gboolean disable_reservoir;
+  gint vbr;
+  gint vbr_quality;
+  gint vbr_mean_bitrate;
+  gint vbr_min_bitrate;
+  gint vbr_max_bitrate;
+  gint vbr_hard_min;
+  gint lowpass_freq;
+  gint lowpass_width;
+  gint highpass_freq;
+  gint highpass_width;
+  gboolean ath_only;
+  gboolean ath_short;
+  gboolean no_ath;
+  gint ath_type;
+  gint ath_lower;
+  gboolean allow_diff_short;
+  gboolean no_short_blocks;
+  gboolean emphasis;
+  gint preset;
+} gst_lame_default_settings;
+
+/********** Define useful types for non-programmatic interfaces **********/
+#define GST_TYPE_LAME_MODE (gst_lame_mode_get_type())
+static GType
+gst_lame_mode_get_type (void)
+{
+  static GType lame_mode_type = 0;
+  static GEnumValue lame_modes[] = {
+    {0, "Stereo", "stereo"},
+    {1, "Joint Stereo", "joint"},
+    {2, "Dual Channel", "dual"},
+    {3, "Mono", "mono"},
+    {4, "Auto", "auto"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_mode_type) {
+    lame_mode_type = g_enum_register_static ("GstLameMode", lame_modes);
+  }
+  return lame_mode_type;
+}
+
+#define GST_TYPE_LAME_QUALITY (gst_lame_quality_get_type())
+static GType
+gst_lame_quality_get_type (void)
+{
+  static GType lame_quality_type = 0;
+  static GEnumValue lame_quality[] = {
+    {0, "0 - Best", "0"},
+    {1, "1", "1"},
+    {2, "2", "2"},
+    {3, "3", "3"},
+    {4, "4", "4"},
+    {5, "5 - Default", "5"},
+    {6, "6", "6"},
+    {7, "7", "7"},
+    {8, "8", "8"},
+    {9, "9 - Worst", "9"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_quality_type) {
+    lame_quality_type = g_enum_register_static ("GstLameQuality", lame_quality);
+  }
+  return lame_quality_type;
+}
+
+#define GST_TYPE_LAME_PADDING (gst_lame_padding_get_type())
+static GType
+gst_lame_padding_get_type (void)
+{
+  static GType lame_padding_type = 0;
+  static GEnumValue lame_padding[] = {
+    {0, "No Padding", "never"},
+    {1, "Always Pad", "always"},
+    {2, "Adjust Padding", "adjust"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_padding_type) {
+    lame_padding_type = g_enum_register_static ("GstLamePadding", lame_padding);
+  }
+  return lame_padding_type;
+}
+
+#define GST_TYPE_LAME_VBRMODE (gst_lame_vbrmode_get_type())
+static GType
+gst_lame_vbrmode_get_type (void)
+{
+  static GType lame_vbrmode_type = 0;
+  static GEnumValue lame_vbrmode[] = {
+    {vbr_off, "No VBR (Constant Bitrate)", "none"},
+    {vbr_rh, "Lame's old VBR algorithm", "old"},
+    {vbr_abr, "VBR Average Bitrate", "abr"},
+    {vbr_mtrh, "Lame's new VBR algorithm", "new"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_vbrmode_type) {
+    lame_vbrmode_type = g_enum_register_static ("GstLameVbrmode", lame_vbrmode);
+  }
+
+  return lame_vbrmode_type;
+}
+
+#ifdef GSTLAME_PRESET
+#define GST_TYPE_LAME_PRESET (gst_lame_preset_get_type())
+static GType
+gst_lame_preset_get_type (void)
+{
+  static GType gst_lame_preset = 0;
+  static GEnumValue gst_lame_presets[] = {
+    {0, "None", "none"},
+    {MEDIUM, "Medium", "medium"},
+    {STANDARD, "Standard", "standard"},
+    {EXTREME, "Extreme", "extreme"},
+    {INSANE, "Insane", "insane"},
+    {0, NULL, NULL}
+  };
+
+  if (!gst_lame_preset) {
+    gst_lame_preset =
+        g_enum_register_static ("GstLamePreset", gst_lame_presets);
+  }
+
+  return gst_lame_preset;
+}
+#endif
+
+/********** Standard stuff for signals and arguments **********/
+
+enum
+{
+  ARG_0,
+  ARG_BITRATE,
+  ARG_COMPRESSION_RATIO,
+  ARG_QUALITY,
+  ARG_MODE,
+  ARG_FORCE_MS,
+  ARG_FREE_FORMAT,
+  ARG_COPYRIGHT,
+  ARG_ORIGINAL,
+  ARG_ERROR_PROTECTION,
+  ARG_PADDING_TYPE,             /* FIXME: remove in 0.11 */
+  ARG_EXTENSION,
+  ARG_STRICT_ISO,
+  ARG_DISABLE_RESERVOIR,
+  ARG_VBR,
+  ARG_VBR_MEAN_BITRATE,
+  ARG_VBR_MIN_BITRATE,
+  ARG_VBR_MAX_BITRATE,
+  ARG_VBR_HARD_MIN,
+  ARG_LOWPASS_FREQ,
+  ARG_LOWPASS_WIDTH,
+  ARG_HIGHPASS_FREQ,
+  ARG_HIGHPASS_WIDTH,
+  ARG_ATH_ONLY,
+  ARG_ATH_SHORT,
+  ARG_NO_ATH,
+  ARG_ATH_LOWER,
+  ARG_CWLIMIT,                  /* FIXME: remove in 0.11 */
+  ARG_ALLOW_DIFF_SHORT,
+  ARG_NO_SHORT_BLOCKS,
+  ARG_EMPHASIS,
+  ARG_VBR_QUALITY,
+#ifdef GSTLAME_PRESET
+  ARG_XINGHEADER,               /* FIXME: remove in 0.11 */
+  ARG_PRESET
+#else
+  ARG_XINGHEADER                /* FIXME: remove in 0.11 */
+#endif
+};
+
+static gboolean gst_lame_start (GstAudioEncoder * enc);
+static gboolean gst_lame_stop (GstAudioEncoder * enc);
+static gboolean gst_lame_set_format (GstAudioEncoder * enc,
+    GstAudioInfo * info);
+static GstFlowReturn gst_lame_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * in_buf);
+static void gst_lame_flush (GstAudioEncoder * enc);
+
+static void gst_lame_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_lame_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_lame_setup (GstLame * lame);
+
+static void
+gst_lame_add_interfaces (GType lame_type)
+{
+  static const GInterfaceInfo tag_setter_info = { NULL, NULL, NULL };
+
+  /* FIXME: remove support for the GstTagSetter interface in 0.11 */
+  g_type_add_interface_static (lame_type, GST_TYPE_TAG_SETTER,
+      &tag_setter_info);
+}
+
+GST_BOILERPLATE_FULL (GstLame, gst_lame, GstAudioEncoder,
+    GST_TYPE_AUDIO_ENCODER, gst_lame_add_interfaces);
+
+static void
+gst_lame_release_memory (GstLame * lame)
+{
+  if (lame->lgf) {
+    lame_close (lame->lgf);
+    lame->lgf = NULL;
+  }
+}
+
+static void
+gst_lame_finalize (GObject * obj)
+{
+  gst_lame_release_memory (GST_LAME (obj));
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_lame_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_lame_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_lame_sink_template);
+  gst_element_class_set_details_simple (element_class, "L.A.M.E. mp3 encoder",
+      "Codec/Encoder/Audio",
+      "High-quality free MP3 encoder (deprecated)",
+      "Erik Walthinsen <omega@cse.ogi.edu>, " "Wim Taymans <wim@fluendo.com>");
+}
+
+static void
+gst_lame_class_init (GstLameClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstAudioEncoderClass *base_class;
+
+  gobject_class = (GObjectClass *) klass;
+  base_class = (GstAudioEncoderClass *) klass;
+
+  gobject_class->set_property = gst_lame_set_property;
+  gobject_class->get_property = gst_lame_get_property;
+  gobject_class->finalize = gst_lame_finalize;
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_lame_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_lame_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_lame_set_format);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_lame_handle_frame);
+  base_class->flush = GST_DEBUG_FUNCPTR (gst_lame_flush);
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BITRATE,
+      g_param_spec_int ("bitrate", "Bitrate (kb/s)",
+          "Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, "
+          "112, 128, 160, 192, 224, 256 or 320)",
+          0, 320, gst_lame_default_settings.bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /* compression ratio set to 0.0 by default otherwise it overrides the bitrate setting */
+  g_object_class_install_property (G_OBJECT_CLASS (klass),
+      ARG_COMPRESSION_RATIO, g_param_spec_float ("compression-ratio",
+          "Compression Ratio",
+          "let lame choose bitrate to achieve selected compression ratio", 0.0,
+          200.0, gst_lame_default_settings.compression_ratio,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUALITY,
+      g_param_spec_enum ("quality", "Quality",
+          "Quality of algorithm used for encoding", GST_TYPE_LAME_QUALITY,
+          gst_lame_default_settings.quality,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODE,
+      g_param_spec_enum ("mode", "Mode", "Encoding mode", GST_TYPE_LAME_MODE,
+          gst_lame_default_settings.mode,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FORCE_MS,
+      g_param_spec_boolean ("force-ms", "Force ms",
+          "Force ms_stereo on all frames", gst_lame_default_settings.force_ms,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FREE_FORMAT,
+      g_param_spec_boolean ("free-format", "Free format",
+          "Produce a free format bitstream",
+          gst_lame_default_settings.free_format,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_COPYRIGHT,
+      g_param_spec_boolean ("copyright", "Copyright", "Mark as copyright",
+          gst_lame_default_settings.copyright,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ORIGINAL,
+      g_param_spec_boolean ("original", "Original", "Mark as original",
+          gst_lame_default_settings.original,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ERROR_PROTECTION,
+      g_param_spec_boolean ("error-protection", "Error protection",
+          "Adds 16 bit checksum to every frame",
+          gst_lame_default_settings.error_protection,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PADDING_TYPE,
+      g_param_spec_enum ("padding-type", "Padding type",
+          "Padding type " "(DEPRECATED: this setting has no effect)",
+          GST_TYPE_LAME_PADDING, FALSE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_EXTENSION,
+      g_param_spec_boolean ("extension", "Extension", "Extension",
+          gst_lame_default_settings.extension,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_STRICT_ISO,
+      g_param_spec_boolean ("strict-iso", "Strict ISO",
+          "Comply as much as possible to ISO MPEG spec", TRUE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass),
+      ARG_DISABLE_RESERVOIR, g_param_spec_boolean ("disable-reservoir",
+          "Disable reservoir", "Disable the bit reservoir", TRUE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR,
+      g_param_spec_enum ("vbr", "VBR", "Specify bitrate mode",
+          GST_TYPE_LAME_VBRMODE, gst_lame_default_settings.vbr,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_QUALITY,
+      g_param_spec_enum ("vbr-quality", "VBR Quality", "VBR Quality",
+          GST_TYPE_LAME_QUALITY, gst_lame_default_settings.vbr_quality,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_MEAN_BITRATE,
+      g_param_spec_int ("vbr-mean-bitrate", "VBR mean bitrate",
+          "Specify mean VBR bitrate", 0, 320,
+          gst_lame_default_settings.vbr_mean_bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_MIN_BITRATE,
+      g_param_spec_int ("vbr-min-bitrate", "VBR min bitrate",
+          "Specify minimum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, "
+          "112, 128, 160, 192, 224, 256 or 320)", 0, 320,
+          gst_lame_default_settings.vbr_min_bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_MAX_BITRATE,
+      g_param_spec_int ("vbr-max-bitrate", "VBR max bitrate",
+          "Specify maximum VBR bitrate (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, "
+          "112, 128, 160, 192, 224, 256 or 320)", 0, 320,
+          gst_lame_default_settings.vbr_max_bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_HARD_MIN,
+      g_param_spec_int ("vbr-hard-min", "VBR hard min",
+          "Specify whether min VBR bitrate is a hard limit. Normally, "
+          "it can be violated for silence", 0, 1,
+          gst_lame_default_settings.vbr_hard_min,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LOWPASS_FREQ,
+      g_param_spec_int ("lowpass-freq", "Lowpass freq",
+          "frequency(kHz), lowpass filter cutoff above freq", 0, 50000,
+          gst_lame_default_settings.lowpass_freq,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LOWPASS_WIDTH,
+      g_param_spec_int ("lowpass-width", "Lowpass width",
+          "frequency(kHz) - default 15% of lowpass freq", -1, G_MAXINT,
+          gst_lame_default_settings.lowpass_width,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HIGHPASS_FREQ,
+      g_param_spec_int ("highpass-freq", "Highpass freq",
+          "frequency(kHz), highpass filter cutoff below freq", 0, 50000,
+          gst_lame_default_settings.highpass_freq,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HIGHPASS_WIDTH,
+      g_param_spec_int ("highpass-width", "Highpass width",
+          "frequency(kHz) - default 15% of highpass freq", -1, G_MAXINT,
+          gst_lame_default_settings.highpass_width,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ATH_ONLY,
+      g_param_spec_boolean ("ath-only", "ATH only",
+          "Ignore GPSYCHO completely, use ATH only",
+          gst_lame_default_settings.ath_only,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ATH_SHORT,
+      g_param_spec_boolean ("ath-short", "ATH short",
+          "Ignore GPSYCHO for short blocks, use ATH only",
+          gst_lame_default_settings.ath_short,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NO_ATH,
+      g_param_spec_boolean ("no-ath", "No ath",
+          "turns ATH down to a flat noise floor",
+          gst_lame_default_settings.no_ath,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ATH_LOWER,
+      g_param_spec_int ("ath-lower", "ATH lower", "lowers ATH by x dB",
+          G_MININT, G_MAXINT, gst_lame_default_settings.ath_lower,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CWLIMIT,
+      g_param_spec_int ("cwlimit", "Cwlimit",
+          "Compute tonality up to freq (in kHz) default 8.8717 "
+          "(DEPRECATED: this setting has no effect)", 0, 50000, 0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ALLOW_DIFF_SHORT,
+      g_param_spec_boolean ("allow-diff-short", "Allow diff short",
+          "Allow diff short", gst_lame_default_settings.allow_diff_short,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NO_SHORT_BLOCKS,
+      g_param_spec_boolean ("no-short-blocks", "No short blocks",
+          "Do not use short blocks", gst_lame_default_settings.no_short_blocks,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_EMPHASIS,
+      g_param_spec_boolean ("emphasis", "Emphasis", "Emphasis",
+          gst_lame_default_settings.emphasis,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_XINGHEADER,
+      g_param_spec_boolean ("xingheader", "Output Xing Header",
+          "Output Xing Header (BROKEN, use xingmux instead)", FALSE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#ifdef GSTLAME_PRESET
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PRESET,
+      g_param_spec_enum ("preset", "Lame Preset", "Lame Preset",
+          GST_TYPE_LAME_PRESET, gst_lame_default_settings.preset,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif
+}
+
+static gboolean
+gst_lame_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstLame *lame;
+  gint out_samplerate;
+  gint version;
+  GstCaps *othercaps;
+  GstClockTime latency;
+
+  lame = GST_LAME (enc);
+
+  /* parameters already parsed for us */
+  lame->samplerate = GST_AUDIO_INFO_RATE (info);
+  lame->num_channels = GST_AUDIO_INFO_CHANNELS (info);
+
+  /* but we might be asked to reconfigure, so reset */
+  gst_lame_release_memory (lame);
+
+  GST_DEBUG_OBJECT (lame, "setting up lame");
+  if (!gst_lame_setup (lame))
+    goto setup_failed;
+
+  out_samplerate = lame_get_out_samplerate (lame->lgf);
+  if (out_samplerate == 0)
+    goto zero_output_rate;
+  if (out_samplerate != lame->samplerate) {
+    GST_WARNING_OBJECT (lame,
+        "output samplerate %d is different from incoming samplerate %d",
+        out_samplerate, lame->samplerate);
+  }
+  lame->out_samplerate = out_samplerate;
+
+  version = lame_get_version (lame->lgf);
+  if (version == 0)
+    version = 2;
+  else if (version == 1)
+    version = 1;
+  else if (version == 2)
+    version = 3;
+
+  othercaps =
+      gst_caps_new_simple ("audio/mpeg",
+      "mpegversion", G_TYPE_INT, 1,
+      "mpegaudioversion", G_TYPE_INT, version,
+      "layer", G_TYPE_INT, 3,
+      "channels", G_TYPE_INT, lame->mode == MONO ? 1 : lame->num_channels,
+      "rate", G_TYPE_INT, out_samplerate, NULL);
+
+  /* and use these caps */
+  gst_pad_set_caps (GST_AUDIO_ENCODER_SRC_PAD (lame), othercaps);
+  gst_caps_unref (othercaps);
+
+  /* base class feedback:
+   * - we will handle buffers, just hand us all available
+   * - report latency */
+  latency = gst_util_uint64_scale_int (lame_get_framesize (lame->lgf),
+      GST_SECOND, lame->samplerate);
+  gst_audio_encoder_set_latency (enc, latency, latency);
+
+  return TRUE;
+
+zero_output_rate:
+  {
+    GST_ELEMENT_ERROR (lame, LIBRARY, SETTINGS, (NULL),
+        ("LAME decided on a zero sample rate"));
+    return FALSE;
+  }
+setup_failed:
+  {
+    GST_ELEMENT_ERROR (lame, LIBRARY, SETTINGS,
+        (_("Failed to configure LAME encoder. Check your encoding parameters.")), (NULL));
+    return FALSE;
+  }
+}
+
+static void
+gst_lame_init (GstLame * lame, GstLameClass * klass)
+{
+  GST_DEBUG_OBJECT (lame, "starting initialization");
+
+  /* Set default settings */
+  lame->bitrate = gst_lame_default_settings.bitrate;
+  lame->compression_ratio = gst_lame_default_settings.compression_ratio;
+  lame->quality = gst_lame_default_settings.quality;
+  lame->mode = gst_lame_default_settings.mode;
+  lame->requested_mode = lame->mode;
+  lame->force_ms = gst_lame_default_settings.force_ms;
+  lame->free_format = gst_lame_default_settings.free_format;
+  lame->copyright = gst_lame_default_settings.copyright;
+  lame->original = gst_lame_default_settings.original;
+  lame->error_protection = gst_lame_default_settings.error_protection;
+  lame->extension = gst_lame_default_settings.extension;
+  lame->strict_iso = gst_lame_default_settings.strict_iso;
+  lame->disable_reservoir = gst_lame_default_settings.disable_reservoir;
+  lame->vbr = gst_lame_default_settings.vbr;
+  lame->vbr_quality = gst_lame_default_settings.vbr_quality;
+  lame->vbr_mean_bitrate = gst_lame_default_settings.vbr_mean_bitrate;
+  lame->vbr_min_bitrate = gst_lame_default_settings.vbr_min_bitrate;
+  lame->vbr_max_bitrate = gst_lame_default_settings.vbr_max_bitrate;
+  lame->vbr_hard_min = gst_lame_default_settings.vbr_hard_min;
+  lame->lowpass_freq = gst_lame_default_settings.lowpass_freq;
+  lame->lowpass_width = gst_lame_default_settings.lowpass_width;
+  lame->highpass_freq = gst_lame_default_settings.highpass_freq;
+  lame->highpass_width = gst_lame_default_settings.highpass_width;
+  lame->ath_only = gst_lame_default_settings.ath_only;
+  lame->ath_short = gst_lame_default_settings.ath_short;
+  lame->no_ath = gst_lame_default_settings.no_ath;
+  lame->ath_lower = gst_lame_default_settings.ath_lower;
+  lame->allow_diff_short = gst_lame_default_settings.allow_diff_short;
+  lame->no_short_blocks = gst_lame_default_settings.no_short_blocks;
+  lame->emphasis = gst_lame_default_settings.emphasis;
+  lame->preset = gst_lame_default_settings.preset;
+
+  GST_DEBUG_OBJECT (lame, "done initializing");
+}
+
+static gboolean
+gst_lame_start (GstAudioEncoder * enc)
+{
+  GstLame *lame = GST_LAME (enc);
+
+  if (!lame->adapter)
+    lame->adapter = gst_adapter_new ();
+  gst_adapter_clear (lame->adapter);
+
+  GST_DEBUG_OBJECT (lame, "start");
+  return TRUE;
+}
+
+static gboolean
+gst_lame_stop (GstAudioEncoder * enc)
+{
+  GstLame *lame = GST_LAME (enc);
+
+  GST_DEBUG_OBJECT (lame, "stop");
+
+  if (lame->adapter) {
+    g_object_unref (lame->adapter);
+    lame->adapter = NULL;
+  }
+
+  gst_lame_release_memory (lame);
+  return TRUE;
+}
+
+
+/* <php-emulation-mode>three underscores for ___rate is really really really
+ * private as opposed to one underscore<php-emulation-mode> */
+/* call this MACRO outside of the NULL state so that we have a higher chance
+ * of actually having a pipeline and bus to get the message through */
+
+#define CHECK_AND_FIXUP_BITRATE(obj,param,rate,free_format)              \
+G_STMT_START {                                                            \
+  gint ___rate = rate;                                                    \
+  gint maxrate = 320;                                                    \
+  gint multiplier = 64;                                                          \
+  if (!free_format) {                                                     \
+    if (rate == 0) {                                                      \
+      ___rate = rate;                                                     \
+    } else if (rate <= 64) {                                             \
+      maxrate = 64; multiplier = 8;                                       \
+      if ((rate % 8) != 0) ___rate = GST_ROUND_UP_8 (rate);              \
+    } else if (rate <= 128) {                                            \
+      maxrate = 128; multiplier = 16;                                     \
+      if ((rate % 16) != 0) ___rate = GST_ROUND_UP_16 (rate);             \
+    } else if (rate <= 256) {                                            \
+      maxrate = 256; multiplier = 32;                                     \
+      if ((rate % 32) != 0) ___rate = GST_ROUND_UP_32 (rate);             \
+    } else if (rate <= 320) {                                            \
+      maxrate = 320; multiplier = 64;                                     \
+      if ((rate % 64) != 0) ___rate = GST_ROUND_UP_64 (rate);             \
+    }                                                                     \
+    if (___rate != rate) {                                                \
+      GST_ELEMENT_WARNING (obj, LIBRARY, SETTINGS,                       \
+          (_("The requested bitrate %d kbit/s for property '%s' "         \
+             "is not allowed. "                                          \
+            "The bitrate was changed to %d kbit/s."), rate,              \
+           param,  ___rate),                                             \
+          ("A bitrate below %d should be a multiple of %d.",             \
+              maxrate, multiplier));                                     \
+      rate = ___rate;                                                     \
+    }                                                                     \
+  }                                                                       \
+} G_STMT_END
+
+static void
+gst_lame_set_property (GObject * object, guint prop_id, const GValue * value,
+    GParamSpec * pspec)
+{
+  GstLame *lame;
+
+  lame = GST_LAME (object);
+
+  switch (prop_id) {
+    case ARG_BITRATE:
+      lame->bitrate = g_value_get_int (value);
+      break;
+    case ARG_COMPRESSION_RATIO:
+      lame->compression_ratio = g_value_get_float (value);
+      break;
+    case ARG_QUALITY:
+      lame->quality = g_value_get_enum (value);
+      break;
+    case ARG_MODE:
+      lame->requested_mode = g_value_get_enum (value);
+      break;
+    case ARG_FORCE_MS:
+      lame->force_ms = g_value_get_boolean (value);
+      break;
+    case ARG_FREE_FORMAT:
+      lame->free_format = g_value_get_boolean (value);
+      break;
+    case ARG_COPYRIGHT:
+      lame->copyright = g_value_get_boolean (value);
+      break;
+    case ARG_ORIGINAL:
+      lame->original = g_value_get_boolean (value);
+      break;
+    case ARG_ERROR_PROTECTION:
+      lame->error_protection = g_value_get_boolean (value);
+      break;
+    case ARG_PADDING_TYPE:
+      break;
+    case ARG_EXTENSION:
+      lame->extension = g_value_get_boolean (value);
+      break;
+    case ARG_STRICT_ISO:
+      lame->strict_iso = g_value_get_boolean (value);
+      break;
+    case ARG_DISABLE_RESERVOIR:
+      lame->disable_reservoir = g_value_get_boolean (value);
+      break;
+    case ARG_VBR:
+      lame->vbr = g_value_get_enum (value);
+      break;
+    case ARG_VBR_QUALITY:
+      lame->vbr_quality = g_value_get_enum (value);
+      break;
+    case ARG_VBR_MEAN_BITRATE:
+      lame->vbr_mean_bitrate = g_value_get_int (value);
+      break;
+    case ARG_VBR_MIN_BITRATE:
+      lame->vbr_min_bitrate = g_value_get_int (value);
+      break;
+    case ARG_VBR_MAX_BITRATE:
+      lame->vbr_max_bitrate = g_value_get_int (value);
+      break;
+    case ARG_VBR_HARD_MIN:
+      lame->vbr_hard_min = g_value_get_int (value);
+      break;
+    case ARG_LOWPASS_FREQ:
+      lame->lowpass_freq = g_value_get_int (value);
+      break;
+    case ARG_LOWPASS_WIDTH:
+      lame->lowpass_width = g_value_get_int (value);
+      break;
+    case ARG_HIGHPASS_FREQ:
+      lame->highpass_freq = g_value_get_int (value);
+      break;
+    case ARG_HIGHPASS_WIDTH:
+      lame->highpass_width = g_value_get_int (value);
+      break;
+    case ARG_ATH_ONLY:
+      lame->ath_only = g_value_get_boolean (value);
+      break;
+    case ARG_ATH_SHORT:
+      lame->ath_short = g_value_get_boolean (value);
+      break;
+    case ARG_NO_ATH:
+      lame->no_ath = g_value_get_boolean (value);
+      break;
+    case ARG_ATH_LOWER:
+      lame->ath_lower = g_value_get_int (value);
+      break;
+    case ARG_CWLIMIT:
+      break;
+    case ARG_ALLOW_DIFF_SHORT:
+      lame->allow_diff_short = g_value_get_boolean (value);
+      break;
+    case ARG_NO_SHORT_BLOCKS:
+      lame->no_short_blocks = g_value_get_boolean (value);
+      break;
+    case ARG_EMPHASIS:
+      lame->emphasis = g_value_get_boolean (value);
+      break;
+    case ARG_XINGHEADER:
+      break;
+#ifdef GSTLAME_PRESET
+    case ARG_PRESET:
+      lame->preset = g_value_get_enum (value);
+      break;
+#endif
+    default:
+      break;
+  }
+
+}
+
+static void
+gst_lame_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstLame *lame;
+
+  lame = GST_LAME (object);
+
+  switch (prop_id) {
+    case ARG_BITRATE:
+      g_value_set_int (value, lame->bitrate);
+      break;
+    case ARG_COMPRESSION_RATIO:
+      g_value_set_float (value, lame->compression_ratio);
+      break;
+    case ARG_QUALITY:
+      g_value_set_enum (value, lame->quality);
+      break;
+    case ARG_MODE:
+      g_value_set_enum (value, lame->requested_mode);
+      break;
+    case ARG_FORCE_MS:
+      g_value_set_boolean (value, lame->force_ms);
+      break;
+    case ARG_FREE_FORMAT:
+      g_value_set_boolean (value, lame->free_format);
+      break;
+    case ARG_COPYRIGHT:
+      g_value_set_boolean (value, lame->copyright);
+      break;
+    case ARG_ORIGINAL:
+      g_value_set_boolean (value, lame->original);
+      break;
+    case ARG_ERROR_PROTECTION:
+      g_value_set_boolean (value, lame->error_protection);
+      break;
+    case ARG_PADDING_TYPE:
+      break;
+    case ARG_EXTENSION:
+      g_value_set_boolean (value, lame->extension);
+      break;
+    case ARG_STRICT_ISO:
+      g_value_set_boolean (value, lame->strict_iso);
+      break;
+    case ARG_DISABLE_RESERVOIR:
+      g_value_set_boolean (value, lame->disable_reservoir);
+      break;
+    case ARG_VBR:
+      g_value_set_enum (value, lame->vbr);
+      break;
+    case ARG_VBR_QUALITY:
+      g_value_set_enum (value, lame->vbr_quality);
+      break;
+    case ARG_VBR_MEAN_BITRATE:
+      g_value_set_int (value, lame->vbr_mean_bitrate);
+      break;
+    case ARG_VBR_MIN_BITRATE:
+      g_value_set_int (value, lame->vbr_min_bitrate);
+      break;
+    case ARG_VBR_MAX_BITRATE:
+      g_value_set_int (value, lame->vbr_max_bitrate);
+      break;
+    case ARG_VBR_HARD_MIN:
+      g_value_set_int (value, lame->vbr_hard_min);
+      break;
+    case ARG_LOWPASS_FREQ:
+      g_value_set_int (value, lame->lowpass_freq);
+      break;
+    case ARG_LOWPASS_WIDTH:
+      g_value_set_int (value, lame->lowpass_width);
+      break;
+    case ARG_HIGHPASS_FREQ:
+      g_value_set_int (value, lame->highpass_freq);
+      break;
+    case ARG_HIGHPASS_WIDTH:
+      g_value_set_int (value, lame->highpass_width);
+      break;
+    case ARG_ATH_ONLY:
+      g_value_set_boolean (value, lame->ath_only);
+      break;
+    case ARG_ATH_SHORT:
+      g_value_set_boolean (value, lame->ath_short);
+      break;
+    case ARG_NO_ATH:
+      g_value_set_boolean (value, lame->no_ath);
+      break;
+    case ARG_ATH_LOWER:
+      g_value_set_int (value, lame->ath_lower);
+      break;
+    case ARG_CWLIMIT:
+      break;
+    case ARG_ALLOW_DIFF_SHORT:
+      g_value_set_boolean (value, lame->allow_diff_short);
+      break;
+    case ARG_NO_SHORT_BLOCKS:
+      g_value_set_boolean (value, lame->no_short_blocks);
+      break;
+    case ARG_EMPHASIS:
+      g_value_set_boolean (value, lame->emphasis);
+      break;
+    case ARG_XINGHEADER:
+      break;
+#ifdef GSTLAME_PRESET
+    case ARG_PRESET:
+      g_value_set_enum (value, lame->preset);
+      break;
+#endif
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+/* **** credits go to mpegaudioparse **** */
+
+static const guint mp3types_bitrates[2][3][16] = {
+  {
+        {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,},
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,},
+        {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}
+      },
+  {
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}
+      },
+};
+
+static const guint mp3types_freqs[3][3] = { {44100, 48000, 32000},
+{22050, 24000, 16000},
+{11025, 12000, 8000}
+};
+
+static inline guint
+mp3_type_frame_length_from_header (GstLame * lame, guint32 header,
+    guint * put_version, guint * put_layer, guint * put_channels,
+    guint * put_bitrate, guint * put_samplerate, guint * put_mode,
+    guint * put_crc)
+{
+  guint length;
+  gulong mode, samplerate, bitrate, layer, channels, padding, crc;
+  gulong version;
+  gint lsf, mpg25;
+
+  if (header & (1 << 20)) {
+    lsf = (header & (1 << 19)) ? 0 : 1;
+    mpg25 = 0;
+  } else {
+    lsf = 1;
+    mpg25 = 1;
+  }
+
+  version = 1 + lsf + mpg25;
+
+  layer = 4 - ((header >> 17) & 0x3);
+
+  crc = (header >> 16) & 0x1;
+
+  bitrate = (header >> 12) & 0xF;
+  bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
+  /* The caller has ensured we have a valid header, so bitrate can't be
+     zero here. */
+  g_assert (bitrate != 0);
+
+  samplerate = (header >> 10) & 0x3;
+  samplerate = mp3types_freqs[lsf + mpg25][samplerate];
+
+  padding = (header >> 9) & 0x1;
+
+  mode = (header >> 6) & 0x3;
+  channels = (mode == 3) ? 1 : 2;
+
+  switch (layer) {
+    case 1:
+      length = 4 * ((bitrate * 12) / samplerate + padding);
+      break;
+    case 2:
+      length = (bitrate * 144) / samplerate + padding;
+      break;
+    default:
+    case 3:
+      length = (bitrate * 144) / (samplerate << lsf) + padding;
+      break;
+  }
+
+  GST_DEBUG_OBJECT (lame, "Calculated mp3 frame length of %u bytes", length);
+  GST_DEBUG_OBJECT (lame, "samplerate = %lu, bitrate = %lu, version = %lu, "
+      "layer = %lu, channels = %lu", samplerate, bitrate, version,
+      layer, channels);
+
+  if (put_version)
+    *put_version = version;
+  if (put_layer)
+    *put_layer = layer;
+  if (put_channels)
+    *put_channels = channels;
+  if (put_bitrate)
+    *put_bitrate = bitrate;
+  if (put_samplerate)
+    *put_samplerate = samplerate;
+  if (put_mode)
+    *put_mode = mode;
+  if (put_crc)
+    *put_crc = crc;
+
+  return length;
+}
+
+static gboolean
+mp3_sync_check (GstLame * lame, unsigned long head)
+{
+  GST_DEBUG_OBJECT (lame, "checking mp3 header 0x%08lx", head);
+  /* if it's not a valid sync */
+  if ((head & 0xffe00000) != 0xffe00000) {
+    GST_WARNING_OBJECT (lame, "invalid sync");
+    return FALSE;
+  }
+  /* if it's an invalid MPEG version */
+  if (((head >> 19) & 3) == 0x1) {
+    GST_WARNING_OBJECT (lame, "invalid MPEG version: 0x%lx", (head >> 19) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid layer */
+  if (!((head >> 17) & 3)) {
+    GST_WARNING_OBJECT (lame, "invalid layer: 0x%lx", (head >> 17) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid bitrate */
+  if (((head >> 12) & 0xf) == 0x0) {
+    GST_WARNING_OBJECT (lame, "invalid bitrate: 0x%lx."
+        "Free format files are not supported yet", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  if (((head >> 12) & 0xf) == 0xf) {
+    GST_WARNING_OBJECT (lame, "invalid bitrate: 0x%lx", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  /* if it's an invalid samplerate */
+  if (((head >> 10) & 0x3) == 0x3) {
+    GST_WARNING_OBJECT (lame, "invalid samplerate: 0x%lx", (head >> 10) & 0x3);
+    return FALSE;
+  }
+
+  if ((head & 0x3) == 0x2) {
+    /* Ignore this as there are some files with emphasis 0x2 that can
+     * be played fine. See BGO #537235 */
+    GST_WARNING_OBJECT (lame, "invalid emphasis: 0x%lx", head & 0x3);
+  }
+
+  return TRUE;
+}
+
+/* **** end mpegaudioparse **** */
+
+static GstFlowReturn
+gst_lame_finish_frames (GstLame * lame)
+{
+  gint av;
+  guint header;
+  GstFlowReturn result = GST_FLOW_OK;
+
+  /* limited parsing, we don't expect to lose sync here */
+  while ((result == GST_FLOW_OK) &&
+      ((av = gst_adapter_available (lame->adapter)) > 4)) {
+    guint rate, version, layer, size;
+    GstBuffer *mp3_buf;
+    const guint8 *data;
+
+    data = gst_adapter_peek (lame->adapter, 4);
+    header = GST_READ_UINT32_BE (data);
+    if (!mp3_sync_check (lame, header))
+      goto invalid_header;
+
+    size = mp3_type_frame_length_from_header (lame, header, &version, &layer,
+        NULL, NULL, &rate, NULL, NULL);
+
+    if (G_UNLIKELY (layer != 3 || rate != lame->out_samplerate)) {
+      GST_DEBUG_OBJECT (lame,
+          "unexpected mp3 header with rate %u, version %u, layer %u",
+          rate, version, layer);
+      goto invalid_header;
+    }
+
+    if (size > av) {
+      /* pretty likely to occur when lame is holding back on us */
+      GST_LOG_OBJECT (lame, "frame size %u (> %d)", size, av);
+      break;
+    }
+
+    /* should be ok now */
+    mp3_buf = gst_adapter_take_buffer (lame->adapter, size);
+    /* number of samples for MPEG-1, layer 3 */
+    result = gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (lame),
+        mp3_buf, version == 1 ? 1152 : 576);
+  }
+
+exit:
+  return result;
+
+  /* ERRORS */
+invalid_header:
+  {
+    GST_ELEMENT_ERROR (lame, STREAM, ENCODE,
+        ("invalid lame mp3 sync header %08X", header), (NULL));
+    result = GST_FLOW_ERROR;
+    goto exit;
+  }
+}
+
+static GstFlowReturn
+gst_lame_flush_full (GstLame * lame, gboolean push)
+{
+  GstBuffer *buf;
+  gint size;
+  GstFlowReturn result = GST_FLOW_OK;
+  gint av;
+
+  if (!lame->lgf)
+    return GST_FLOW_OK;
+
+  buf = gst_buffer_new_and_alloc (7200);
+  size = lame_encode_flush (lame->lgf, GST_BUFFER_DATA (buf), 7200);
+
+  if (size > 0) {
+    GST_BUFFER_SIZE (buf) = size;
+    GST_DEBUG_OBJECT (lame, "collecting final %d bytes", size);
+    gst_adapter_push (lame->adapter, buf);
+  } else {
+    GST_DEBUG_OBJECT (lame, "no final packet (size=%d, push=%d)", size, push);
+    gst_buffer_unref (buf);
+    result = GST_FLOW_OK;
+  }
+
+  if (push) {
+    result = gst_lame_finish_frames (lame);
+  } else {
+    /* never mind */
+    gst_adapter_clear (lame->adapter);
+  }
+
+  /* either way, we expect nothing left */
+  if ((av = gst_adapter_available (lame->adapter))) {
+    /* should this be more fatal ?? */
+    GST_WARNING_OBJECT (lame, "unparsed %d bytes left after flushing", av);
+    /* clean up anyway */
+    gst_adapter_clear (lame->adapter);
+  }
+
+  return result;
+}
+
+static void
+gst_lame_flush (GstAudioEncoder * enc)
+{
+  gst_lame_flush_full (GST_LAME (enc), FALSE);
+}
+
+static GstFlowReturn
+gst_lame_handle_frame (GstAudioEncoder * enc, GstBuffer * buf)
+{
+  GstLame *lame;
+  guchar *mp3_data;
+  GstBuffer *mp3_buf;
+  gint mp3_buffer_size, mp3_size;
+  GstFlowReturn result;
+  gint num_samples;
+  guint8 *data;
+  guint size;
+
+  lame = GST_LAME (enc);
+
+  /* squeeze remaining and push */
+  if (G_UNLIKELY (buf == NULL))
+    return gst_lame_flush_full (lame, TRUE);
+
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+
+  num_samples = size / 2;
+
+  /* allocate space for output */
+  mp3_buffer_size = 1.25 * num_samples + 7200;
+  mp3_buf = gst_buffer_new_and_alloc (mp3_buffer_size);
+  mp3_data = GST_BUFFER_DATA (mp3_buf);
+
+  /* lame seems to be too stupid to get mono interleaved going */
+  if (lame->num_channels == 1) {
+    mp3_size = lame_encode_buffer (lame->lgf,
+        (short int *) data,
+        (short int *) data, num_samples, mp3_data, mp3_buffer_size);
+  } else {
+    mp3_size = lame_encode_buffer_interleaved (lame->lgf,
+        (short int *) data,
+        num_samples / lame->num_channels, mp3_data, mp3_buffer_size);
+  }
+
+  GST_LOG_OBJECT (lame, "encoded %d bytes of audio to %d bytes of mp3",
+      size, mp3_size);
+
+  if (mp3_size < 0) {
+    g_warning ("error %d", mp3_size);
+  }
+
+  if (G_LIKELY (mp3_size > 0)) {
+    GST_BUFFER_SIZE (mp3_buf) = mp3_size;
+    /* unfortunately lame does not provide frame delineated output,
+     * so collect output and parse into frames ... */
+    gst_adapter_push (lame->adapter, mp3_buf);
+    result = gst_lame_finish_frames (lame);
+  } else {
+    if (mp3_size < 0) {
+      /* eat error ? */
+      g_warning ("error %d", mp3_size);
+    }
+    result = GST_FLOW_OK;
+    gst_buffer_unref (mp3_buf);
+  }
+
+  return result;
+}
+
+/* set up the encoder state */
+static gboolean
+gst_lame_setup (GstLame * lame)
+{
+
+#define CHECK_ERROR(command) G_STMT_START {\
+  if ((command) < 0) { \
+    GST_ERROR_OBJECT (lame, "setup failed: " G_STRINGIFY (command)); \
+    return FALSE; \
+  } \
+}G_STMT_END
+
+  int retval;
+  GstCaps *allowed_caps;
+
+  GST_DEBUG_OBJECT (lame, "starting setup");
+
+  /* check if we're already setup; if we are, we might want to check
+   * if this initialization is compatible with the previous one */
+  /* FIXME: do this */
+  if (lame->setup) {
+    GST_WARNING_OBJECT (lame, "already setup");
+    lame->setup = FALSE;
+  }
+
+  lame->lgf = lame_init ();
+
+  if (lame->lgf == NULL)
+    return FALSE;
+
+  /* copy the parameters over */
+  lame_set_in_samplerate (lame->lgf, lame->samplerate);
+
+  /* let lame choose default samplerate unless outgoing sample rate is fixed */
+  allowed_caps = gst_pad_get_allowed_caps (GST_AUDIO_ENCODER_SRC_PAD (lame));
+
+  if (allowed_caps != NULL) {
+    GstStructure *structure;
+    gint samplerate;
+
+    structure = gst_caps_get_structure (allowed_caps, 0);
+
+    if (gst_structure_get_int (structure, "rate", &samplerate)) {
+      GST_DEBUG_OBJECT (lame, "Setting sample rate to %d as fixed in src caps",
+          samplerate);
+      lame_set_out_samplerate (lame->lgf, samplerate);
+    } else {
+      GST_DEBUG_OBJECT (lame, "Letting lame choose sample rate");
+      lame_set_out_samplerate (lame->lgf, 0);
+    }
+    gst_caps_unref (allowed_caps);
+    allowed_caps = NULL;
+  } else {
+    GST_DEBUG_OBJECT (lame, "No peer yet, letting lame choose sample rate");
+    lame_set_out_samplerate (lame->lgf, 0);
+  }
+
+  /* force mono encoding if we only have one channel */
+  if (lame->num_channels == 1)
+    lame->mode = 3;
+  else
+    lame->mode = lame->requested_mode;
+
+  CHECK_ERROR (lame_set_num_channels (lame->lgf, lame->num_channels));
+  CHECK_AND_FIXUP_BITRATE (lame, "bitrate", lame->bitrate, lame->free_format);
+  CHECK_ERROR (lame_set_brate (lame->lgf, lame->bitrate));
+  CHECK_ERROR (lame_set_compression_ratio (lame->lgf, lame->compression_ratio));
+  CHECK_ERROR (lame_set_quality (lame->lgf, lame->quality));
+  CHECK_ERROR (lame_set_mode (lame->lgf, lame->mode));
+  CHECK_ERROR (lame_set_force_ms (lame->lgf, lame->force_ms));
+  CHECK_ERROR (lame_set_free_format (lame->lgf, lame->free_format));
+  CHECK_ERROR (lame_set_copyright (lame->lgf, lame->copyright));
+  CHECK_ERROR (lame_set_original (lame->lgf, lame->original));
+  CHECK_ERROR (lame_set_error_protection (lame->lgf, lame->error_protection));
+  CHECK_ERROR (lame_set_extension (lame->lgf, lame->extension));
+  CHECK_ERROR (lame_set_strict_ISO (lame->lgf, lame->strict_iso));
+  CHECK_ERROR (lame_set_disable_reservoir (lame->lgf, lame->disable_reservoir));
+  CHECK_ERROR (lame_set_VBR (lame->lgf, lame->vbr));
+  CHECK_ERROR (lame_set_VBR_q (lame->lgf, lame->vbr_quality));
+  CHECK_ERROR (lame_set_VBR_mean_bitrate_kbps (lame->lgf,
+          lame->vbr_mean_bitrate));
+  CHECK_AND_FIXUP_BITRATE (lame, "vbr-min-bitrate", lame->vbr_min_bitrate,
+      lame->free_format);
+  CHECK_ERROR (lame_set_VBR_min_bitrate_kbps (lame->lgf,
+          lame->vbr_min_bitrate));
+  CHECK_AND_FIXUP_BITRATE (lame, "vbr-max-bitrate", lame->vbr_max_bitrate,
+      lame->free_format);
+  CHECK_ERROR (lame_set_VBR_max_bitrate_kbps (lame->lgf,
+          lame->vbr_max_bitrate));
+  CHECK_ERROR (lame_set_VBR_hard_min (lame->lgf, lame->vbr_hard_min));
+  CHECK_ERROR (lame_set_lowpassfreq (lame->lgf, lame->lowpass_freq));
+  CHECK_ERROR (lame_set_lowpasswidth (lame->lgf, lame->lowpass_width));
+  CHECK_ERROR (lame_set_highpassfreq (lame->lgf, lame->highpass_freq));
+  CHECK_ERROR (lame_set_highpasswidth (lame->lgf, lame->highpass_width));
+  CHECK_ERROR (lame_set_ATHonly (lame->lgf, lame->ath_only));
+  CHECK_ERROR (lame_set_ATHshort (lame->lgf, lame->ath_short));
+  CHECK_ERROR (lame_set_noATH (lame->lgf, lame->no_ath));
+  CHECK_ERROR (lame_set_ATHlower (lame->lgf, lame->ath_lower));
+  CHECK_ERROR (lame_set_allow_diff_short (lame->lgf, lame->allow_diff_short));
+  CHECK_ERROR (lame_set_no_short_blocks (lame->lgf, lame->no_short_blocks));
+  CHECK_ERROR (lame_set_emphasis (lame->lgf, lame->emphasis));
+  CHECK_ERROR (lame_set_bWriteVbrTag (lame->lgf, 0));
+#ifdef GSTLAME_PRESET
+  if (lame->preset > 0) {
+    CHECK_ERROR (lame_set_preset (lame->lgf, lame->preset));
+  }
+#endif
+
+  /* initialize the lame encoder */
+  if ((retval = lame_init_params (lame->lgf)) >= 0) {
+    lame->setup = TRUE;
+    /* FIXME: it would be nice to print out the mode here */
+    GST_INFO ("lame encoder setup (%d kbit/s, %d Hz, %d channels)",
+        lame->bitrate, lame->samplerate, lame->num_channels);
+  } else {
+    GST_ERROR_OBJECT (lame, "lame_init_params returned %d", retval);
+  }
+
+  GST_DEBUG_OBJECT (lame, "done with setup");
+
+  return lame->setup;
+#undef CHECK_ERROR
+}
+
+static gboolean
+gst_lame_get_default_settings (void)
+{
+  lame_global_flags *lgf = NULL;
+
+  lgf = lame_init ();
+  if (lgf == NULL) {
+    GST_ERROR ("Error initializing LAME");
+    return FALSE;
+  }
+
+  if (lame_init_params (lgf) < 0) {
+    GST_ERROR ("Error getting default settings");
+    return FALSE;
+  }
+
+  gst_lame_default_settings.bitrate = lame_get_brate (lgf);
+  gst_lame_default_settings.compression_ratio = 0.0;    /* lame_get_compression_ratio (lgf); */
+  gst_lame_default_settings.quality = lame_get_quality (lgf);
+  gst_lame_default_settings.mode = lame_get_mode (lgf);
+  gst_lame_default_settings.force_ms = lame_get_force_ms (lgf);
+  gst_lame_default_settings.free_format = lame_get_free_format (lgf);
+  gst_lame_default_settings.copyright = lame_get_copyright (lgf);
+  gst_lame_default_settings.original = lame_get_original (lgf);
+  gst_lame_default_settings.error_protection = lame_get_error_protection (lgf);
+  gst_lame_default_settings.extension = lame_get_extension (lgf);
+  gst_lame_default_settings.strict_iso = lame_get_strict_ISO (lgf);
+  gst_lame_default_settings.disable_reservoir =
+      lame_get_disable_reservoir (lgf);
+  gst_lame_default_settings.vbr = lame_get_VBR (lgf);
+  gst_lame_default_settings.vbr_quality = lame_get_VBR_q (lgf);
+  gst_lame_default_settings.vbr_mean_bitrate =
+      lame_get_VBR_mean_bitrate_kbps (lgf);
+  gst_lame_default_settings.vbr_min_bitrate =
+      lame_get_VBR_min_bitrate_kbps (lgf);
+  gst_lame_default_settings.vbr_max_bitrate =
+      lame_get_VBR_max_bitrate_kbps (lgf);
+  gst_lame_default_settings.vbr_hard_min = lame_get_VBR_hard_min (lgf);
+  gst_lame_default_settings.lowpass_freq = lame_get_lowpassfreq (lgf);
+  gst_lame_default_settings.lowpass_width = lame_get_lowpasswidth (lgf);
+  gst_lame_default_settings.highpass_freq = lame_get_highpassfreq (lgf);
+  gst_lame_default_settings.highpass_width = lame_get_highpasswidth (lgf);
+  gst_lame_default_settings.ath_only = lame_get_ATHonly (lgf);
+  gst_lame_default_settings.ath_short = lame_get_ATHshort (lgf);
+  gst_lame_default_settings.no_ath = lame_get_noATH (lgf);
+  gst_lame_default_settings.ath_type = lame_get_ATHtype (lgf);
+  gst_lame_default_settings.ath_lower = lame_get_ATHlower (lgf);
+  gst_lame_default_settings.allow_diff_short = lame_get_allow_diff_short (lgf);
+  gst_lame_default_settings.no_short_blocks = lame_get_no_short_blocks (lgf);
+  gst_lame_default_settings.emphasis = lame_get_emphasis (lgf);
+  gst_lame_default_settings.preset = 0;
+
+  lame_close (lgf);
+
+  return TRUE;
+}
+
+gboolean
+gst_lame_register (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (debug, "lame", 0, "lame mp3 encoder");
+
+  if (!gst_lame_get_default_settings ())
+    return FALSE;
+
+  if (!gst_element_register (plugin, "lame", GST_RANK_MARGINAL, GST_TYPE_LAME))
+    return FALSE;
+
+  return TRUE;
+}
diff --git a/ext/lame/gstlame.h b/ext/lame/gstlame.h
new file mode 100644 (file)
index 0000000..f12a47d
--- /dev/null
@@ -0,0 +1,109 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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_LAME_H__
+#define __GST_LAME_H__
+
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#include <lame/lame.h>
+#include <gst/audio/gstaudioencoder.h>
+#include <gst/base/gstadapter.h>
+
+#define GST_TYPE_LAME \
+  (gst_lame_get_type())
+#define GST_LAME(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LAME,GstLame))
+#define GST_LAME_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_LAME,GstLameClass))
+#define GST_IS_LAME(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LAME))
+#define GST_IS_LAME_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LAME))
+
+typedef struct _GstLame GstLame;
+typedef struct _GstLameClass GstLameClass;
+
+/**
+ * GstLame:
+ *
+ * Opaque data structure.
+ */
+struct _GstLame {
+  GstAudioEncoder element;
+
+  /*< private >*/
+
+  gint samplerate;
+  gint out_samplerate;
+  gint num_channels;
+  gboolean setup;
+
+  gint bitrate;
+  gfloat compression_ratio;
+  gint quality;
+  gint mode; /* actual mode in use now */
+  gint requested_mode; /* requested mode by user/app */
+  gboolean force_ms;
+  gboolean free_format;
+  gboolean copyright;
+  gboolean original;
+  gboolean error_protection;
+  gboolean extension;
+  gboolean strict_iso;
+  gboolean disable_reservoir;
+  gint vbr;
+  gint vbr_quality;
+  gint vbr_mean_bitrate;
+  gint vbr_min_bitrate;
+  gint vbr_max_bitrate;
+  gint vbr_hard_min;
+  gint lowpass_freq;
+  gint lowpass_width;
+  gint highpass_freq;
+  gint highpass_width;
+  gboolean ath_only;
+  gboolean ath_short;
+  gboolean no_ath;
+  gint ath_type;
+  gint ath_lower;
+  gboolean allow_diff_short;
+  gboolean no_short_blocks;
+  gboolean emphasis;
+  gint preset;
+
+  lame_global_flags *lgf;
+
+  GstAdapter *adapter;
+};
+
+struct _GstLameClass {
+  GstAudioEncoderClass parent_class;
+};
+
+GType gst_lame_get_type(void);
+gboolean gst_lame_register (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_LAME_H__ */
diff --git a/ext/lame/gstlamemp3enc.c b/ext/lame/gstlamemp3enc.c
new file mode 100644 (file)
index 0000000..c8cd3e6
--- /dev/null
@@ -0,0 +1,919 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2004> Wim Taymans <wim@fluendo.com>
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ * Copyright (C) <2009> Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ *
+ * 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-lamemp3enc
+ * @see_also: lame, mad, vorbisenc
+ *
+ * This element encodes raw integer audio into an MPEG-1 layer 3 (MP3) stream.
+ * Note that <ulink url="http://en.wikipedia.org/wiki/MP3">MP3</ulink> is not
+ * a free format, there are licensing and patent issues to take into
+ * consideration. See <ulink url="http://www.vorbis.com/">Ogg/Vorbis</ulink>
+ * for a royalty free (and often higher quality) alternative.
+ *
+ * <refsect2>
+ * <title>Output sample rate</title>
+ * If no fixed output sample rate is negotiated on the element's src pad,
+ * the element will choose an optimal sample rate to resample to internally.
+ * For example, a 16-bit 44.1 KHz mono audio stream encoded at 48 kbit will
+ * get resampled to 32 KHz.  Use filter caps on the src pad to force a
+ * particular sample rate.
+ * </refsect2>
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch -v audiotestsrc wave=sine num-buffers=100 ! audioconvert ! lamemp3enc ! filesink location=sine.mp3
+ * ]| Encode a test sine signal to MP3.
+ * |[
+ * gst-launch -v alsasrc ! audioconvert ! lamemp3enc target=bitrate bitrate=192 ! filesink location=alsasrc.mp3
+ * ]| Record from a sound card using ALSA and encode to MP3 with an average bitrate of 192kbps
+ * |[
+ * gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lamemp3enc target=quality quality=0 ! id3v2mux ! filesink location=music.mp3
+ * ]| Transcode from a .wav file to MP3 (the id3v2mux element is optional) with best VBR quality
+ * |[
+ * gst-launch -v cdda://5 ! audioconvert ! lamemp3enc target=bitrate cbr=true bitrate=192 ! filesink location=track5.mp3
+ * ]| Encode Audio CD track 5 to MP3 with a constant bitrate of 192kbps
+ * |[
+ * gst-launch -v audiotestsrc num-buffers=10 ! audio/x-raw-int,rate=44100,channels=1 ! lamemp3enc target=bitrate cbr=true bitrate=48 ! filesink location=test.mp3
+ * ]| Encode to a fixed sample rate
+ * </refsect2>
+ *
+ * Since: 0.10.12
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include "gstlamemp3enc.h"
+#include <gst/gst-i18n-plugin.h>
+
+/* lame < 3.98 */
+#ifndef HAVE_LAME_SET_VBR_QUALITY
+#define lame_set_VBR_quality(flags,q) lame_set_VBR_q((flags),(int)(q))
+#endif
+
+GST_DEBUG_CATEGORY_STATIC (debug);
+#define GST_CAT_DEFAULT debug
+
+/* elementfactory information */
+
+/* LAMEMP3ENC can do MPEG-1, MPEG-2, and MPEG-2.5, so it has 9 possible
+ * sample rates it supports */
+static GstStaticPadTemplate gst_lamemp3enc_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+        "signed = (boolean) true, "
+        "width = (int) 16, "
+        "depth = (int) 16, "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static GstStaticPadTemplate gst_lamemp3enc_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, "
+        "layer = (int) 3, "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+/********** Define useful types for non-programmatic interfaces **********/
+enum
+{
+  LAMEMP3ENC_TARGET_QUALITY = 0,
+  LAMEMP3ENC_TARGET_BITRATE
+};
+
+#define GST_TYPE_LAMEMP3ENC_TARGET (gst_lamemp3enc_target_get_type())
+static GType
+gst_lamemp3enc_target_get_type (void)
+{
+  static GType lame_target_type = 0;
+  static GEnumValue lame_targets[] = {
+    {LAMEMP3ENC_TARGET_QUALITY, "Quality", "quality"},
+    {LAMEMP3ENC_TARGET_BITRATE, "Bitrate", "bitrate"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_target_type) {
+    lame_target_type =
+        g_enum_register_static ("GstLameMP3EncTarget", lame_targets);
+  }
+  return lame_target_type;
+}
+
+enum
+{
+  LAMEMP3ENC_ENCODING_ENGINE_QUALITY_FAST = 0,
+  LAMEMP3ENC_ENCODING_ENGINE_QUALITY_STANDARD,
+  LAMEMP3ENC_ENCODING_ENGINE_QUALITY_HIGH
+};
+
+#define GST_TYPE_LAMEMP3ENC_ENCODING_ENGINE_QUALITY (gst_lamemp3enc_encoding_engine_quality_get_type())
+static GType
+gst_lamemp3enc_encoding_engine_quality_get_type (void)
+{
+  static GType lame_encoding_engine_quality_type = 0;
+  static GEnumValue lame_encoding_engine_quality[] = {
+    {0, "Fast", "fast"},
+    {1, "Standard", "standard"},
+    {2, "High", "high"},
+    {0, NULL, NULL}
+  };
+
+  if (!lame_encoding_engine_quality_type) {
+    lame_encoding_engine_quality_type =
+        g_enum_register_static ("GstLameMP3EncEncodingEngineQuality",
+        lame_encoding_engine_quality);
+  }
+  return lame_encoding_engine_quality_type;
+}
+
+/********** Standard stuff for signals and arguments **********/
+
+enum
+{
+  ARG_0,
+  ARG_TARGET,
+  ARG_BITRATE,
+  ARG_CBR,
+  ARG_QUALITY,
+  ARG_ENCODING_ENGINE_QUALITY,
+  ARG_MONO
+};
+
+#define DEFAULT_TARGET LAMEMP3ENC_TARGET_QUALITY
+#define DEFAULT_BITRATE 128
+#define DEFAULT_CBR FALSE
+#define DEFAULT_QUALITY 4
+#define DEFAULT_ENCODING_ENGINE_QUALITY LAMEMP3ENC_ENCODING_ENGINE_QUALITY_STANDARD
+#define DEFAULT_MONO FALSE
+
+static gboolean gst_lamemp3enc_start (GstAudioEncoder * enc);
+static gboolean gst_lamemp3enc_stop (GstAudioEncoder * enc);
+static gboolean gst_lamemp3enc_set_format (GstAudioEncoder * enc,
+    GstAudioInfo * info);
+static GstFlowReturn gst_lamemp3enc_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * in_buf);
+static void gst_lamemp3enc_flush (GstAudioEncoder * enc);
+
+static void gst_lamemp3enc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_lamemp3enc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_lamemp3enc_setup (GstLameMP3Enc * lame, GstTagList ** tags);
+
+GST_BOILERPLATE (GstLameMP3Enc, gst_lamemp3enc, GstAudioEncoder,
+    GST_TYPE_AUDIO_ENCODER);
+
+static void
+gst_lamemp3enc_release_memory (GstLameMP3Enc * lame)
+{
+  if (lame->lgf) {
+    lame_close (lame->lgf);
+    lame->lgf = NULL;
+  }
+}
+
+static void
+gst_lamemp3enc_finalize (GObject * obj)
+{
+  gst_lamemp3enc_release_memory (GST_LAMEMP3ENC (obj));
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_lamemp3enc_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_lamemp3enc_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_lamemp3enc_sink_template);
+  gst_element_class_set_details_simple (element_class, "L.A.M.E. mp3 encoder",
+      "Codec/Encoder/Audio",
+      "High-quality free MP3 encoder",
+      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+}
+
+static void
+gst_lamemp3enc_class_init (GstLameMP3EncClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstAudioEncoderClass *base_class;
+
+  gobject_class = (GObjectClass *) klass;
+  base_class = (GstAudioEncoderClass *) klass;
+
+  gobject_class->set_property = gst_lamemp3enc_set_property;
+  gobject_class->get_property = gst_lamemp3enc_get_property;
+  gobject_class->finalize = gst_lamemp3enc_finalize;
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_lamemp3enc_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_lamemp3enc_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_lamemp3enc_set_format);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_lamemp3enc_handle_frame);
+  base_class->flush = GST_DEBUG_FUNCPTR (gst_lamemp3enc_flush);
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TARGET,
+      g_param_spec_enum ("target", "Target",
+          "Optimize for quality or bitrate", GST_TYPE_LAMEMP3ENC_TARGET,
+          DEFAULT_TARGET,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BITRATE,
+      g_param_spec_int ("bitrate", "Bitrate (kb/s)",
+          "Bitrate in kbit/sec (Only valid if target is bitrate, for CBR one "
+          "of 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, "
+          "256 or 320)", 8, 320, DEFAULT_BITRATE,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_CBR,
+      g_param_spec_boolean ("cbr", "CBR", "Enforce constant bitrate encoding "
+          "(Only valid if target is bitrate)", DEFAULT_CBR,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUALITY,
+      g_param_spec_float ("quality", "Quality",
+          "VBR Quality from 0 to 10, 0 being the best "
+          "(Only valid if target is quality)", 0.0, 9.999,
+          DEFAULT_QUALITY,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass),
+      ARG_ENCODING_ENGINE_QUALITY, g_param_spec_enum ("encoding-engine-quality",
+          "Encoding Engine Quality", "Quality/speed of the encoding engine, "
+          "this does not affect the bitrate!",
+          GST_TYPE_LAMEMP3ENC_ENCODING_ENGINE_QUALITY,
+          DEFAULT_ENCODING_ENGINE_QUALITY,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MONO,
+      g_param_spec_boolean ("mono", "Mono", "Enforce mono encoding",
+          DEFAULT_MONO,
+          G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_lamemp3enc_init (GstLameMP3Enc * lame, GstLameMP3EncClass * klass)
+{
+}
+
+static gboolean
+gst_lamemp3enc_start (GstAudioEncoder * enc)
+{
+  GstLameMP3Enc *lame = GST_LAMEMP3ENC (enc);
+
+  GST_DEBUG_OBJECT (lame, "start");
+
+  if (!lame->adapter)
+    lame->adapter = gst_adapter_new ();
+  gst_adapter_clear (lame->adapter);
+
+  return TRUE;
+}
+
+static gboolean
+gst_lamemp3enc_stop (GstAudioEncoder * enc)
+{
+  GstLameMP3Enc *lame = GST_LAMEMP3ENC (enc);
+
+  GST_DEBUG_OBJECT (lame, "stop");
+
+  if (lame->adapter) {
+    g_object_unref (lame->adapter);
+    lame->adapter = NULL;
+  }
+
+  gst_lamemp3enc_release_memory (lame);
+  return TRUE;
+}
+
+static gboolean
+gst_lamemp3enc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstLameMP3Enc *lame;
+  gint out_samplerate;
+  gint version;
+  GstCaps *othercaps;
+  GstClockTime latency;
+  GstTagList *tags = NULL;
+
+  lame = GST_LAMEMP3ENC (enc);
+
+  /* parameters already parsed for us */
+  lame->samplerate = GST_AUDIO_INFO_RATE (info);
+  lame->num_channels = GST_AUDIO_INFO_CHANNELS (info);
+
+  /* but we might be asked to reconfigure, so reset */
+  gst_lamemp3enc_release_memory (lame);
+
+  GST_DEBUG_OBJECT (lame, "setting up lame");
+  if (!gst_lamemp3enc_setup (lame, &tags))
+    goto setup_failed;
+
+  out_samplerate = lame_get_out_samplerate (lame->lgf);
+  if (out_samplerate == 0)
+    goto zero_output_rate;
+  if (out_samplerate != lame->samplerate) {
+    GST_WARNING_OBJECT (lame,
+        "output samplerate %d is different from incoming samplerate %d",
+        out_samplerate, lame->samplerate);
+  }
+  lame->out_samplerate = out_samplerate;
+
+  version = lame_get_version (lame->lgf);
+  if (version == 0)
+    version = 2;
+  else if (version == 1)
+    version = 1;
+  else if (version == 2)
+    version = 3;
+
+  othercaps =
+      gst_caps_new_simple ("audio/mpeg",
+      "mpegversion", G_TYPE_INT, 1,
+      "mpegaudioversion", G_TYPE_INT, version,
+      "layer", G_TYPE_INT, 3,
+      "channels", G_TYPE_INT, lame->mono ? 1 : lame->num_channels,
+      "rate", G_TYPE_INT, out_samplerate, NULL);
+
+  /* and use these caps */
+  gst_pad_set_caps (GST_AUDIO_ENCODER_SRC_PAD (enc), othercaps);
+  gst_caps_unref (othercaps);
+
+  /* base class feedback:
+   * - we will handle buffers, just hand us all available
+   * - report latency */
+  latency = gst_util_uint64_scale_int (lame_get_framesize (lame->lgf),
+      GST_SECOND, lame->samplerate);
+  gst_audio_encoder_set_latency (enc, latency, latency);
+
+  if (tags) {
+    gst_audio_encoder_merge_tags (enc, tags, GST_TAG_MERGE_REPLACE);
+    gst_tag_list_free (tags);
+  }
+
+  return TRUE;
+
+zero_output_rate:
+  {
+    if (tags)
+      gst_tag_list_free (tags);
+    GST_ELEMENT_ERROR (lame, LIBRARY, SETTINGS, (NULL),
+        ("LAMEMP3ENC decided on a zero sample rate"));
+    return FALSE;
+  }
+setup_failed:
+  {
+    GST_ELEMENT_ERROR (lame, LIBRARY, SETTINGS,
+        (_("Failed to configure LAMEMP3ENC encoder. Check your encoding parameters.")), (NULL));
+    return FALSE;
+  }
+}
+
+/* <php-emulation-mode>three underscores for ___rate is really really really
+ * private as opposed to one underscore<php-emulation-mode> */
+/* call this MACRO outside of the NULL state so that we have a higher chance
+ * of actually having a pipeline and bus to get the message through */
+
+#define CHECK_AND_FIXUP_BITRATE(obj,param,rate)                                  \
+G_STMT_START {                                                            \
+  gint ___rate = rate;                                                    \
+  gint maxrate = 320;                                                    \
+  gint multiplier = 64;                                                          \
+  if (rate == 0) {                                                        \
+    ___rate = rate;                                                       \
+  } else if (rate <= 64) {                                               \
+    maxrate = 64; multiplier = 8;                                         \
+    if ((rate % 8) != 0) ___rate = GST_ROUND_UP_8 (rate);                \
+  } else if (rate <= 128) {                                              \
+    maxrate = 128; multiplier = 16;                                       \
+    if ((rate % 16) != 0) ___rate = GST_ROUND_UP_16 (rate);               \
+  } else if (rate <= 256) {                                              \
+    maxrate = 256; multiplier = 32;                                       \
+    if ((rate % 32) != 0) ___rate = GST_ROUND_UP_32 (rate);               \
+  } else if (rate <= 320) {                                              \
+    maxrate = 320; multiplier = 64;                                       \
+    if ((rate % 64) != 0) ___rate = GST_ROUND_UP_64 (rate);               \
+  }                                                                       \
+  if (___rate != rate) {                                                  \
+    GST_ELEMENT_WARNING (obj, LIBRARY, SETTINGS,                         \
+      (_("The requested bitrate %d kbit/s for property '%s' "             \
+       "is not allowed. "                                                \
+       "The bitrate was changed to %d kbit/s."), rate,                   \
+         param,  ___rate),                                               \
+       ("A bitrate below %d should be a multiple of %d.",                \
+          maxrate, multiplier));                                         \
+    rate = ___rate;                                                       \
+  }                                                                       \
+} G_STMT_END
+
+static void
+gst_lamemp3enc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstLameMP3Enc *lame;
+
+  lame = GST_LAMEMP3ENC (object);
+
+  switch (prop_id) {
+    case ARG_TARGET:
+      lame->target = g_value_get_enum (value);
+      break;
+    case ARG_BITRATE:
+      lame->bitrate = g_value_get_int (value);
+      break;
+    case ARG_CBR:
+      lame->cbr = g_value_get_boolean (value);
+      break;
+    case ARG_QUALITY:
+      lame->quality = g_value_get_float (value);
+      break;
+    case ARG_ENCODING_ENGINE_QUALITY:
+      lame->encoding_engine_quality = g_value_get_enum (value);
+      break;
+    case ARG_MONO:
+      lame->mono = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_lamemp3enc_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstLameMP3Enc *lame;
+
+  lame = GST_LAMEMP3ENC (object);
+
+  switch (prop_id) {
+    case ARG_TARGET:
+      g_value_set_enum (value, lame->target);
+      break;
+    case ARG_BITRATE:
+      g_value_set_int (value, lame->bitrate);
+      break;
+    case ARG_CBR:
+      g_value_set_boolean (value, lame->cbr);
+      break;
+    case ARG_QUALITY:
+      g_value_set_float (value, lame->quality);
+      break;
+    case ARG_ENCODING_ENGINE_QUALITY:
+      g_value_set_enum (value, lame->encoding_engine_quality);
+      break;
+    case ARG_MONO:
+      g_value_set_boolean (value, lame->mono);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+/* **** credits go to mpegaudioparse **** */
+
+static const guint mp3types_bitrates[2][3][16] = {
+  {
+        {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,},
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,},
+        {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}
+      },
+  {
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}
+      },
+};
+
+static const guint mp3types_freqs[3][3] = { {44100, 48000, 32000},
+{22050, 24000, 16000},
+{11025, 12000, 8000}
+};
+
+static inline guint
+mp3_type_frame_length_from_header (GstLameMP3Enc * lame, guint32 header,
+    guint * put_version, guint * put_layer, guint * put_channels,
+    guint * put_bitrate, guint * put_samplerate, guint * put_mode,
+    guint * put_crc)
+{
+  guint length;
+  gulong mode, samplerate, bitrate, layer, channels, padding, crc;
+  gulong version;
+  gint lsf, mpg25;
+
+  if (header & (1 << 20)) {
+    lsf = (header & (1 << 19)) ? 0 : 1;
+    mpg25 = 0;
+  } else {
+    lsf = 1;
+    mpg25 = 1;
+  }
+
+  version = 1 + lsf + mpg25;
+
+  layer = 4 - ((header >> 17) & 0x3);
+
+  crc = (header >> 16) & 0x1;
+
+  bitrate = (header >> 12) & 0xF;
+  bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
+  /* The caller has ensured we have a valid header, so bitrate can't be
+     zero here. */
+  g_assert (bitrate != 0);
+
+  samplerate = (header >> 10) & 0x3;
+  samplerate = mp3types_freqs[lsf + mpg25][samplerate];
+
+  padding = (header >> 9) & 0x1;
+
+  mode = (header >> 6) & 0x3;
+  channels = (mode == 3) ? 1 : 2;
+
+  switch (layer) {
+    case 1:
+      length = 4 * ((bitrate * 12) / samplerate + padding);
+      break;
+    case 2:
+      length = (bitrate * 144) / samplerate + padding;
+      break;
+    default:
+    case 3:
+      length = (bitrate * 144) / (samplerate << lsf) + padding;
+      break;
+  }
+
+  GST_DEBUG_OBJECT (lame, "Calculated mp3 frame length of %u bytes", length);
+  GST_DEBUG_OBJECT (lame, "samplerate = %lu, bitrate = %lu, version = %lu, "
+      "layer = %lu, channels = %lu", samplerate, bitrate, version,
+      layer, channels);
+
+  if (put_version)
+    *put_version = version;
+  if (put_layer)
+    *put_layer = layer;
+  if (put_channels)
+    *put_channels = channels;
+  if (put_bitrate)
+    *put_bitrate = bitrate;
+  if (put_samplerate)
+    *put_samplerate = samplerate;
+  if (put_mode)
+    *put_mode = mode;
+  if (put_crc)
+    *put_crc = crc;
+
+  return length;
+}
+
+static gboolean
+mp3_sync_check (GstLameMP3Enc * lame, unsigned long head)
+{
+  GST_DEBUG_OBJECT (lame, "checking mp3 header 0x%08lx", head);
+  /* if it's not a valid sync */
+  if ((head & 0xffe00000) != 0xffe00000) {
+    GST_WARNING_OBJECT (lame, "invalid sync");
+    return FALSE;
+  }
+  /* if it's an invalid MPEG version */
+  if (((head >> 19) & 3) == 0x1) {
+    GST_WARNING_OBJECT (lame, "invalid MPEG version: 0x%lx", (head >> 19) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid layer */
+  if (!((head >> 17) & 3)) {
+    GST_WARNING_OBJECT (lame, "invalid layer: 0x%lx", (head >> 17) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid bitrate */
+  if (((head >> 12) & 0xf) == 0x0) {
+    GST_WARNING_OBJECT (lame, "invalid bitrate: 0x%lx."
+        "Free format files are not supported yet", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  if (((head >> 12) & 0xf) == 0xf) {
+    GST_WARNING_OBJECT (lame, "invalid bitrate: 0x%lx", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  /* if it's an invalid samplerate */
+  if (((head >> 10) & 0x3) == 0x3) {
+    GST_WARNING_OBJECT (lame, "invalid samplerate: 0x%lx", (head >> 10) & 0x3);
+    return FALSE;
+  }
+
+  if ((head & 0x3) == 0x2) {
+    /* Ignore this as there are some files with emphasis 0x2 that can
+     * be played fine. See BGO #537235 */
+    GST_WARNING_OBJECT (lame, "invalid emphasis: 0x%lx", head & 0x3);
+  }
+
+  return TRUE;
+}
+
+/* **** end mpegaudioparse **** */
+
+static GstFlowReturn
+gst_lamemp3enc_finish_frames (GstLameMP3Enc * lame)
+{
+  gint av;
+  guint header;
+  GstFlowReturn result = GST_FLOW_OK;
+
+  /* limited parsing, we don't expect to lose sync here */
+  while ((result == GST_FLOW_OK) &&
+      ((av = gst_adapter_available (lame->adapter)) > 4)) {
+    guint rate, version, layer, size;
+    GstBuffer *mp3_buf;
+    const guint8 *data;
+
+    data = gst_adapter_peek (lame->adapter, 4);
+    header = GST_READ_UINT32_BE (data);
+    if (!mp3_sync_check (lame, header))
+      goto invalid_header;
+
+    size = mp3_type_frame_length_from_header (lame, header, &version, &layer,
+        NULL, NULL, &rate, NULL, NULL);
+
+    if (G_UNLIKELY (layer != 3 || rate != lame->out_samplerate)) {
+      GST_DEBUG_OBJECT (lame,
+          "unexpected mp3 header with rate %u, version %u, layer %u",
+          rate, version, layer);
+      goto invalid_header;
+    }
+
+    if (size > av) {
+      /* pretty likely to occur when lame is holding back on us */
+      GST_LOG_OBJECT (lame, "frame size %u (> %d)", size, av);
+      break;
+    }
+
+    /* should be ok now */
+    mp3_buf = gst_adapter_take_buffer (lame->adapter, size);
+    /* number of samples for MPEG-1, layer 3 */
+    result = gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (lame),
+        mp3_buf, version == 1 ? 1152 : 576);
+  }
+
+exit:
+  return result;
+
+  /* ERRORS */
+invalid_header:
+  {
+    GST_ELEMENT_ERROR (lame, STREAM, ENCODE,
+        ("invalid lame mp3 sync header %08X", header), (NULL));
+    result = GST_FLOW_ERROR;
+    goto exit;
+  }
+}
+
+static GstFlowReturn
+gst_lamemp3enc_flush_full (GstLameMP3Enc * lame, gboolean push)
+{
+  GstBuffer *buf;
+  gint size;
+  GstFlowReturn result = GST_FLOW_OK;
+  gint av;
+
+  if (!lame->lgf)
+    return GST_FLOW_OK;
+
+  buf = gst_buffer_new_and_alloc (7200);
+  size = lame_encode_flush (lame->lgf, GST_BUFFER_DATA (buf), 7200);
+
+  if (size > 0) {
+    GST_BUFFER_SIZE (buf) = size;
+    GST_DEBUG_OBJECT (lame, "collecting final %d bytes", size);
+    gst_adapter_push (lame->adapter, buf);
+  } else {
+    GST_DEBUG_OBJECT (lame, "no final packet (size=%d, push=%d)", size, push);
+    gst_buffer_unref (buf);
+    result = GST_FLOW_OK;
+  }
+
+  if (push) {
+    result = gst_lamemp3enc_finish_frames (lame);
+  } else {
+    /* never mind */
+    gst_adapter_clear (lame->adapter);
+  }
+
+  /* either way, we expect nothing left */
+  if ((av = gst_adapter_available (lame->adapter))) {
+    /* should this be more fatal ?? */
+    GST_WARNING_OBJECT (lame, "unparsed %d bytes left after flushing", av);
+    /* clean up anyway */
+    gst_adapter_clear (lame->adapter);
+  }
+
+  return result;
+}
+
+static void
+gst_lamemp3enc_flush (GstAudioEncoder * enc)
+{
+  gst_lamemp3enc_flush_full (GST_LAMEMP3ENC (enc), FALSE);
+}
+
+static GstFlowReturn
+gst_lamemp3enc_handle_frame (GstAudioEncoder * enc, GstBuffer * in_buf)
+{
+  GstLameMP3Enc *lame;
+  guchar *mp3_data;
+  gint mp3_buffer_size, mp3_size;
+  GstBuffer *mp3_buf;
+  GstFlowReturn result;
+  gint num_samples;
+  guint8 *data;
+  guint size;
+
+  lame = GST_LAMEMP3ENC (enc);
+
+  /* squeeze remaining and push */
+  if (G_UNLIKELY (in_buf == NULL))
+    return gst_lamemp3enc_flush_full (lame, TRUE);
+
+  data = GST_BUFFER_DATA (in_buf);
+  size = GST_BUFFER_SIZE (in_buf);
+
+  num_samples = size / 2;
+
+  /* allocate space for output */
+  mp3_buffer_size = 1.25 * num_samples + 7200;
+  mp3_buf = gst_buffer_new_and_alloc (mp3_buffer_size);
+  mp3_data = GST_BUFFER_DATA (mp3_buf);
+
+  /* lame seems to be too stupid to get mono interleaved going */
+  if (lame->num_channels == 1) {
+    mp3_size = lame_encode_buffer (lame->lgf,
+        (short int *) data,
+        (short int *) data, num_samples, mp3_data, mp3_buffer_size);
+  } else {
+    mp3_size = lame_encode_buffer_interleaved (lame->lgf,
+        (short int *) data,
+        num_samples / lame->num_channels, mp3_data, mp3_buffer_size);
+  }
+
+  GST_LOG_OBJECT (lame, "encoded %d bytes of audio to %d bytes of mp3",
+      size, mp3_size);
+
+  if (G_LIKELY (mp3_size > 0)) {
+    GST_BUFFER_SIZE (mp3_buf) = mp3_size;
+    /* unfortunately lame does not provide frame delineated output,
+     * so collect output and parse into frames ... */
+    gst_adapter_push (lame->adapter, mp3_buf);
+    result = gst_lamemp3enc_finish_frames (lame);
+  } else {
+    if (mp3_size < 0) {
+      /* eat error ? */
+      g_warning ("error %d", mp3_size);
+    }
+    result = GST_FLOW_OK;
+    gst_buffer_unref (mp3_buf);
+  }
+
+  return result;
+}
+
+/* set up the encoder state */
+static gboolean
+gst_lamemp3enc_setup (GstLameMP3Enc * lame, GstTagList ** tags)
+{
+  gboolean res;
+
+#define CHECK_ERROR(command) G_STMT_START {\
+  if ((command) < 0) { \
+    GST_ERROR_OBJECT (lame, "setup failed: " G_STRINGIFY (command)); \
+    if (*tags) { \
+      gst_tag_list_free (*tags); \
+      *tags = NULL; \
+    } \
+    return FALSE; \
+  } \
+}G_STMT_END
+
+  int retval;
+  GstCaps *allowed_caps;
+
+  GST_DEBUG_OBJECT (lame, "starting setup");
+
+  lame->lgf = lame_init ();
+
+  if (lame->lgf == NULL)
+    return FALSE;
+
+  *tags = gst_tag_list_new ();
+
+  /* copy the parameters over */
+  lame_set_in_samplerate (lame->lgf, lame->samplerate);
+
+  /* let lame choose default samplerate unless outgoing sample rate is fixed */
+  allowed_caps = gst_pad_get_allowed_caps (GST_AUDIO_ENCODER_SRC_PAD (lame));
+
+  if (allowed_caps != NULL) {
+    GstStructure *structure;
+    gint samplerate;
+
+    structure = gst_caps_get_structure (allowed_caps, 0);
+
+    if (gst_structure_get_int (structure, "rate", &samplerate)) {
+      GST_DEBUG_OBJECT (lame, "Setting sample rate to %d as fixed in src caps",
+          samplerate);
+      lame_set_out_samplerate (lame->lgf, samplerate);
+    } else {
+      GST_DEBUG_OBJECT (lame, "Letting lame choose sample rate");
+      lame_set_out_samplerate (lame->lgf, 0);
+    }
+    gst_caps_unref (allowed_caps);
+    allowed_caps = NULL;
+  } else {
+    GST_DEBUG_OBJECT (lame, "No peer yet, letting lame choose sample rate");
+    lame_set_out_samplerate (lame->lgf, 0);
+  }
+
+  CHECK_ERROR (lame_set_num_channels (lame->lgf, lame->num_channels));
+  CHECK_ERROR (lame_set_bWriteVbrTag (lame->lgf, 0));
+
+  if (lame->target == LAMEMP3ENC_TARGET_QUALITY) {
+    CHECK_ERROR (lame_set_VBR (lame->lgf, vbr_default));
+    CHECK_ERROR (lame_set_VBR_quality (lame->lgf, lame->quality));
+  } else {
+    if (lame->cbr) {
+      CHECK_AND_FIXUP_BITRATE (lame, "bitrate", lame->bitrate);
+      CHECK_ERROR (lame_set_VBR (lame->lgf, vbr_off));
+      CHECK_ERROR (lame_set_brate (lame->lgf, lame->bitrate));
+    } else {
+      CHECK_ERROR (lame_set_VBR (lame->lgf, vbr_abr));
+      CHECK_ERROR (lame_set_VBR_mean_bitrate_kbps (lame->lgf, lame->bitrate));
+    }
+    gst_tag_list_add (*tags, GST_TAG_MERGE_REPLACE, GST_TAG_BITRATE,
+        lame->bitrate * 1000, NULL);
+  }
+
+  if (lame->encoding_engine_quality == LAMEMP3ENC_ENCODING_ENGINE_QUALITY_FAST)
+    CHECK_ERROR (lame_set_quality (lame->lgf, 7));
+  else if (lame->encoding_engine_quality ==
+      LAMEMP3ENC_ENCODING_ENGINE_QUALITY_HIGH)
+    CHECK_ERROR (lame_set_quality (lame->lgf, 2));
+  /* else default */
+
+  if (lame->mono)
+    CHECK_ERROR (lame_set_mode (lame->lgf, MONO));
+
+  /* initialize the lame encoder */
+  if ((retval = lame_init_params (lame->lgf)) >= 0) {
+    /* FIXME: it would be nice to print out the mode here */
+    GST_INFO
+        ("lame encoder setup (target %s, quality %f, bitrate %d, %d Hz, %d channels)",
+        (lame->target == LAMEMP3ENC_TARGET_QUALITY) ? "quality" : "bitrate",
+        lame->quality, lame->bitrate, lame->samplerate, lame->num_channels);
+    res = TRUE;
+  } else {
+    GST_ERROR_OBJECT (lame, "lame_init_params returned %d", retval);
+    res = FALSE;
+  }
+
+  GST_DEBUG_OBJECT (lame, "done with setup");
+  return res;
+#undef CHECK_ERROR
+}
+
+gboolean
+gst_lamemp3enc_register (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (debug, "lamemp3enc", 0, "lame mp3 encoder");
+
+  if (!gst_element_register (plugin, "lamemp3enc", GST_RANK_PRIMARY,
+          GST_TYPE_LAMEMP3ENC))
+    return FALSE;
+
+  return TRUE;
+}
diff --git a/ext/lame/gstlamemp3enc.h b/ext/lame/gstlamemp3enc.h
new file mode 100644 (file)
index 0000000..d51263e
--- /dev/null
@@ -0,0 +1,83 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2009> Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ *
+ * 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_LAMEMP3ENC_H__
+#define __GST_LAMEMP3ENC_H__
+
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudioencoder.h>
+#include <gst/base/gstadapter.h>
+
+G_BEGIN_DECLS
+
+#include <lame/lame.h>
+
+#define GST_TYPE_LAMEMP3ENC \
+  (gst_lamemp3enc_get_type())
+#define GST_LAMEMP3ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LAMEMP3ENC,GstLameMP3Enc))
+#define GST_LAMEMP3ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_LAMEMP3ENC,GstLameMP3EncClass))
+#define GST_IS_LAMEMP3ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LAMEMP3ENC))
+#define GST_IS_LAMEMP3ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LAMEMP3ENC))
+
+typedef struct _GstLameMP3Enc GstLameMP3Enc;
+typedef struct _GstLameMP3EncClass GstLameMP3EncClass;
+
+/**
+ * GstLameMP3Enc:
+ *
+ * Opaque data structure.
+ */
+struct _GstLameMP3Enc {
+  GstAudioEncoder element;
+
+  /*< private >*/
+  gint samplerate;
+  gint out_samplerate;
+  gint num_channels;
+
+  /* properties */
+  gint target;
+  gint bitrate;
+  gboolean cbr;
+  gfloat quality;
+  gint encoding_engine_quality;
+  gboolean mono;
+
+  lame_global_flags *lgf;
+
+  GstAdapter *adapter;
+};
+
+struct _GstLameMP3EncClass {
+  GstAudioEncoderClass parent_class;
+};
+
+GType gst_lamemp3enc_get_type(void);
+gboolean gst_lamemp3enc_register (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_LAMEMP3ENC_H__ */
diff --git a/ext/lame/plugin.c b/ext/lame/plugin.c
new file mode 100644 (file)
index 0000000..a54aedc
--- /dev/null
@@ -0,0 +1,48 @@
+/* GStreamer
+ * Copyright (C) <2009> Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ *
+ * 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 <gst/gst.h>
+#include <gst/gst-i18n-plugin.h>
+
+#include "gstlame.h"
+#include "gstlamemp3enc.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+#ifdef ENABLE_NLS
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
+
+  if (!gst_lamemp3enc_register (plugin) || !gst_lame_register (plugin))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "lame",
+    "Encode MP3s with LAME",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/mad/Makefile.am b/ext/mad/Makefile.am
new file mode 100644 (file)
index 0000000..85a22ff
--- /dev/null
@@ -0,0 +1,29 @@
+plugin_LTLIBRARIES = libgstmad.la 
+
+libgstmad_la_SOURCES = gstmad.c
+
+libgstmad_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+       $(MAD_CFLAGS)
+libgstmad_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_MAJORMINOR) \
+       -lgstaudio-$(GST_MAJORMINOR) $(MAD_LIBS)
+libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmad_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstmad.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmad -:SHARED libgstmad \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmad_la_SOURCES) \
+        -:CPPFLAGS $(CPPFLAGS) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmad_la_CFLAGS) \
+        -:LDFLAGS $(libgstmad_la_LDFLAGS) \
+                  $(libgstmad_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/ext/mad/Makefile.in b/ext/mad/Makefile.in
new file mode 100644 (file)
index 0000000..9b7addb
--- /dev/null
@@ -0,0 +1,742 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/mad
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstmad_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstmad_la_OBJECTS = libgstmad_la-gstmad.lo
+libgstmad_la_OBJECTS = $(am_libgstmad_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstmad_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstmad_la_CFLAGS) $(CFLAGS) \
+       $(libgstmad_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstmad_la_SOURCES)
+DIST_SOURCES = $(libgstmad_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstmad.la 
+libgstmad_la_SOURCES = gstmad.c
+libgstmad_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+       $(MAD_CFLAGS)
+
+libgstmad_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_MAJORMINOR) \
+       -lgstaudio-$(GST_MAJORMINOR) $(MAD_LIBS)
+
+libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmad_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstmad.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 ext/mad/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/mad/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
+libgstmad.la: $(libgstmad_la_OBJECTS) $(libgstmad_la_DEPENDENCIES) $(EXTRA_libgstmad_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstmad_la_LINK) -rpath $(plugindir) $(libgstmad_la_OBJECTS) $(libgstmad_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmad_la-gstmad.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstmad_la-gstmad.lo: gstmad.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmad_la_CFLAGS) $(CFLAGS) -MT libgstmad_la-gstmad.lo -MD -MP -MF $(DEPDIR)/libgstmad_la-gstmad.Tpo -c -o libgstmad_la-gstmad.lo `test -f 'gstmad.c' || echo '$(srcdir)/'`gstmad.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmad_la-gstmad.Tpo $(DEPDIR)/libgstmad_la-gstmad.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmad.c' object='libgstmad_la-gstmad.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmad_la_CFLAGS) $(CFLAGS) -c -o libgstmad_la-gstmad.lo `test -f 'gstmad.c' || echo '$(srcdir)/'`gstmad.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmad -:SHARED libgstmad \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmad_la_SOURCES) \
+        -:CPPFLAGS $(CPPFLAGS) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmad_la_CFLAGS) \
+        -:LDFLAGS $(libgstmad_la_LDFLAGS) \
+                  $(libgstmad_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/ext/mad/gstmad.c b/ext/mad/gstmad.c
new file mode 100644 (file)
index 0000000..89c5027
--- /dev/null
@@ -0,0 +1,1886 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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-mad
+ * @see_also: lame
+ *
+ * MP3 audio decoder.
+ *
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! autoaudiosink
+ * ]| Decode the mp3 file and play
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include "gstmad.h"
+#include <gst/audio/audio.h>
+
+enum
+{
+  ARG_0,
+  ARG_HALF,
+  ARG_IGNORE_CRC
+};
+
+GST_DEBUG_CATEGORY_STATIC (mad_debug);
+#define GST_CAT_DEFAULT mad_debug
+
+static GstStaticPadTemplate mad_src_template_factory =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER) ", "
+        "signed = (boolean) true, "
+        "width = (int) 32, "
+        "depth = (int) 32, "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+/* FIXME: make three caps, for mpegversion 1, 2 and 2.5 */
+static GstStaticPadTemplate mad_sink_template_factory =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, "
+        "layer = (int) [ 1, 3 ], "
+        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static void gst_mad_dispose (GObject * object);
+static void gst_mad_clear_queues (GstMad * mad);
+
+static void gst_mad_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_mad_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static gboolean gst_mad_src_event (GstPad * pad, GstEvent * event);
+
+static const GstQueryType *gst_mad_get_query_types (GstPad * pad);
+
+static gboolean gst_mad_src_query (GstPad * pad, GstQuery * query);
+static gboolean gst_mad_convert_sink (GstPad * pad, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static gboolean gst_mad_convert_src (GstPad * pad, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+
+static gboolean gst_mad_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_mad_chain (GstPad * pad, GstBuffer * buffer);
+static GstFlowReturn gst_mad_chain_reverse (GstMad * mad, GstBuffer * buf);
+
+static GstStateChangeReturn gst_mad_change_state (GstElement * element,
+    GstStateChange transition);
+
+static void gst_mad_set_index (GstElement * element, GstIndex * index);
+static GstIndex *gst_mad_get_index (GstElement * element);
+
+GST_BOILERPLATE (GstMad, gst_mad, GstElement, GST_TYPE_ELEMENT);
+
+/*
+#define GST_TYPE_MAD_LAYER (gst_mad_layer_get_type())
+static GType
+gst_mad_layer_get_type (void)
+{
+  static GType mad_layer_type = 0;
+  static GEnumValue mad_layer[] = {
+    {0, "Unknown", "unknown"},
+    {MAD_LAYER_I, "Layer I", "1"},
+    {MAD_LAYER_II, "Layer II", "2"},
+    {MAD_LAYER_III, "Layer III", "3"},
+    {0, NULL, NULL},
+  };
+
+  if (!mad_layer_type) {
+    mad_layer_type = g_enum_register_static ("GstMadLayer", mad_layer);
+  }
+  return mad_layer_type;
+}
+*/
+
+#define GST_TYPE_MAD_MODE (gst_mad_mode_get_type())
+static GType
+gst_mad_mode_get_type (void)
+{
+  static GType mad_mode_type = 0;
+  static GEnumValue mad_mode[] = {
+    {-1, "Unknown", "unknown"},
+    {MAD_MODE_SINGLE_CHANNEL, "Mono", "mono"},
+    {MAD_MODE_DUAL_CHANNEL, "Dual Channel", "dual"},
+    {MAD_MODE_JOINT_STEREO, "Joint Stereo", "joint"},
+    {MAD_MODE_STEREO, "Stereo", "stereo"},
+    {0, NULL, NULL},
+  };
+
+  if (!mad_mode_type) {
+    mad_mode_type = g_enum_register_static ("GstMadMode", mad_mode);
+  }
+  return mad_mode_type;
+}
+
+#define GST_TYPE_MAD_EMPHASIS (gst_mad_emphasis_get_type())
+static GType
+gst_mad_emphasis_get_type (void)
+{
+  static GType mad_emphasis_type = 0;
+  static GEnumValue mad_emphasis[] = {
+    {-1, "Unknown", "unknown"},
+    {MAD_EMPHASIS_NONE, "None", "none"},
+    {MAD_EMPHASIS_50_15_US, "50/15 Microseconds", "50-15"},
+    {MAD_EMPHASIS_CCITT_J_17, "CCITT J.17", "j-17"},
+    {MAD_EMPHASIS_RESERVED, "Reserved", "reserved"},
+    {0, NULL, NULL},
+  };
+
+  if (!mad_emphasis_type) {
+    mad_emphasis_type = g_enum_register_static ("GstMadEmphasis", mad_emphasis);
+  }
+  return mad_emphasis_type;
+}
+
+static void
+gst_mad_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &mad_sink_template_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &mad_src_template_factory);
+  gst_element_class_set_details_simple (element_class, "mad mp3 decoder",
+      "Codec/Decoder/Audio",
+      "Uses mad code to decode mp3 streams", "Wim Taymans <wim@fluendo.com>");
+}
+
+static void
+gst_mad_class_init (GstMadClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->set_property = gst_mad_set_property;
+  gobject_class->get_property = gst_mad_get_property;
+  gobject_class->dispose = gst_mad_dispose;
+
+  gstelement_class->change_state = gst_mad_change_state;
+  gstelement_class->set_index = gst_mad_set_index;
+  gstelement_class->get_index = gst_mad_get_index;
+
+  /* init properties */
+  /* currently, string representations are used, we might want to change that */
+  /* FIXME: descriptions need to be more technical,
+   * default values and ranges need to be selected right */
+  g_object_class_install_property (gobject_class, ARG_HALF,
+      g_param_spec_boolean ("half", "Half", "Generate PCM at 1/2 sample rate",
+          FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_IGNORE_CRC,
+      g_param_spec_boolean ("ignore-crc", "Ignore CRC", "Ignore CRC errors",
+          TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /* register tags */
+#define GST_TAG_LAYER    "layer"
+#define GST_TAG_MODE     "mode"
+#define GST_TAG_EMPHASIS "emphasis"
+
+  /* FIXME 0.11: strings!? why? */
+  gst_tag_register (GST_TAG_LAYER, GST_TAG_FLAG_ENCODED, G_TYPE_UINT,
+      "layer", "MPEG audio layer", NULL);
+  gst_tag_register (GST_TAG_MODE, GST_TAG_FLAG_ENCODED, G_TYPE_STRING,
+      "mode", "MPEG audio channel mode", NULL);
+  gst_tag_register (GST_TAG_EMPHASIS, GST_TAG_FLAG_ENCODED, G_TYPE_STRING,
+      "emphasis", "MPEG audio emphasis", NULL);
+
+  /* ref these here from a thread-safe context (ie. not the streaming thread) */
+  g_type_class_ref (GST_TYPE_MAD_MODE);
+  g_type_class_ref (GST_TYPE_MAD_EMPHASIS);
+}
+
+static void
+gst_mad_init (GstMad * mad, GstMadClass * klass)
+{
+  GstPadTemplate *template;
+
+  /* create the sink and src pads */
+  template = gst_static_pad_template_get (&mad_sink_template_factory);
+  mad->sinkpad = gst_pad_new_from_template (template, "sink");
+  gst_object_unref (template);
+  gst_element_add_pad (GST_ELEMENT (mad), mad->sinkpad);
+  gst_pad_set_chain_function (mad->sinkpad, GST_DEBUG_FUNCPTR (gst_mad_chain));
+  gst_pad_set_event_function (mad->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mad_sink_event));
+
+  template = gst_static_pad_template_get (&mad_src_template_factory);
+  mad->srcpad = gst_pad_new_from_template (template, "src");
+  gst_object_unref (template);
+  gst_element_add_pad (GST_ELEMENT (mad), mad->srcpad);
+  gst_pad_set_event_function (mad->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mad_src_event));
+  gst_pad_set_query_function (mad->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mad_src_query));
+  gst_pad_set_query_type_function (mad->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mad_get_query_types));
+  gst_pad_use_fixed_caps (mad->srcpad);
+
+  mad->tempbuffer = g_malloc (MAD_BUFFER_MDLEN * 3);
+  mad->tempsize = 0;
+  mad->base_byte_offset = 0;
+  mad->bytes_consumed = 0;
+  mad->total_samples = 0;
+  mad->new_header = TRUE;
+  mad->framecount = 0;
+  mad->vbr_average = 0;
+  mad->vbr_rate = 0;
+  mad->restart = TRUE;
+  mad->segment_start = 0;
+  gst_segment_init (&mad->segment, GST_FORMAT_TIME);
+  mad->header.mode = -1;
+  mad->header.emphasis = -1;
+  mad->tags = NULL;
+
+  mad->half = FALSE;
+  mad->ignore_crc = TRUE;
+  mad->check_for_xing = TRUE;
+  mad->xing_found = FALSE;
+}
+
+static void
+gst_mad_dispose (GObject * object)
+{
+  GstMad *mad = GST_MAD (object);
+
+  gst_mad_set_index (GST_ELEMENT (object), NULL);
+
+  g_free (mad->tempbuffer);
+  mad->tempbuffer = NULL;
+
+  g_list_foreach (mad->pending_events, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (mad->pending_events);
+  mad->pending_events = NULL;
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_mad_set_index (GstElement * element, GstIndex * index)
+{
+  GstMad *mad = GST_MAD (element);
+
+  mad->index = index;
+
+  if (index)
+    gst_index_get_writer_id (index, GST_OBJECT (element), &mad->index_id);
+}
+
+static GstIndex *
+gst_mad_get_index (GstElement * element)
+{
+  GstMad *mad = GST_MAD (element);
+
+  return mad->index;
+}
+
+static gboolean
+gst_mad_convert_sink (GstPad * pad, GstFormat src_format, gint64 src_value,
+    GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  GstMad *mad;
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  /* -1 always maps to -1, and 0 to 0, we don't need any more info for that */
+  if (src_value == -1 || src_value == 0) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  mad = GST_MAD (GST_PAD_PARENT (pad));
+
+  if (mad->vbr_average == 0)
+    return FALSE;
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_TIME:
+          /* multiply by 8 because vbr is in bits/second */
+          *dest_value = gst_util_uint64_scale (src_value, 8 * GST_SECOND,
+              mad->vbr_average);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          /* multiply by 8 because vbr is in bits/second */
+          *dest_value = gst_util_uint64_scale (src_value, mad->vbr_average,
+              8 * GST_SECOND);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    default:
+      res = FALSE;
+  }
+  return res;
+}
+
+static gboolean
+gst_mad_convert_src (GstPad * pad, GstFormat src_format, gint64 src_value,
+    GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  guint scale = 1;
+  gint bytes_per_sample;
+  GstMad *mad;
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  /* -1 always maps to -1, and 0 to 0, we don't need any more info for that */
+  if (src_value == -1 || src_value == 0) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  mad = GST_MAD (GST_PAD_PARENT (pad));
+
+  bytes_per_sample = mad->channels * 4;
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_DEFAULT:
+          if (bytes_per_sample == 0)
+            return FALSE;
+          *dest_value = src_value / bytes_per_sample;
+          break;
+        case GST_FORMAT_TIME:
+        {
+          gint byterate = bytes_per_sample * mad->rate;
+
+          if (byterate == 0)
+            return FALSE;
+          *dest_value =
+              gst_util_uint64_scale_int (src_value, GST_SECOND, byterate);
+          break;
+        }
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_DEFAULT:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          *dest_value = src_value * bytes_per_sample;
+          break;
+        case GST_FORMAT_TIME:
+          if (mad->rate == 0)
+            return FALSE;
+          *dest_value = gst_util_uint64_scale_int (src_value, GST_SECOND,
+              mad->rate);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          scale = bytes_per_sample;
+          /* fallthrough */
+        case GST_FORMAT_DEFAULT:
+          *dest_value = gst_util_uint64_scale_int (src_value,
+              scale * mad->rate, GST_SECOND);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    default:
+      res = FALSE;
+  }
+  return res;
+}
+
+static const GstQueryType *
+gst_mad_get_query_types (GstPad * pad)
+{
+  static const GstQueryType gst_mad_src_query_types[] = {
+    GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
+    GST_QUERY_CONVERT,
+    0
+  };
+
+  return gst_mad_src_query_types;
+}
+
+static gboolean
+gst_mad_src_query (GstPad * pad, GstQuery * query)
+{
+  gboolean res = TRUE;
+  GstPad *peer;
+  GstMad *mad;
+
+  mad = GST_MAD (GST_PAD_PARENT (pad));
+
+  peer = gst_pad_get_peer (mad->sinkpad);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_FORMATS:
+      gst_query_set_formats (query, 3, GST_FORMAT_DEFAULT, GST_FORMAT_TIME,
+          GST_FORMAT_BYTES);
+      break;
+    case GST_QUERY_POSITION:
+    {
+      GstFormat format;
+      gint64 cur;
+
+      /* save requested format */
+      gst_query_parse_position (query, &format, NULL);
+
+      /* try any demuxer before us first */
+      if (format == GST_FORMAT_TIME && peer && gst_pad_query (peer, query)) {
+        gst_query_parse_position (query, NULL, &cur);
+        GST_LOG_OBJECT (mad, "peer returned position %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (cur));
+        break;
+      }
+
+      /* and convert to the requested format */
+      if (format != GST_FORMAT_DEFAULT) {
+        if (!gst_mad_convert_src (pad, GST_FORMAT_DEFAULT, mad->total_samples,
+                &format, &cur))
+          goto error;
+      } else {
+        cur = mad->total_samples;
+      }
+
+      gst_query_set_position (query, format, cur);
+
+      if (format == GST_FORMAT_TIME) {
+        GST_LOG ("position=%" GST_TIME_FORMAT, GST_TIME_ARGS (cur));
+      } else {
+        GST_LOG ("position=%" G_GINT64_FORMAT ", format=%u", cur, format);
+      }
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat bytes_format = GST_FORMAT_BYTES;
+      GstFormat time_format = GST_FORMAT_TIME;
+      GstFormat req_format;
+      gint64 total, total_bytes;
+
+      /* save requested format */
+      gst_query_parse_duration (query, &req_format, NULL);
+
+      if (peer == NULL)
+        goto error;
+
+      /* try any demuxer before us first */
+      if (req_format == GST_FORMAT_TIME && gst_pad_query (peer, query)) {
+        gst_query_parse_duration (query, NULL, &total);
+        GST_LOG_OBJECT (mad, "peer returned duration %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (total));
+        break;
+      }
+
+      /* query peer for total length in bytes */
+      if (!gst_pad_query_peer_duration (mad->sinkpad, &bytes_format,
+              &total_bytes) || total_bytes <= 0) {
+        GST_LOG_OBJECT (mad, "duration query on peer pad failed");
+        goto error;
+      }
+
+      GST_LOG_OBJECT (mad, "peer pad returned total=%" G_GINT64_FORMAT
+          " bytes", total_bytes);
+
+      if (!gst_mad_convert_sink (pad, GST_FORMAT_BYTES, total_bytes,
+              &time_format, &total)) {
+        GST_DEBUG_OBJECT (mad, "conversion BYTE => TIME failed");
+        goto error;
+      }
+      if (!gst_mad_convert_src (pad, GST_FORMAT_TIME, total,
+              &req_format, &total)) {
+        GST_DEBUG_OBJECT (mad, "conversion TIME => %s failed",
+            gst_format_get_name (req_format));
+        goto error;
+      }
+
+      gst_query_set_duration (query, req_format, total);
+
+      if (req_format == GST_FORMAT_TIME) {
+        GST_LOG_OBJECT (mad, "duration=%" GST_TIME_FORMAT,
+            GST_TIME_ARGS (total));
+      } else {
+        GST_LOG_OBJECT (mad, "duration=%" G_GINT64_FORMAT " (%s)",
+            total, gst_format_get_name (req_format));
+      }
+      break;
+    }
+    case GST_QUERY_CONVERT:
+    {
+      GstFormat src_fmt, dest_fmt;
+      gint64 src_val, dest_val;
+
+      gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
+      if (!(res =
+              gst_mad_convert_src (pad, src_fmt, src_val, &dest_fmt,
+                  &dest_val)))
+        goto error;
+      gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+
+  if (peer)
+    gst_object_unref (peer);
+
+  return res;
+
+error:
+
+  GST_DEBUG ("error handling query");
+
+  if (peer)
+    gst_object_unref (peer);
+
+  return FALSE;
+}
+
+static gboolean
+index_seek (GstMad * mad, GstPad * pad, GstEvent * event)
+{
+  gdouble rate;
+  GstFormat format;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  GstIndexEntry *entry = NULL;
+
+  /* since we know the exact byteoffset of the frame,
+     make sure to try bytes first */
+
+  const GstFormat try_all_formats[] = {
+    GST_FORMAT_BYTES,
+    GST_FORMAT_TIME,
+    0
+  };
+  const GstFormat *try_formats = try_all_formats;
+  const GstFormat *peer_formats;
+
+  gst_event_parse_seek (event, &rate, &format, &flags,
+      &cur_type, &cur, &stop_type, &stop);
+
+  if (rate < 0.0)
+    return FALSE;
+
+  if (format == GST_FORMAT_TIME) {
+    gst_segment_set_seek (&mad->segment, rate, format, flags, cur_type,
+        cur, stop_type, stop, NULL);
+  } else {
+    gst_segment_init (&mad->segment, GST_FORMAT_UNDEFINED);
+  }
+
+  entry = gst_index_get_assoc_entry (mad->index, mad->index_id,
+      GST_INDEX_LOOKUP_BEFORE, 0, format, cur);
+
+  GST_DEBUG ("index seek");
+
+  if (!entry)
+    return FALSE;
+
+#if 0
+  peer_formats = gst_pad_get_formats (GST_PAD_PEER (mad->sinkpad));
+#else
+  peer_formats = try_all_formats;       /* FIXME */
+#endif
+
+  while (gst_formats_contains (peer_formats, *try_formats)) {
+    gint64 value;
+    GstEvent *seek_event;
+
+    if (gst_index_entry_assoc_map (entry, *try_formats, &value)) {
+      /* lookup succeeded, create the seek */
+
+      GST_DEBUG ("index %s %" G_GINT64_FORMAT
+          " -> %s %" G_GINT64_FORMAT,
+          gst_format_get_details (format)->nick,
+          cur, gst_format_get_details (*try_formats)->nick, value);
+
+      seek_event = gst_event_new_seek (rate, *try_formats, flags,
+          cur_type, value, stop_type, stop);
+
+      if (gst_pad_send_event (GST_PAD_PEER (mad->sinkpad), seek_event)) {
+        /* seek worked, we're done, loop will exit */
+        mad->restart = TRUE;
+        g_assert (format == GST_FORMAT_TIME);
+        mad->segment_start = cur;
+        return TRUE;
+      }
+    }
+    try_formats++;
+  }
+
+  return FALSE;
+}
+
+static gboolean
+normal_seek (GstMad * mad, GstPad * pad, GstEvent * event)
+{
+  gdouble rate;
+  GstFormat format, conv;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  gint64 time_cur, time_stop;
+  gint64 bytes_cur, bytes_stop;
+  gboolean flush;
+
+  /* const GstFormat *peer_formats; */
+  gboolean res;
+
+  GST_DEBUG ("normal seek");
+
+  gst_event_parse_seek (event, &rate, &format, &flags,
+      &cur_type, &cur, &stop_type, &stop);
+
+  if (rate < 0.0)
+    return FALSE;
+
+  if (format != GST_FORMAT_TIME) {
+    conv = GST_FORMAT_TIME;
+    if (!gst_mad_convert_src (pad, format, cur, &conv, &time_cur))
+      goto convert_error;
+    if (!gst_mad_convert_src (pad, format, stop, &conv, &time_stop))
+      goto convert_error;
+  } else {
+    time_cur = cur;
+    time_stop = stop;
+  }
+
+  gst_segment_set_seek (&mad->segment, rate, GST_FORMAT_TIME, flags, cur_type,
+      time_cur, stop_type, time_stop, NULL);
+
+  GST_DEBUG ("seek to time %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (time_cur), GST_TIME_ARGS (time_stop));
+
+  /* shave off the flush flag, we'll need it later */
+  flush = ((flags & GST_SEEK_FLAG_FLUSH) != 0);
+
+  conv = GST_FORMAT_BYTES;
+  if (!gst_mad_convert_sink (pad, GST_FORMAT_TIME, time_cur, &conv, &bytes_cur))
+    goto convert_error;
+  if (!gst_mad_convert_sink (pad, GST_FORMAT_TIME, time_stop, &conv,
+          &bytes_stop))
+    goto convert_error;
+
+  {
+    GstEvent *seek_event;
+
+    /* conversion succeeded, create the seek */
+    seek_event =
+        gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, cur_type,
+        bytes_cur, stop_type, bytes_stop);
+
+    /* do the seek */
+    res = gst_pad_push_event (mad->sinkpad, seek_event);
+
+    if (res) {
+      /* we need to break out of the processing loop on flush */
+      mad->restart = flush;
+      mad->segment_start = time_cur;
+      mad->last_ts = time_cur;
+    }
+  }
+#if 0
+  peer_formats = gst_pad_get_formats (GST_PAD_PEER (mad->sinkpad));
+  /* while we did not exhaust our seek formats without result */
+  while (peer_formats && *peer_formats && !res) {
+    gint64 desired_offset;
+
+    format = *peer_formats;
+
+    /* try to convert requested format to one we can seek with on the sinkpad */
+    if (gst_pad_convert (mad->sinkpad, GST_FORMAT_TIME, src_offset,
+            &format, &desired_offset)) {
+      GstEvent *seek_event;
+
+      /* conversion succeeded, create the seek */
+      seek_event =
+          gst_event_new_seek (format | GST_EVENT_SEEK_METHOD (event) | flush,
+          desired_offset);
+      /* do the seek */
+      if (gst_pad_send_event (GST_PAD_PEER (mad->sinkpad), seek_event)) {
+        /* seek worked, we're done, loop will exit */
+        res = TRUE;
+      }
+    }
+    /* at this point, either the seek worked or res == FALSE */
+    if (res)
+      /* we need to break out of the processing loop on flush */
+      mad->restart = flush;
+
+    peer_formats++;
+  }
+#endif
+
+  return res;
+
+  /* ERRORS */
+convert_error:
+  {
+    /* probably unsupported seek format */
+    GST_DEBUG ("failed to convert format %u into GST_FORMAT_TIME", format);
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_mad_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res = TRUE;
+  GstMad *mad;
+
+  mad = GST_MAD (GST_PAD_PARENT (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+      /* the all-formats seek logic, ref the event, we need it later */
+      gst_event_ref (event);
+      if (!(res = gst_pad_push_event (mad->sinkpad, event))) {
+        if (mad->index)
+          res = index_seek (mad, pad, event);
+        else
+          res = normal_seek (mad, pad, event);
+      }
+      gst_event_unref (event);
+      break;
+    default:
+      res = gst_pad_push_event (mad->sinkpad, event);
+      break;
+  }
+
+  return res;
+}
+
+static inline gint32
+scale (mad_fixed_t sample)
+{
+#if MAD_F_FRACBITS < 28
+  /* round */
+  sample += (1L << (28 - MAD_F_FRACBITS - 1));
+#endif
+
+  /* clip */
+  if (sample >= MAD_F_ONE)
+    sample = MAD_F_ONE - 1;
+  else if (sample < -MAD_F_ONE)
+    sample = -MAD_F_ONE;
+
+#if MAD_F_FRACBITS < 28
+  /* quantize */
+  sample >>= (28 - MAD_F_FRACBITS);
+#endif
+
+  /* convert from 29 bits to 32 bits */
+  return (gint32) (sample << 3);
+}
+
+/* do we need this function? */
+static void
+gst_mad_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstMad *mad;
+
+  mad = GST_MAD (object);
+
+  switch (prop_id) {
+    case ARG_HALF:
+      mad->half = g_value_get_boolean (value);
+      break;
+    case ARG_IGNORE_CRC:
+      mad->ignore_crc = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_mad_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstMad *mad;
+
+  mad = GST_MAD (object);
+
+  switch (prop_id) {
+    case ARG_HALF:
+      g_value_set_boolean (value, mad->half);
+      break;
+    case ARG_IGNORE_CRC:
+      g_value_set_boolean (value, mad->ignore_crc);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_mad_update_info (GstMad * mad)
+{
+  struct mad_header *header = &mad->frame.header;
+  gboolean changed = FALSE;
+  GstTagList *list = NULL;
+
+#define CHECK_HEADER(h1,str)                                    \
+G_STMT_START{                                                   \
+  if (mad->header.h1 != header->h1 || mad->new_header) {        \
+    mad->header.h1 = header->h1;                                \
+     changed = TRUE;                                            \
+  };                                                            \
+} G_STMT_END
+
+  /* update average bitrate */
+  if (mad->new_header) {
+    mad->framecount = 1;
+    mad->vbr_rate = header->bitrate;
+  } else {
+    mad->framecount++;
+    mad->vbr_rate += header->bitrate;
+  }
+  mad->vbr_average = (gint) (mad->vbr_rate / mad->framecount);
+
+  CHECK_HEADER (layer, "layer");
+  CHECK_HEADER (mode, "mode");
+  CHECK_HEADER (emphasis, "emphasis");
+  mad->new_header = FALSE;
+
+  if (changed) {
+    GEnumValue *mode;
+    GEnumValue *emphasis;
+
+    mode =
+        g_enum_get_value (g_type_class_peek (GST_TYPE_MAD_MODE),
+        mad->header.mode);
+    emphasis =
+        g_enum_get_value (g_type_class_peek (GST_TYPE_MAD_EMPHASIS),
+        mad->header.emphasis);
+    list = gst_tag_list_new ();
+    gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+        GST_TAG_LAYER, mad->header.layer,
+        GST_TAG_MODE, mode->value_nick,
+        GST_TAG_EMPHASIS, emphasis->value_nick, NULL);
+    if (!mad->framed) {
+      gchar *str;
+
+      str = g_strdup_printf ("MPEG-1 layer %d", mad->header.layer);
+      gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+          GST_TAG_AUDIO_CODEC, str, NULL);
+      g_free (str);
+    }
+  }
+
+  changed = FALSE;
+  CHECK_HEADER (bitrate, "bitrate");
+  if (!mad->xing_found && changed) {
+    if (!list)
+      list = gst_tag_list_new ();
+    gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+        GST_TAG_BITRATE, mad->header.bitrate, NULL);
+  }
+  mad->header.bitrate = header->bitrate;
+#undef CHECK_HEADER
+
+  if (list) {
+    gst_element_post_message (GST_ELEMENT (mad),
+        gst_message_new_tag (GST_OBJECT (mad), gst_tag_list_copy (list)));
+
+    if (mad->need_newsegment)
+      mad->pending_events =
+          g_list_append (mad->pending_events, gst_event_new_tag (list));
+    else
+      gst_pad_push_event (mad->srcpad, gst_event_new_tag (list));
+  }
+}
+
+static gboolean
+gst_mad_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstMad *mad = GST_MAD (GST_PAD_PARENT (pad));
+  gboolean result;
+
+  GST_DEBUG ("handling %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:{
+      GstFormat format;
+      gboolean update;
+      gdouble rate, applied_rate;
+      gint64 start, stop, pos;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
+          &format, &start, &stop, &pos);
+
+      if (format == GST_FORMAT_TIME) {
+        /* FIXME: is this really correct? */
+        mad->tempsize = 0;
+        result = gst_pad_push_event (mad->srcpad, event);
+        /* we don't need to restart when we get here */
+        mad->restart = FALSE;
+        mad->framed = TRUE;
+        gst_segment_set_newsegment_full (&mad->segment, update, rate,
+            applied_rate, GST_FORMAT_TIME, start, stop, pos);
+      } else {
+        GST_DEBUG ("dropping newsegment event in format %s",
+            gst_format_get_name (format));
+        /* on restart the chain function will generate a new
+         * newsegment event, so we can just drop this one */
+        mad->restart = TRUE;
+        gst_event_unref (event);
+        mad->tempsize = 0;
+        mad->framed = FALSE;
+        result = TRUE;
+      }
+      break;
+    }
+    case GST_EVENT_EOS:
+      if (mad->segment.rate < 0.0)
+        gst_mad_chain_reverse (mad, NULL);
+      mad->caps_set = FALSE;    /* could be a new stream */
+      result = gst_pad_push_event (mad->srcpad, event);
+      break;
+    case GST_EVENT_FLUSH_STOP:
+      /* Clear any stored data, as it won't make sense once
+       * the new data arrives */
+      mad->tempsize = 0;
+      mad_frame_mute (&mad->frame);
+      mad_synth_mute (&mad->synth);
+      gst_mad_clear_queues (mad);
+      /* fall-through */
+    case GST_EVENT_FLUSH_START:
+      result = gst_pad_event_default (pad, event);
+      break;
+    default:
+      if (mad->restart) {
+        /* Cache all other events if we still have to send a NEWSEGMENT */
+        mad->pending_events = g_list_append (mad->pending_events, event);
+        result = TRUE;
+      } else {
+        result = gst_pad_event_default (pad, event);
+      }
+      break;
+  }
+  return result;
+}
+
+static gboolean
+gst_mad_check_restart (GstMad * mad)
+{
+  gboolean yes = mad->restart;
+
+  if (mad->restart) {
+    mad->restart = FALSE;
+    mad->tempsize = 0;
+  }
+  return yes;
+}
+
+
+/* The following code has been taken from
+ * rhythmbox/metadata/monkey-media/stream-info-impl/id3-vfs/mp3bitrate.c
+ * which took it from xine-lib/src/demuxers/demux_mpgaudio.c
+ * This code has been kindly relicensed to LGPL by Thibaut Mattern and
+ * Bastien Nocera
+ */
+#define BE_32(x) GST_READ_UINT32_BE(x)
+
+#define FOURCC_TAG( ch0, ch1, ch2, ch3 )                \
+        ( (long)(unsigned char)(ch3) |                  \
+          ( (long)(unsigned char)(ch2) << 8 ) |         \
+          ( (long)(unsigned char)(ch1) << 16 ) |        \
+          ( (long)(unsigned char)(ch0) << 24 ) )
+
+/* Xing header stuff */
+#define XING_TAG FOURCC_TAG('X', 'i', 'n', 'g')
+#define XING_FRAMES_FLAG     0x0001
+#define XING_BYTES_FLAG      0x0002
+#define XING_TOC_FLAG        0x0004
+#define XING_VBR_SCALE_FLAG  0x0008
+#define XING_TOC_LENGTH      100
+
+/* check for valid "Xing" VBR header */
+static int
+is_xhead (unsigned char *buf)
+{
+  return (BE_32 (buf) == XING_TAG);
+}
+
+
+#undef LOG
+/*#define LOG*/
+#ifdef LOG
+#ifndef WIN32
+#define lprintf(x...) g_print(x)
+#else
+#define lprintf GST_DEBUG
+#endif
+#else
+#ifndef WIN32
+#define lprintf(x...)
+#else
+#define lprintf GST_DEBUG
+#endif
+#endif
+
+static int
+mpg123_parse_xing_header (struct mad_header *header,
+    const guint8 * buf, int bufsize, int *bitrate, int *time)
+{
+  int i;
+  guint8 *ptr = (guint8 *) buf;
+  double frame_duration;
+  int xflags, xframes, xbytes;
+  int abr;
+  guint8 xtoc[XING_TOC_LENGTH];
+  int lsf_bit = !(header->flags & MAD_FLAG_LSF_EXT);
+
+  xframes = xbytes = 0;
+
+  /* offset of the Xing header */
+  if (lsf_bit) {
+    if (header->mode != MAD_MODE_SINGLE_CHANNEL)
+      ptr += (32 + 4);
+    else
+      ptr += (17 + 4);
+  } else {
+    if (header->mode != MAD_MODE_SINGLE_CHANNEL)
+      ptr += (17 + 4);
+    else
+      ptr += (9 + 4);
+  }
+
+  if (ptr >= (buf + bufsize - 4))
+    return 0;
+
+  if (is_xhead (ptr)) {
+    lprintf ("Xing header found\n");
+
+    ptr += 4;
+    if (ptr >= (buf + bufsize - 4))
+      return 0;
+
+    xflags = BE_32 (ptr);
+    ptr += 4;
+
+    if (xflags & XING_FRAMES_FLAG) {
+      if (ptr >= (buf + bufsize - 4))
+        return 0;
+      xframes = BE_32 (ptr);
+      lprintf ("xframes: %d\n", xframes);
+      ptr += 4;
+    }
+    if (xflags & XING_BYTES_FLAG) {
+      if (ptr >= (buf + bufsize - 4))
+        return 0;
+      xbytes = BE_32 (ptr);
+      lprintf ("xbytes: %d\n", xbytes);
+      ptr += 4;
+    }
+    if (xflags & XING_TOC_FLAG) {
+      guchar old = 0;
+
+      lprintf ("toc found\n");
+      if (ptr >= (buf + bufsize - XING_TOC_LENGTH))
+        return 0;
+      if (*ptr != 0) {
+        lprintf ("skipping broken Xing TOC\n");
+        goto skip_toc;
+      }
+      for (i = 0; i < XING_TOC_LENGTH; i++) {
+        xtoc[i] = *(ptr + i);
+        if (old > xtoc[i]) {
+          lprintf ("skipping broken Xing TOC\n");
+          goto skip_toc;
+        }
+        lprintf ("%d ", xtoc[i]);
+      }
+      lprintf ("\n");
+    skip_toc:
+      ptr += XING_TOC_LENGTH;
+    }
+
+    if (xflags & XING_VBR_SCALE_FLAG) {
+      if (ptr >= (buf + bufsize - 4))
+        return 0;
+      lprintf ("xvbr_scale: %d\n", BE_32 (ptr));
+    }
+
+    /* 1 kbit = 1000 bits ! (and not 1024 bits) */
+    if (xflags & (XING_FRAMES_FLAG | XING_BYTES_FLAG)) {
+      if (header->layer == MAD_LAYER_I) {
+        frame_duration = 384.0 / (double) header->samplerate;
+      } else {
+        int slots_per_frame;
+
+        slots_per_frame = ((header->layer == MAD_LAYER_III)
+            && !lsf_bit) ? 72 : 144;
+        frame_duration = slots_per_frame * 8.0 / (double) header->samplerate;
+      }
+      abr = ((double) xbytes * 8.0) / ((double) xframes * frame_duration);
+      lprintf ("abr: %d bps\n", abr);
+      if (bitrate != NULL) {
+        *bitrate = abr;
+      }
+      if (time != NULL) {
+        *time = (double) xframes *frame_duration;
+
+        lprintf ("stream_length: %d s, %d min %d s\n", *time,
+            *time / 60, *time % 60);
+      }
+    } else {
+      /* it's a stupid Xing header */
+      lprintf ("not a Xing VBR file\n");
+    }
+    return 1;
+  } else {
+    lprintf ("Xing header not found\n");
+    return 0;
+  }
+}
+
+/* End of Xine code */
+
+/* internal function to check if the header has changed and thus the
+ * caps need to be reset.  Only call during normal mode, not resyncing */
+static void
+gst_mad_check_caps_reset (GstMad * mad)
+{
+  guint nchannels;
+  guint rate, old_rate = mad->rate;
+
+  nchannels = MAD_NCHANNELS (&mad->frame.header);
+
+#if MAD_VERSION_MINOR <= 12
+  rate = mad->header.sfreq;
+#else
+  rate = mad->frame.header.samplerate;
+#endif
+
+  /* rate and channels are not supposed to change in a continuous stream,
+   * so check this first before doing anything */
+
+  /* only set caps if they weren't already set for this continuous stream */
+  if (mad->channels != nchannels || mad->rate != rate) {
+    if (mad->caps_set) {
+      GST_DEBUG
+          ("Header changed from %d Hz/%d ch to %d Hz/%d ch, failed sync after seek ?",
+          mad->rate, mad->channels, rate, nchannels);
+      /* we're conservative on stream changes. However, our *initial* caps
+       * might have been wrong as well - mad ain't perfect in syncing. So,
+       * we count caps changes and change if we pass a limit treshold (3). */
+      if (nchannels != mad->pending_channels || rate != mad->pending_rate) {
+        mad->times_pending = 0;
+        mad->pending_channels = nchannels;
+        mad->pending_rate = rate;
+      }
+      if (++mad->times_pending < 3)
+        return;
+    }
+  }
+  gst_mad_update_info (mad);
+
+  if (mad->channels != nchannels || mad->rate != rate) {
+    GstCaps *caps;
+
+    if (mad->stream.options & MAD_OPTION_HALFSAMPLERATE)
+      rate >>= 1;
+
+    /* FIXME see if peer can accept the caps */
+
+    /* we set the caps even when the pad is not connected so they
+     * can be gotten for streaminfo */
+    caps = gst_caps_new_simple ("audio/x-raw-int",
+        "endianness", G_TYPE_INT, G_BYTE_ORDER,
+        "signed", G_TYPE_BOOLEAN, TRUE,
+        "width", G_TYPE_INT, 32,
+        "depth", G_TYPE_INT, 32,
+        "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, nchannels, NULL);
+
+    gst_pad_set_caps (mad->srcpad, caps);
+    gst_caps_unref (caps);
+
+    mad->caps_set = TRUE;       /* set back to FALSE on discont */
+    mad->channels = nchannels;
+    mad->rate = rate;
+
+    /* update sample count so we don't come up with crazy timestamps */
+    if (mad->total_samples && old_rate) {
+      mad->total_samples = mad->total_samples * rate / old_rate;
+    }
+  }
+}
+
+static void
+gst_mad_clear_queues (GstMad * mad)
+{
+  g_list_foreach (mad->queued, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (mad->queued);
+  mad->queued = NULL;
+  g_list_foreach (mad->gather, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (mad->gather);
+  mad->gather = NULL;
+  g_list_foreach (mad->decode, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (mad->decode);
+  mad->decode = NULL;
+}
+
+static GstFlowReturn
+gst_mad_flush_decode (GstMad * mad)
+{
+  GstFlowReturn res = GST_FLOW_OK;
+  GList *walk;
+
+  walk = mad->decode;
+
+  GST_DEBUG_OBJECT (mad, "flushing buffers to decoder");
+
+  /* clear buffer and decoder state */
+  mad->tempsize = 0;
+  mad_frame_mute (&mad->frame);
+  mad_synth_mute (&mad->synth);
+
+  mad->process = TRUE;
+  while (walk) {
+    GList *next;
+    GstBuffer *buf = GST_BUFFER_CAST (walk->data);
+
+    GST_DEBUG_OBJECT (mad, "decoding buffer %p, ts %" GST_TIME_FORMAT,
+        buf, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+    next = g_list_next (walk);
+    /* decode buffer, resulting data prepended to output queue */
+    gst_buffer_ref (buf);
+    res = gst_mad_chain (mad->sinkpad, buf);
+
+    /* if we generated output, we can discard the buffer, else we
+     * keep it in the queue */
+    if (mad->queued) {
+      GST_DEBUG_OBJECT (mad, "decoded buffer to %p", mad->queued->data);
+      mad->decode = g_list_delete_link (mad->decode, walk);
+      gst_buffer_unref (buf);
+    } else {
+      GST_DEBUG_OBJECT (mad, "buffer did not decode, keeping");
+    }
+    walk = next;
+  }
+  mad->process = FALSE;
+
+  /* now send queued data downstream */
+  while (mad->queued) {
+    GstBuffer *buf = GST_BUFFER_CAST (mad->queued->data);
+
+    GST_DEBUG_OBJECT (mad, "pushing buffer %p of size %u, "
+        "time %" GST_TIME_FORMAT ", dur %" GST_TIME_FORMAT, buf,
+        GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+    res = gst_pad_push (mad->srcpad, buf);
+
+    mad->queued = g_list_delete_link (mad->queued, mad->queued);
+  }
+
+  return res;
+}
+
+static GstFlowReturn
+gst_mad_chain_reverse (GstMad * mad, GstBuffer * buf)
+{
+  GstFlowReturn result = GST_FLOW_OK;
+
+  /* if we have a discont, move buffers to the decode list */
+  if (!buf || GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DISCONT)) {
+    GST_DEBUG_OBJECT (mad, "received discont");
+    while (mad->gather) {
+      GstBuffer *gbuf;
+
+      gbuf = GST_BUFFER_CAST (mad->gather->data);
+      /* remove from the gather list */
+      mad->gather = g_list_delete_link (mad->gather, mad->gather);
+      /* copy to decode queue */
+      mad->decode = g_list_prepend (mad->decode, gbuf);
+    }
+    /* decode stuff in the decode queue */
+    gst_mad_flush_decode (mad);
+  }
+
+  if (G_LIKELY (buf)) {
+    GST_DEBUG_OBJECT (mad, "gathering buffer %p of size %u, "
+        "time %" GST_TIME_FORMAT ", dur %" GST_TIME_FORMAT, buf,
+        GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+    /* add buffer to gather queue */
+    mad->gather = g_list_prepend (mad->gather, buf);
+  }
+
+  return result;
+}
+
+static GstFlowReturn
+gst_mad_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstMad *mad;
+  guint8 *data;
+  glong size, tempsize;
+  gboolean new_pts = FALSE;
+  gboolean discont;
+  GstClockTime timestamp;
+  GstFlowReturn result = GST_FLOW_OK;
+
+  mad = GST_MAD (GST_PAD_PARENT (pad));
+
+  /* restarts happen on discontinuities, ie. seek, flush, PAUSED to PLAYING */
+  if (gst_mad_check_restart (mad)) {
+    mad->need_newsegment = TRUE;
+    GST_DEBUG ("mad restarted");
+  }
+
+  if (mad->segment.rate < 0.0) {
+    if (!mad->process)
+      return gst_mad_chain_reverse (mad, buffer);
+    /* no output discont */
+    discont = FALSE;
+  } else {
+    /* take discont flag */
+    discont = GST_BUFFER_IS_DISCONT (buffer);
+  }
+
+  timestamp = GST_BUFFER_TIMESTAMP (buffer);
+  GST_DEBUG ("mad in timestamp %" GST_TIME_FORMAT " duration:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (timestamp), GST_TIME_ARGS (GST_BUFFER_DURATION (buffer)));
+
+  /* handle timestamps */
+  if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
+    /* if there is nothing left to process in our temporary buffer,
+     * we can set this timestamp on the next outgoing buffer */
+    if (mad->tempsize == 0) {
+      /* we have to save the result here because we can't yet convert
+       * the timestamp to a sample offset, as the samplerate might not
+       * be known yet */
+      mad->last_ts = timestamp;
+      mad->base_byte_offset = GST_BUFFER_OFFSET (buffer);
+      mad->bytes_consumed = 0;
+    }
+    /* else we need to finish the current partial frame with the old timestamp
+     * and queue this timestamp for the next frame */
+    else {
+      new_pts = TRUE;
+    }
+  }
+  GST_DEBUG ("last_ts %" GST_TIME_FORMAT, GST_TIME_ARGS (mad->last_ts));
+
+  /* handle data */
+  data = GST_BUFFER_DATA (buffer);
+  size = GST_BUFFER_SIZE (buffer);
+
+  tempsize = mad->tempsize;
+
+  /* process the incoming buffer in chunks of maximum MAD_BUFFER_MDLEN bytes;
+   * this is the upper limit on processable chunk sizes set by mad */
+  while (size > 0) {
+    gint tocopy;
+    guchar *mad_input_buffer;   /* convenience pointer to tempbuffer */
+
+    if (mad->tempsize == 0 && discont) {
+      mad->discont = TRUE;
+      discont = FALSE;
+    }
+    tocopy =
+        MIN (MAD_BUFFER_MDLEN, MIN (size,
+            MAD_BUFFER_MDLEN * 3 - mad->tempsize));
+    if (tocopy == 0) {
+      GST_ELEMENT_ERROR (mad, STREAM, DECODE, (NULL),
+          ("mad claims to need more data than %u bytes, we don't have that much",
+              MAD_BUFFER_MDLEN * 3));
+      result = GST_FLOW_ERROR;
+      goto end;
+    }
+
+    /* append the chunk to process to our internal temporary buffer */
+    GST_LOG ("tempbuffer size %ld, copying %d bytes from incoming buffer",
+        mad->tempsize, tocopy);
+    memcpy (mad->tempbuffer + mad->tempsize, data, tocopy);
+    mad->tempsize += tocopy;
+
+    /* update our incoming buffer's parameters to reflect this */
+    size -= tocopy;
+    data += tocopy;
+
+    mad_input_buffer = mad->tempbuffer;
+
+    /* while we have data we can consume it */
+    while (mad->tempsize > 0) {
+      gint consumed = 0;
+      guint nsamples;
+      guint64 time_offset = GST_CLOCK_TIME_NONE;
+      guint64 time_duration = GST_CLOCK_TIME_NONE;
+      unsigned char const *before_sync, *after_sync;
+      gboolean goto_exit = FALSE;
+
+      mad->in_error = FALSE;
+
+      mad_stream_buffer (&mad->stream, mad_input_buffer, mad->tempsize);
+
+      /* added separate header decoding to catch errors earlier, also fixes
+       * some weird decoding errors... */
+      GST_LOG ("decoding the header now");
+      if (mad_header_decode (&mad->frame.header, &mad->stream) == -1) {
+        if (mad->stream.error == MAD_ERROR_BUFLEN) {
+          GST_LOG ("not enough data in tempbuffer (%ld), breaking to get more",
+              mad->tempsize);
+          break;
+        } else {
+          GST_WARNING ("mad_header_decode had an error: %s",
+              mad_stream_errorstr (&mad->stream));
+        }
+      }
+
+      GST_LOG ("decoding one frame now");
+
+      if (mad_frame_decode (&mad->frame, &mad->stream) == -1) {
+        GST_LOG ("got error %d", mad->stream.error);
+
+        /* not enough data, need to wait for next buffer? */
+        if (mad->stream.error == MAD_ERROR_BUFLEN) {
+          if (mad->stream.next_frame == mad_input_buffer) {
+            GST_LOG
+                ("not enough data in tempbuffer (%ld), breaking to get more",
+                mad->tempsize);
+            break;
+          } else {
+            GST_LOG ("sync error, flushing unneeded data");
+            goto next_no_samples;
+          }
+        } else if (mad->stream.error == MAD_ERROR_BADDATAPTR) {
+          /* Flush data */
+          goto next_no_samples;
+        }
+        /* we are in an error state */
+        mad->in_error = TRUE;
+        GST_WARNING ("mad_frame_decode had an error: %s",
+            mad_stream_errorstr (&mad->stream));
+        if (!MAD_RECOVERABLE (mad->stream.error)) {
+          GST_ELEMENT_ERROR (mad, STREAM, DECODE, (NULL), (NULL));
+          result = GST_FLOW_ERROR;
+          goto end;
+        } else if (mad->stream.error == MAD_ERROR_LOSTSYNC) {
+          /* lost sync, force a resync */
+          GST_INFO ("recoverable lost sync error");
+        }
+
+        mad_frame_mute (&mad->frame);
+        mad_synth_mute (&mad->synth);
+        before_sync = mad->stream.ptr.byte;
+        if (mad_stream_sync (&mad->stream) != 0)
+          GST_WARNING ("mad_stream_sync failed");
+        after_sync = mad->stream.ptr.byte;
+        /* a succesful resync should make us drop bytes as consumed, so
+           calculate from the byte pointers before and after resync */
+        consumed = after_sync - before_sync;
+        GST_DEBUG ("resynchronization consumes %d bytes", consumed);
+        GST_DEBUG ("synced to data: 0x%0x 0x%0x", *mad->stream.ptr.byte,
+            *(mad->stream.ptr.byte + 1));
+
+        mad_stream_sync (&mad->stream);
+        /* recoverable errors pass */
+        goto next_no_samples;
+      }
+
+      if (mad->check_for_xing) {
+        int bitrate = 0, time = 0;
+        GstTagList *list;
+        int frame_len = mad->stream.next_frame - mad->stream.this_frame;
+
+        mad->check_for_xing = FALSE;
+
+        /* Assume Xing headers can only be the first frame in a mp3 file */
+        if (mpg123_parse_xing_header (&mad->frame.header,
+                mad->stream.this_frame, frame_len, &bitrate, &time)) {
+          mad->xing_found = TRUE;
+          list = gst_tag_list_new ();
+          gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+              GST_TAG_DURATION, (gint64) time * 1000 * 1000 * 1000,
+              GST_TAG_BITRATE, bitrate, NULL);
+          gst_element_post_message (GST_ELEMENT (mad),
+              gst_message_new_tag (GST_OBJECT (mad), gst_tag_list_copy (list)));
+
+          if (mad->need_newsegment)
+            mad->pending_events =
+                g_list_append (mad->pending_events, gst_event_new_tag (list));
+          else
+            gst_pad_push_event (mad->srcpad, gst_event_new_tag (list));
+
+          goto next_no_samples;
+        }
+      }
+
+      /* if we're not resyncing/in error, check if caps need to be set again */
+      if (!mad->in_error)
+        gst_mad_check_caps_reset (mad);
+      nsamples = MAD_NSBSAMPLES (&mad->frame.header) *
+          (mad->stream.options & MAD_OPTION_HALFSAMPLERATE ? 16 : 32);
+
+      if (mad->rate == 0) {
+        g_warning ("mad->rate is 0; timestamps cannot be calculated");
+      } else {
+        /* if we have a pending timestamp, we can use it now to calculate the sample offset */
+        if (GST_CLOCK_TIME_IS_VALID (mad->last_ts)) {
+          GstFormat format = GST_FORMAT_DEFAULT;
+          gint64 total;
+
+          /* Convert incoming timestamp to a number of encoded samples */
+          gst_pad_query_convert (mad->srcpad, GST_FORMAT_TIME, mad->last_ts,
+              &format, &total);
+
+          GST_DEBUG_OBJECT (mad, "calculated samples offset from ts is %"
+              G_GUINT64_FORMAT " accumulated samples offset is %"
+              G_GUINT64_FORMAT, total, mad->total_samples);
+
+          /* We are using the incoming timestamps to generate the outgoing ones
+           * if available. However some muxing formats are not precise enough
+           * to allow us to generate a perfect stream. When converting the
+           * timestamp to a number of encoded samples so far we are introducing
+           * a lot of potential error compared to our accumulated number of
+           * samples encoded. If the difference between those 2 numbers is
+           * bigger than half a frame we then use the incoming timestamp
+           * as a reference, otherwise we continue using our accumulated samples
+           * counter */
+          if (ABS (((gint64) (mad->total_samples)) - total) > nsamples / 2) {
+            GST_DEBUG_OBJECT (mad, "difference is bigger than half a frame, "
+                "using calculated samples offset %" G_GUINT64_FORMAT, total);
+            /* Override our accumulated samples counter */
+            mad->total_samples = total;
+            /* We use that timestamp directly */
+            time_offset = mad->last_ts;
+          }
+
+          mad->last_ts = GST_CLOCK_TIME_NONE;
+        }
+
+        if (!GST_CLOCK_TIME_IS_VALID (time_offset)) {
+          time_offset = gst_util_uint64_scale_int (mad->total_samples,
+              GST_SECOND, mad->rate);
+        }
+        /* Duration is next timestamp - this one to generate a continuous
+         * stream */
+        time_duration =
+            gst_util_uint64_scale_int (mad->total_samples + nsamples,
+            GST_SECOND, mad->rate) - time_offset;
+      }
+
+      if (mad->index) {
+        guint64 x_bytes = mad->base_byte_offset + mad->bytes_consumed;
+
+        gst_index_add_association (mad->index, mad->index_id,
+            GST_ASSOCIATION_FLAG_DELTA_UNIT,
+            GST_FORMAT_BYTES, x_bytes, GST_FORMAT_TIME, time_offset, NULL);
+      }
+
+      if (mad->segment_start <= (time_offset ==
+              GST_CLOCK_TIME_NONE ? 0 : time_offset)) {
+
+        /* for sample accurate seeking, calculate how many samples
+           to skip and send the remaining pcm samples */
+
+        GstBuffer *outbuffer = NULL;
+        gint32 *outdata;
+        mad_fixed_t const *left_ch, *right_ch;
+
+        if (mad->need_newsegment) {
+          gint64 start = time_offset;
+
+          GST_DEBUG ("Sending NEWSEGMENT event, start=%" GST_TIME_FORMAT,
+              GST_TIME_ARGS (start));
+
+          gst_segment_set_newsegment (&mad->segment, FALSE, 1.0,
+              GST_FORMAT_TIME, start, GST_CLOCK_TIME_NONE, start);
+
+          gst_pad_push_event (mad->srcpad,
+              gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME,
+                  start, GST_CLOCK_TIME_NONE, start));
+          mad->need_newsegment = FALSE;
+        }
+
+        if (mad->pending_events) {
+          GList *l;
+
+          for (l = mad->pending_events; l != NULL; l = l->next) {
+            gst_pad_push_event (mad->srcpad, GST_EVENT (l->data));
+          }
+          g_list_free (mad->pending_events);
+          mad->pending_events = NULL;
+        }
+
+        /* will attach the caps to the buffer */
+        result =
+            gst_pad_alloc_buffer_and_set_caps (mad->srcpad, 0,
+            nsamples * mad->channels * 4, GST_PAD_CAPS (mad->srcpad),
+            &outbuffer);
+        if (result != GST_FLOW_OK) {
+          /* Head for the exit, dropping samples as we go */
+          GST_LOG ("Skipping frame synthesis due to pad_alloc return value");
+          goto_exit = TRUE;
+          goto skip_frame;
+        }
+
+        if (GST_BUFFER_SIZE (outbuffer) != nsamples * mad->channels * 4) {
+          gst_buffer_unref (outbuffer);
+
+          outbuffer = gst_buffer_new_and_alloc (nsamples * mad->channels * 4);
+          gst_buffer_set_caps (outbuffer, GST_PAD_CAPS (mad->srcpad));
+        }
+
+        mad_synth_frame (&mad->synth, &mad->frame);
+        left_ch = mad->synth.pcm.samples[0];
+        right_ch = mad->synth.pcm.samples[1];
+
+        outdata = (gint32 *) GST_BUFFER_DATA (outbuffer);
+
+        GST_DEBUG ("mad out timestamp %" GST_TIME_FORMAT " dur: %"
+            GST_TIME_FORMAT, GST_TIME_ARGS (time_offset),
+            GST_TIME_ARGS (time_duration));
+
+        GST_BUFFER_TIMESTAMP (outbuffer) = time_offset;
+        GST_BUFFER_DURATION (outbuffer) = time_duration;
+        GST_BUFFER_OFFSET (outbuffer) = mad->total_samples;
+        GST_BUFFER_OFFSET_END (outbuffer) = mad->total_samples + nsamples;
+
+        /* output sample(s) in 16-bit signed native-endian PCM */
+        if (mad->channels == 1) {
+          gint count = nsamples;
+
+          while (count--) {
+            *outdata++ = scale (*left_ch++) & 0xffffffff;
+          }
+        } else {
+          gint count = nsamples;
+
+          while (count--) {
+            *outdata++ = scale (*left_ch++) & 0xffffffff;
+            *outdata++ = scale (*right_ch++) & 0xffffffff;
+          }
+        }
+
+        if ((outbuffer = gst_audio_buffer_clip (outbuffer, &mad->segment,
+                    mad->rate, 4 * mad->channels))) {
+          GST_LOG_OBJECT (mad,
+              "pushing buffer, off=%" G_GUINT64_FORMAT ", ts=%" GST_TIME_FORMAT,
+              GST_BUFFER_OFFSET (outbuffer),
+              GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuffer)));
+
+          /* apply discont */
+          if (mad->discont) {
+            GST_BUFFER_FLAG_SET (outbuffer, GST_BUFFER_FLAG_DISCONT);
+            mad->discont = FALSE;
+          }
+
+          mad->segment.last_stop = GST_BUFFER_TIMESTAMP (outbuffer);
+          if (mad->segment.rate > 0.0) {
+            result = gst_pad_push (mad->srcpad, outbuffer);
+          } else {
+            GST_LOG_OBJECT (mad, "queued buffer");
+            mad->queued = g_list_prepend (mad->queued, outbuffer);
+            result = GST_FLOW_OK;
+          }
+          if (result != GST_FLOW_OK) {
+            /* Head for the exit, dropping samples as we go */
+            goto_exit = TRUE;
+          }
+        } else {
+          GST_LOG_OBJECT (mad, "Dropping buffer");
+        }
+      }
+
+    skip_frame:
+      mad->total_samples += nsamples;
+
+      /* we have a queued timestamp on the incoming buffer that we should
+       * use for the next frame */
+      if (new_pts && (mad->stream.next_frame - mad_input_buffer >= tempsize)) {
+        new_pts = FALSE;
+        mad->last_ts = timestamp;
+        mad->base_byte_offset = GST_BUFFER_OFFSET (buffer);
+        mad->bytes_consumed = 0;
+      }
+      tempsize = 0;
+      if (discont) {
+        mad->discont = TRUE;
+        discont = FALSE;
+      }
+
+      if (gst_mad_check_restart (mad)) {
+        goto end;
+      }
+
+    next_no_samples:
+      /* figure out how many bytes mad consumed */
+      /* if consumed is already set, it's from the resync higher up, so
+         we need to use that value instead.  Otherwise, recalculate from
+         mad's consumption */
+      if (consumed == 0)
+        consumed = mad->stream.next_frame - mad_input_buffer;
+
+      GST_LOG ("mad consumed %d bytes", consumed);
+      /* move out pointer to where mad want the next data */
+      mad_input_buffer += consumed;
+      mad->tempsize -= consumed;
+      mad->bytes_consumed += consumed;
+      if (goto_exit == TRUE)
+        goto end;
+    }
+    /* we only get here from breaks, tempsize never actually drops below 0 */
+    memmove (mad->tempbuffer, mad_input_buffer, mad->tempsize);
+  }
+  result = GST_FLOW_OK;
+
+end:
+  gst_buffer_unref (buffer);
+
+  return result;
+}
+
+static GstStateChangeReturn
+gst_mad_change_state (GstElement * element, GstStateChange transition)
+{
+  GstMad *mad;
+  GstStateChangeReturn ret;
+
+  mad = GST_MAD (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+    {
+      guint options = 0;
+
+      mad_stream_init (&mad->stream);
+      mad_frame_init (&mad->frame);
+      mad_synth_init (&mad->synth);
+      mad->tempsize = 0;
+      mad->discont = TRUE;
+      mad->total_samples = 0;
+      mad->rate = 0;
+      mad->channels = 0;
+      mad->caps_set = FALSE;
+      mad->times_pending = mad->pending_rate = mad->pending_channels = 0;
+      mad->vbr_average = 0;
+      gst_segment_init (&mad->segment, GST_FORMAT_TIME);
+      mad->new_header = TRUE;
+      mad->framed = FALSE;
+      mad->framecount = 0;
+      mad->vbr_rate = 0;
+      mad->frame.header.samplerate = 0;
+      mad->last_ts = GST_CLOCK_TIME_NONE;
+      if (mad->ignore_crc)
+        options |= MAD_OPTION_IGNORECRC;
+      if (mad->half)
+        options |= MAD_OPTION_HALFSAMPLERATE;
+      mad_stream_options (&mad->stream, options);
+      break;
+    }
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = parent_class->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      mad_synth_finish (&mad->synth);
+      mad_frame_finish (&mad->frame);
+      mad_stream_finish (&mad->stream);
+      mad->restart = TRUE;
+      mad->check_for_xing = TRUE;
+      if (mad->tags) {
+        gst_tag_list_free (mad->tags);
+        mad->tags = NULL;
+      }
+      gst_mad_clear_queues (mad);
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+  return ret;
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (mad_debug, "mad", 0, "mad mp3 decoding");
+
+  return gst_element_register (plugin, "mad", GST_RANK_SECONDARY,
+      gst_mad_get_type ());
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "mad",
+    "mp3 decoding based on the mad library",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/mad/gstmad.h b/ext/mad/gstmad.h
new file mode 100644 (file)
index 0000000..730911d
--- /dev/null
@@ -0,0 +1,114 @@
+/* GStreamer
+ * Copyright (C) 2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
+ *
+ * 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_MAD_H__
+#define __GST_MAD_H__
+
+#include <gst/gst.h>
+#include <gst/tag/tag.h>
+#include <mad.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MAD \
+  (gst_mad_get_type())
+#define GST_MAD(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MAD,GstMad))
+#define GST_MAD_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MAD,GstMadClass))
+#define GST_IS_MAD(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MAD))
+#define GST_IS_MAD_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MAD))
+
+
+typedef struct _GstMad GstMad;
+typedef struct _GstMadClass GstMadClass;
+
+struct _GstMad
+{
+  GstElement element;
+
+  /* pads */
+  GstPad *sinkpad, *srcpad;
+
+  /* state */
+  struct mad_stream stream;
+  struct mad_frame frame;
+  struct mad_synth synth;
+  guchar *tempbuffer;           /* temporary buffer to serve to mad */
+  glong tempsize;               /* running count of temp buffer size */
+  GstClockTime last_ts;
+  guint64 base_byte_offset;
+  guint64 bytes_consumed;       /* since the base_byte_offset */
+  guint64 total_samples;        /* the number of samples since the sync point */
+
+  gboolean in_error;            /* set when mad's in an error state */
+  gboolean restart;
+  gboolean discont;
+  guint64 segment_start;
+  GstSegment segment;
+  gboolean need_newsegment;
+
+  /* info */
+  struct mad_header header;
+  gboolean new_header;
+  guint framecount;
+  gint vbr_average;             /* average bitrate */
+  guint64 vbr_rate;             /* average * framecount */
+
+  gboolean half;
+  gboolean ignore_crc;
+
+  GstTagList *tags;
+
+  /* negotiated format */
+  gint rate, pending_rate;
+  gint channels, pending_channels;
+  gint times_pending;
+
+  gboolean caps_set;            /* used to keep track of whether to change/update caps */
+  GstIndex *index;
+  gint index_id;
+
+  gboolean check_for_xing;
+  gboolean xing_found;
+
+  gboolean framed;              /* whether there is a demuxer in front of us */
+
+  GList *pending_events;
+
+  /* reverse playback */
+  GList *decode;
+  GList *gather;
+  GList *queued;
+  gboolean process;
+};
+
+struct _GstMadClass
+{
+  GstElementClass parent_class;
+};
+
+GType                   gst_mad_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_MAD_H__ */
diff --git a/ext/mpeg2dec/Makefile.am b/ext/mpeg2dec/Makefile.am
new file mode 100644 (file)
index 0000000..ab2aed3
--- /dev/null
@@ -0,0 +1,11 @@
+plugin_LTLIBRARIES = libgstmpeg2dec.la
+
+libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
+libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) $(MPEG2DEC_CFLAGS)
+libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
+       $(GST_LIBS) $(MPEG2DEC_LIBS)
+libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpeg2dec_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstmpeg2dec.h
diff --git a/ext/mpeg2dec/Makefile.in b/ext/mpeg2dec/Makefile.in
new file mode 100644 (file)
index 0000000..ebcbab7
--- /dev/null
@@ -0,0 +1,725 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/mpeg2dec
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstmpeg2dec_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstmpeg2dec_la_OBJECTS = libgstmpeg2dec_la-gstmpeg2dec.lo
+libgstmpeg2dec_la_OBJECTS = $(am_libgstmpeg2dec_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstmpeg2dec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstmpeg2dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstmpeg2dec_la_CFLAGS) $(CFLAGS) \
+       $(libgstmpeg2dec_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstmpeg2dec_la_SOURCES)
+DIST_SOURCES = $(libgstmpeg2dec_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstmpeg2dec.la
+libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
+libgstmpeg2dec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) $(MPEG2DEC_CFLAGS)
+
+libgstmpeg2dec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) \
+       $(GST_LIBS) $(MPEG2DEC_LIBS)
+
+libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpeg2dec_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstmpeg2dec.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 ext/mpeg2dec/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/mpeg2dec/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
+libgstmpeg2dec.la: $(libgstmpeg2dec_la_OBJECTS) $(libgstmpeg2dec_la_DEPENDENCIES) $(EXTRA_libgstmpeg2dec_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstmpeg2dec_la_LINK) -rpath $(plugindir) $(libgstmpeg2dec_la_OBJECTS) $(libgstmpeg2dec_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpeg2dec_la-gstmpeg2dec.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstmpeg2dec_la-gstmpeg2dec.lo: gstmpeg2dec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpeg2dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpeg2dec_la_CFLAGS) $(CFLAGS) -MT libgstmpeg2dec_la-gstmpeg2dec.lo -MD -MP -MF $(DEPDIR)/libgstmpeg2dec_la-gstmpeg2dec.Tpo -c -o libgstmpeg2dec_la-gstmpeg2dec.lo `test -f 'gstmpeg2dec.c' || echo '$(srcdir)/'`gstmpeg2dec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpeg2dec_la-gstmpeg2dec.Tpo $(DEPDIR)/libgstmpeg2dec_la-gstmpeg2dec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpeg2dec.c' object='libgstmpeg2dec_la-gstmpeg2dec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpeg2dec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpeg2dec_la_CFLAGS) $(CFLAGS) -c -o libgstmpeg2dec_la-gstmpeg2dec.lo `test -f 'gstmpeg2dec.c' || echo '$(srcdir)/'`gstmpeg2dec.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c
new file mode 100644 (file)
index 0000000..51c47e6
--- /dev/null
@@ -0,0 +1,1827 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 <string.h>
+
+#include <inttypes.h>
+
+#include "gstmpeg2dec.h"
+
+/* 16byte-aligns a buffer for libmpeg2 */
+#define ALIGN_16(p) ((void *)(((uintptr_t)(p) + 15) & ~((uintptr_t)15)))
+
+/* mpeg2dec changed a struct name after 0.3.1, here's a workaround */
+/* mpeg2dec also only defined MPEG2_RELEASE after 0.3.1
+   #if MPEG2_RELEASE < MPEG2_VERSION(0,3,2)
+*/
+#ifndef MPEG2_RELEASE
+#define MPEG2_VERSION(a,b,c) ((((a)&0xff)<<16)|(((b)&0xff)<<8)|((c)&0xff))
+#define MPEG2_RELEASE MPEG2_VERSION(0,3,1)
+typedef picture_t mpeg2_picture_t;
+typedef gint mpeg2_state_t;
+
+#define STATE_BUFFER 0
+#endif
+
+GST_DEBUG_CATEGORY_STATIC (mpeg2dec_debug);
+#define GST_CAT_DEFAULT (mpeg2dec_debug)
+
+/* Send a warning message about decoding errors after receiving this many
+ * STATE_INVALID return values from mpeg2_parse. -1 means never.
+ */
+#define WARN_THRESHOLD (5)
+
+//#define enable_user_data
+#ifdef enable_user_data
+static GstStaticPadTemplate user_data_template_factory =
+GST_STATIC_PAD_TEMPLATE ("user_data",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+#endif
+
+static GstStaticPadTemplate sink_template_factory =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) [ 1, 2 ], " "systemstream = (boolean) false")
+    );
+
+static GstStaticPadTemplate src_template_factory =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw-yuv, "
+        "format = (fourcc) { YV12, I420, Y42B, Y444 }, "
+        "width = (int) [ 16, 4096 ], "
+        "height = (int) [ 16, 4096 ], "
+        "framerate = (fraction) [ 0/1, 2147483647/1 ]")
+    );
+
+static void gst_mpeg2dec_base_init (gpointer g_class);
+static void gst_mpeg2dec_class_init (GstMpeg2decClass * klass);
+static void gst_mpeg2dec_init (GstMpeg2dec * mpeg2dec);
+
+static void gst_mpeg2dec_finalize (GObject * object);
+static void gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec);
+
+static void gst_mpeg2dec_set_index (GstElement * element, GstIndex * index);
+static GstIndex *gst_mpeg2dec_get_index (GstElement * element);
+
+static gboolean gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event);
+static const GstQueryType *gst_mpeg2dec_get_src_query_types (GstPad * pad);
+
+static gboolean gst_mpeg2dec_src_query (GstPad * pad, GstQuery * query);
+
+static gboolean gst_mpeg2dec_sink_convert (GstPad * pad, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static gboolean gst_mpeg2dec_src_convert (GstPad * pad, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+
+static GstStateChangeReturn gst_mpeg2dec_change_state (GstElement * element,
+    GstStateChange transition);
+
+static gboolean gst_mpeg2dec_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_mpeg2dec_setcaps (GstPad * pad, GstCaps * caps);
+static GstFlowReturn gst_mpeg2dec_chain (GstPad * pad, GstBuffer * buf);
+
+static void clear_buffers (GstMpeg2dec * mpeg2dec);
+
+//static gboolean gst_mpeg2dec_sink_query (GstPad * pad, GstQuery * query);
+
+#if 0
+static const GstFormat *gst_mpeg2dec_get_formats (GstPad * pad);
+#endif
+
+#if 0
+static const GstEventMask *gst_mpeg2dec_get_event_masks (GstPad * pad);
+#endif
+
+static GstElementClass *parent_class = NULL;
+
+static gboolean gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf);
+
+/*static guint gst_mpeg2dec_signals[LAST_SIGNAL] = { 0 };*/
+
+GType
+gst_mpeg2dec_get_type (void)
+{
+  static GType mpeg2dec_type = 0;
+
+  if (!mpeg2dec_type) {
+    static const GTypeInfo mpeg2dec_info = {
+      sizeof (GstMpeg2decClass),
+      gst_mpeg2dec_base_init,
+      NULL,
+      (GClassInitFunc) gst_mpeg2dec_class_init,
+      NULL,
+      NULL,
+      sizeof (GstMpeg2dec),
+      0,
+      (GInstanceInitFunc) gst_mpeg2dec_init,
+    };
+
+    mpeg2dec_type =
+        g_type_register_static (GST_TYPE_ELEMENT, "GstMpeg2dec", &mpeg2dec_info,
+        0);
+  }
+
+  GST_DEBUG_CATEGORY_INIT (mpeg2dec_debug, "mpeg2dec", 0,
+      "MPEG2 decoder element");
+
+  return mpeg2dec_type;
+}
+
+static void
+gst_mpeg2dec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &src_template_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template_factory);
+#ifdef enable_user_data
+  gst_element_class_add_static_pad_template (element_class,
+      &user_data_template_factory);
+#endif
+  gst_element_class_set_details_simple (element_class,
+      "mpeg1 and mpeg2 video decoder", "Codec/Decoder/Video",
+      "Uses libmpeg2 to decode MPEG video streams",
+      "Wim Taymans <wim.taymans@chello.be>");
+}
+
+static void
+gst_mpeg2dec_class_init (GstMpeg2decClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->finalize = gst_mpeg2dec_finalize;
+
+  gstelement_class->change_state = gst_mpeg2dec_change_state;
+  gstelement_class->set_index = gst_mpeg2dec_set_index;
+  gstelement_class->get_index = gst_mpeg2dec_get_index;
+}
+
+static void
+gst_mpeg2dec_init (GstMpeg2dec * mpeg2dec)
+{
+  /* create the sink and src pads */
+  mpeg2dec->sinkpad =
+      gst_pad_new_from_static_template (&sink_template_factory, "sink");
+  gst_pad_set_chain_function (mpeg2dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_chain));
+#if 0
+  gst_pad_set_query_function (mpeg2dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_get_sink_query));
+#endif
+  gst_pad_set_event_function (mpeg2dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_sink_event));
+  gst_pad_set_setcaps_function (mpeg2dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_setcaps));
+  gst_element_add_pad (GST_ELEMENT (mpeg2dec), mpeg2dec->sinkpad);
+
+  mpeg2dec->srcpad =
+      gst_pad_new_from_static_template (&src_template_factory, "src");
+  gst_pad_set_event_function (mpeg2dec->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_src_event));
+  gst_pad_set_query_type_function (mpeg2dec->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_get_src_query_types));
+  gst_pad_set_query_function (mpeg2dec->srcpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg2dec_src_query));
+  gst_pad_use_fixed_caps (mpeg2dec->srcpad);
+  gst_element_add_pad (GST_ELEMENT (mpeg2dec), mpeg2dec->srcpad);
+
+#ifdef enable_user_data
+  mpeg2dec->userdatapad =
+      gst_pad_new_from_static_template (&user_data_template_factory,
+      "user_data");
+  gst_element_add_pad (GST_ELEMENT (mpeg2dec), mpeg2dec->userdatapad);
+#endif
+
+  mpeg2dec->error_count = 0;
+  mpeg2dec->can_allocate_aligned = TRUE;
+
+  /* initialize the mpeg2dec acceleration */
+}
+
+static void
+gst_mpeg2dec_finalize (GObject * object)
+{
+  GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (object);
+
+  if (mpeg2dec->index) {
+    gst_object_unref (mpeg2dec->index);
+    mpeg2dec->index = NULL;
+    mpeg2dec->index_id = 0;
+  }
+
+  if (mpeg2dec->decoder) {
+    GST_DEBUG_OBJECT (mpeg2dec, "closing decoder");
+    mpeg2_close (mpeg2dec->decoder);
+    mpeg2dec->decoder = NULL;
+  }
+  clear_buffers (mpeg2dec);
+  g_free (mpeg2dec->dummybuf[3]);
+  mpeg2dec->dummybuf[3] = NULL;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec)
+{
+  if (mpeg2dec->index) {
+    gst_object_unref (mpeg2dec->index);
+    mpeg2dec->index = NULL;
+    mpeg2dec->index_id = 0;
+  }
+
+  /* reset the initial video state */
+  mpeg2dec->format = GST_VIDEO_FORMAT_UNKNOWN;
+  mpeg2dec->width = -1;
+  mpeg2dec->height = -1;
+  gst_segment_init (&mpeg2dec->segment, GST_FORMAT_UNDEFINED);
+  mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_PICTURE;
+  mpeg2dec->frame_period = 0;
+  mpeg2dec->need_sequence = TRUE;
+  mpeg2dec->next_time = -1;
+  mpeg2dec->offset = 0;
+  mpeg2dec->error_count = 0;
+  mpeg2dec->can_allocate_aligned = TRUE;
+  mpeg2_reset (mpeg2dec->decoder, 1);
+}
+
+static void
+gst_mpeg2dec_qos_reset (GstMpeg2dec * mpeg2dec)
+{
+  GST_OBJECT_LOCK (mpeg2dec);
+  mpeg2dec->proportion = 1.0;
+  mpeg2dec->earliest_time = -1;
+  mpeg2dec->dropped = 0;
+  mpeg2dec->processed = 0;
+  GST_OBJECT_UNLOCK (mpeg2dec);
+}
+
+static void
+gst_mpeg2dec_set_index (GstElement * element, GstIndex * index)
+{
+  GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (element);
+
+  GST_OBJECT_LOCK (mpeg2dec);
+  if (mpeg2dec->index)
+    gst_object_unref (mpeg2dec->index);
+  mpeg2dec->index = NULL;
+  mpeg2dec->index_id = 0;
+  if (index) {
+    mpeg2dec->index = gst_object_ref (index);
+  }
+  GST_OBJECT_UNLOCK (mpeg2dec);
+  /* object lock might be taken again */
+  if (index)
+    gst_index_get_writer_id (index, GST_OBJECT (element), &mpeg2dec->index_id);
+}
+
+static GstIndex *
+gst_mpeg2dec_get_index (GstElement * element)
+{
+  GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (element);
+
+  return (mpeg2dec->index) ? gst_object_ref (mpeg2dec->index) : NULL;
+}
+
+static GstFlowReturn
+gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf)
+{
+  GstFlowReturn flow_ret;
+  GstBuffer *inbuf = *buf;
+  GstBuffer *outbuf;
+  guint outsize, c;
+
+  outsize = gst_video_format_get_size (dec->format, dec->width, dec->height);
+
+  GST_LOG_OBJECT (dec, "Copying input buffer %ux%u (%u) to output buffer "
+      "%ux%u (%u)", dec->decoded_width, dec->decoded_height,
+      GST_BUFFER_SIZE (inbuf), dec->width, dec->height, outsize);
+
+  flow_ret = gst_pad_alloc_buffer_and_set_caps (dec->srcpad,
+      GST_BUFFER_OFFSET_NONE, outsize, GST_PAD_CAPS (dec->srcpad), &outbuf);
+
+  if (G_UNLIKELY (flow_ret != GST_FLOW_OK))
+    return flow_ret;
+
+  for (c = 0; c < 3; c++) {
+    const guint8 *src;
+    guint8 *dest;
+    guint stride_in, stride_out;
+    guint c_height, c_width, line;
+
+    src =
+        GST_BUFFER_DATA (inbuf) +
+        gst_video_format_get_component_offset (dec->format, c,
+        dec->decoded_width, dec->decoded_height);
+    dest =
+        GST_BUFFER_DATA (outbuf) +
+        gst_video_format_get_component_offset (dec->format, c, dec->width,
+        dec->height);
+    stride_out = gst_video_format_get_row_stride (dec->format, c, dec->width);
+    stride_in =
+        gst_video_format_get_row_stride (dec->format, c, dec->decoded_width);
+    c_height =
+        gst_video_format_get_component_height (dec->format, c, dec->height);
+    c_width = gst_video_format_get_component_width (dec->format, c, dec->width);
+
+    for (line = 0; line < c_height; line++) {
+      memcpy (dest, src, c_width);
+      dest += stride_out;
+      src += stride_in;
+    }
+  }
+
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (dec->srcpad));
+  gst_buffer_copy_metadata (outbuf, inbuf,
+      GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS);
+
+  gst_buffer_unref (*buf);
+  *buf = outbuf;
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_mpeg2dec_alloc_sized_buf (GstMpeg2dec * mpeg2dec, guint size,
+    GstBuffer ** obuf)
+{
+  if (mpeg2dec->can_allocate_aligned
+      && mpeg2dec->decoded_width == mpeg2dec->width
+      && mpeg2dec->decoded_height == mpeg2dec->height) {
+    GstFlowReturn ret;
+
+    ret = gst_pad_alloc_buffer_and_set_caps (mpeg2dec->srcpad,
+        GST_BUFFER_OFFSET_NONE, size, GST_PAD_CAPS (mpeg2dec->srcpad), obuf);
+    if (ret != GST_FLOW_OK) {
+      return ret;
+    }
+
+    /* libmpeg2 needs 16 byte aligned buffers... test for this here
+     * and if it fails only a single time create our own buffers from
+     * there on below that are correctly aligned */
+    if (((uintptr_t) GST_BUFFER_DATA (*obuf)) % 16 == 0) {
+      GST_LOG_OBJECT (mpeg2dec, "return 16 byte aligned buffer");
+      return ret;
+    }
+
+    GST_DEBUG_OBJECT (mpeg2dec,
+        "can't get 16 byte aligned buffers, creating our own ones");
+    gst_buffer_unref (*obuf);
+    mpeg2dec->can_allocate_aligned = FALSE;
+  }
+
+  /* can't use gst_pad_alloc_buffer() here because the output buffer will
+   * either be cropped later or be bigger than expected (for the alignment),
+   * and basetransform-based elements will complain about the wrong unit size
+   * when not operating in passthrough mode */
+  *obuf = gst_buffer_new_and_alloc (size + 15);
+  GST_BUFFER_DATA (*obuf) = (guint8 *) ALIGN_16 (GST_BUFFER_DATA (*obuf));
+  GST_BUFFER_SIZE (*obuf) = size;
+  gst_buffer_set_caps (*obuf, GST_PAD_CAPS (mpeg2dec->srcpad));
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_mpeg2dec_alloc_buffer (GstMpeg2dec * mpeg2dec, gint64 offset,
+    GstBuffer ** obuf)
+{
+  GstBuffer *outbuf = NULL;
+  guint8 *buf[3];
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  ret = gst_mpeg2dec_alloc_sized_buf (mpeg2dec, mpeg2dec->size, &outbuf);
+  if (ret != GST_FLOW_OK)
+    goto no_buffer;
+
+  buf[0] = GST_BUFFER_DATA (outbuf);
+  buf[1] = buf[0] + mpeg2dec->u_offs;
+  buf[2] = buf[0] + mpeg2dec->v_offs;
+
+  GST_DEBUG_OBJECT (mpeg2dec, "set_buf: %p %p %p, outbuf %p",
+      buf[0], buf[1], buf[2], outbuf);
+
+  mpeg2_set_buf (mpeg2dec->decoder, buf, outbuf);
+
+  /* we store the original byteoffset of this picture in the stream here
+   * because we need it for indexing */
+  GST_BUFFER_OFFSET (outbuf) = offset;
+
+  *obuf = outbuf;
+  return ret;
+
+  /* ERRORS */
+no_buffer:
+  {
+    if (ret != GST_FLOW_WRONG_STATE && ret != GST_FLOW_UNEXPECTED &&
+        ret != GST_FLOW_NOT_LINKED) {
+      GST_ELEMENT_ERROR (mpeg2dec, RESOURCE, FAILED, (NULL),
+          ("Failed to allocate memory for buffer, reason %s",
+              gst_flow_get_name (ret)));
+    }
+    GST_DEBUG_OBJECT (mpeg2dec, "no output buffer, reason %s",
+        gst_flow_get_name (ret));
+    mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
+    *obuf = NULL;
+    return ret;
+  }
+}
+
+static gboolean
+gst_mpeg2dec_negotiate_format (GstMpeg2dec * mpeg2dec)
+{
+  GstCaps *caps;
+  guint32 fourcc;
+  const mpeg2_info_t *info;
+  const mpeg2_sequence_t *sequence;
+
+  info = mpeg2_info (mpeg2dec->decoder);
+  sequence = info->sequence;
+
+  if (sequence->width != sequence->chroma_width &&
+      sequence->height != sequence->chroma_height) {
+    mpeg2dec->format = GST_VIDEO_FORMAT_I420;
+  } else if ((sequence->width == sequence->chroma_width &&
+          sequence->height != sequence->chroma_height) ||
+      (sequence->width != sequence->chroma_width &&
+          sequence->height == sequence->chroma_height)) {
+    mpeg2dec->format = GST_VIDEO_FORMAT_Y42B;
+  } else {
+    mpeg2dec->format = GST_VIDEO_FORMAT_Y444;
+  }
+
+  fourcc = gst_video_format_to_fourcc (mpeg2dec->format);
+  mpeg2dec->size = gst_video_format_get_size (mpeg2dec->format,
+      mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+  mpeg2dec->u_offs = gst_video_format_get_component_offset (mpeg2dec->format, 1,
+      mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+  mpeg2dec->v_offs = gst_video_format_get_component_offset (mpeg2dec->format, 2,
+      mpeg2dec->decoded_width, mpeg2dec->decoded_height);
+
+  if (mpeg2dec->pixel_width == 0 || mpeg2dec->pixel_height == 0) {
+    GValue par = { 0, };
+    GValue dar = { 0, };
+    GValue dimensions = { 0, };
+
+    /* assume display aspect ratio (DAR) of 4:3 */
+    g_value_init (&dar, GST_TYPE_FRACTION);
+    gst_value_set_fraction (&dar, 4, 3);
+    g_value_init (&dimensions, GST_TYPE_FRACTION);
+    gst_value_set_fraction (&dimensions, mpeg2dec->height, mpeg2dec->width);
+
+    g_value_init (&par, GST_TYPE_FRACTION);
+    if (!gst_value_fraction_multiply (&par, &dar, &dimensions)) {
+      gst_value_set_fraction (&dimensions, 1, 1);
+    }
+
+    mpeg2dec->pixel_width = gst_value_get_fraction_numerator (&par);
+    mpeg2dec->pixel_height = gst_value_get_fraction_denominator (&par);
+
+    GST_WARNING_OBJECT (mpeg2dec, "Unknown pixel-aspect-ratio, assuming %d:%d",
+        mpeg2dec->pixel_width, mpeg2dec->pixel_height);
+
+    g_value_unset (&par);
+    g_value_unset (&dar);
+    g_value_unset (&dimensions);
+  }
+
+  caps = gst_caps_new_simple ("video/x-raw-yuv",
+      "format", GST_TYPE_FOURCC, fourcc,
+      "width", G_TYPE_INT, mpeg2dec->width,
+      "height", G_TYPE_INT, mpeg2dec->height,
+      "pixel-aspect-ratio", GST_TYPE_FRACTION, mpeg2dec->pixel_width,
+      mpeg2dec->pixel_height,
+      "framerate", GST_TYPE_FRACTION, mpeg2dec->fps_n, mpeg2dec->fps_d,
+      "interlaced", G_TYPE_BOOLEAN, mpeg2dec->interlaced, NULL);
+
+  gst_pad_set_caps (mpeg2dec->srcpad, caps);
+  gst_caps_unref (caps);
+
+  return TRUE;
+}
+
+static void
+init_dummybuf (GstMpeg2dec * mpeg2dec)
+{
+  g_free (mpeg2dec->dummybuf[3]);
+
+  /* libmpeg2 needs 16 byte aligned buffers... care for this here */
+  mpeg2dec->dummybuf[3] = g_malloc0 (mpeg2dec->size + 15);
+  mpeg2dec->dummybuf[0] = ALIGN_16 (mpeg2dec->dummybuf[3]);
+  mpeg2dec->dummybuf[1] = mpeg2dec->dummybuf[0] + mpeg2dec->u_offs;
+  mpeg2dec->dummybuf[2] = mpeg2dec->dummybuf[0] + mpeg2dec->v_offs;
+}
+
+static GstFlowReturn
+handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  if (info->sequence->frame_period == 0) {
+    GST_WARNING_OBJECT (mpeg2dec, "Frame period is 0!");
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
+
+  mpeg2dec->width = info->sequence->picture_width;
+  mpeg2dec->height = info->sequence->picture_height;
+  mpeg2dec->decoded_width = info->sequence->width;
+  mpeg2dec->decoded_height = info->sequence->height;
+  mpeg2dec->total_frames = 0;
+
+  /* don't take the sequence PAR if we already have one from the sink caps */
+  if (!mpeg2dec->have_par) {
+    mpeg2dec->pixel_width = info->sequence->pixel_width;
+    mpeg2dec->pixel_height = info->sequence->pixel_height;
+  }
+
+  /* mpeg2 video can only be from 16x16 to 4096x4096. Everything
+   * else is a corrupted files */
+  if (mpeg2dec->width > 4096 || mpeg2dec->width < 16 ||
+      mpeg2dec->height > 4096 || mpeg2dec->height < 16) {
+    GST_ERROR_OBJECT (mpeg2dec, "Invalid frame dimensions: %d x %d",
+        mpeg2dec->width, mpeg2dec->height);
+    return GST_FLOW_ERROR;
+  }
+
+  /* set framerate */
+  mpeg2dec->fps_n = 27000000;
+  mpeg2dec->fps_d = info->sequence->frame_period;
+  mpeg2dec->frame_period = info->sequence->frame_period * GST_USECOND / 27;
+
+  mpeg2dec->interlaced =
+      !(info->sequence->flags & SEQ_FLAG_PROGRESSIVE_SEQUENCE);
+
+  GST_DEBUG_OBJECT (mpeg2dec,
+      "sequence flags: %d, frame period: %d (%g), frame rate: %d/%d",
+      info->sequence->flags, info->sequence->frame_period,
+      (double) (mpeg2dec->frame_period) / GST_SECOND, mpeg2dec->fps_n,
+      mpeg2dec->fps_d);
+  GST_DEBUG_OBJECT (mpeg2dec, "profile: %02x, colour_primaries: %d",
+      info->sequence->profile_level_id, info->sequence->colour_primaries);
+  GST_DEBUG_OBJECT (mpeg2dec, "transfer chars: %d, matrix coef: %d",
+      info->sequence->transfer_characteristics,
+      info->sequence->matrix_coefficients);
+  GST_DEBUG_OBJECT (mpeg2dec,
+      "FLAGS: CONSTRAINED_PARAMETERS:%d, PROGRESSIVE_SEQUENCE:%d",
+      info->sequence->flags & SEQ_FLAG_CONSTRAINED_PARAMETERS,
+      info->sequence->flags & SEQ_FLAG_PROGRESSIVE_SEQUENCE);
+  GST_DEBUG_OBJECT (mpeg2dec, "FLAGS: LOW_DELAY:%d, COLOUR_DESCRIPTION:%d",
+      info->sequence->flags & SEQ_FLAG_LOW_DELAY,
+      info->sequence->flags & SEQ_FLAG_COLOUR_DESCRIPTION);
+
+  if (!gst_mpeg2dec_negotiate_format (mpeg2dec))
+    goto negotiate_failed;
+
+  mpeg2_custom_fbuf (mpeg2dec->decoder, 1);
+
+  init_dummybuf (mpeg2dec);
+
+  /* Pump in some null buffers, because otherwise libmpeg2 doesn't
+   * initialise the discard_fbuf->id */
+  mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
+  mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
+  mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
+
+  mpeg2dec->need_sequence = FALSE;
+
+done:
+  return ret;
+
+negotiate_failed:
+  {
+    GST_ELEMENT_ERROR (mpeg2dec, CORE, NEGOTIATION, (NULL), (NULL));
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto done;
+  }
+}
+
+static void
+clear_buffers (GstMpeg2dec * mpeg2dec)
+{
+  gint i;
+  GstBuffer **bufpen;
+
+  for (i = 0; i < 4; i++) {
+    bufpen = &mpeg2dec->ip_buffers[i];
+    if (*bufpen)
+      gst_buffer_unref (*bufpen);
+    *bufpen = NULL;
+  }
+  bufpen = &mpeg2dec->b_buffer;
+  if (*bufpen)
+    gst_buffer_unref (*bufpen);
+  *bufpen = NULL;
+}
+
+static void
+clear_queued (GstMpeg2dec * mpeg2dec)
+{
+  g_list_foreach (mpeg2dec->queued, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (mpeg2dec->queued);
+  mpeg2dec->queued = NULL;
+}
+
+static GstFlowReturn
+flush_queued (GstMpeg2dec * mpeg2dec)
+{
+  GstFlowReturn res = GST_FLOW_OK;
+
+  while (mpeg2dec->queued) {
+    GstBuffer *buf = GST_BUFFER_CAST (mpeg2dec->queued->data);
+
+    GST_LOG_OBJECT (mpeg2dec, "pushing buffer %p, timestamp %"
+        GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT, buf,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+    /* iterate ouput queue an push downstream */
+    res = gst_pad_push (mpeg2dec->srcpad, buf);
+
+    mpeg2dec->queued = g_list_delete_link (mpeg2dec->queued, mpeg2dec->queued);
+  }
+  return res;
+}
+
+static GstFlowReturn
+handle_picture (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
+{
+  gboolean key_frame = FALSE;
+  GstBuffer *outbuf, **bufpen;
+  GstFlowReturn ret;
+  gint type;
+
+  ret = gst_mpeg2dec_alloc_buffer (mpeg2dec, mpeg2dec->offset, &outbuf);
+  if (ret != GST_FLOW_OK)
+    goto no_buffer;
+
+  if (info->current_picture) {
+    type = info->current_picture->flags & PIC_MASK_CODING_TYPE;
+  } else {
+    type = 0;
+  }
+
+  GST_DEBUG_OBJECT (mpeg2dec, "handle picture type %d", type);
+
+  key_frame = type == PIC_FLAG_CODING_TYPE_I;
+
+  switch (type) {
+    case PIC_FLAG_CODING_TYPE_I:
+      mpeg2_skip (mpeg2dec->decoder, 0);
+      if (mpeg2dec->segment.rate < 0.0) {
+        /* negative rate, flush the queued pictures in reverse */
+        GST_DEBUG_OBJECT (mpeg2dec, "flushing queued buffers");
+        flush_queued (mpeg2dec);
+      }
+    case PIC_FLAG_CODING_TYPE_P:
+      bufpen = &mpeg2dec->ip_buffers[mpeg2dec->ip_bufpos];
+      GST_DEBUG_OBJECT (mpeg2dec, "I/P unref %p, ref %p", *bufpen, outbuf);
+      if (*bufpen)
+        gst_buffer_unref (*bufpen);
+      *bufpen = outbuf;
+      mpeg2dec->ip_bufpos = (mpeg2dec->ip_bufpos + 1) & 3;
+      break;
+    case PIC_FLAG_CODING_TYPE_B:
+      bufpen = &mpeg2dec->b_buffer;
+      GST_DEBUG_OBJECT (mpeg2dec, "B unref %p, ref %p", *bufpen, outbuf);
+      if (*bufpen)
+        gst_buffer_unref (*bufpen);
+      *bufpen = outbuf;
+      break;
+    default:
+      break;
+  }
+
+  GST_DEBUG_OBJECT (mpeg2dec, "picture %s, outbuf %p, offset %"
+      G_GINT64_FORMAT,
+      key_frame ? ", kf," : "    ", outbuf, GST_BUFFER_OFFSET (outbuf)
+      );
+
+  if (mpeg2dec->discont_state == MPEG2DEC_DISC_NEW_PICTURE && key_frame) {
+    mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_KEYFRAME;
+  }
+
+  return ret;
+
+no_buffer:
+  {
+    return ret;
+  }
+}
+
+/* try to clip the buffer to the segment boundaries */
+static gboolean
+clip_buffer (GstMpeg2dec * dec, GstBuffer * buf)
+{
+  gboolean res = TRUE;
+  GstClockTime in_ts, in_dur, stop;
+  gint64 cstart, cstop;
+
+  in_ts = GST_BUFFER_TIMESTAMP (buf);
+  in_dur = GST_BUFFER_DURATION (buf);
+
+  GST_LOG_OBJECT (dec,
+      "timestamp:%" GST_TIME_FORMAT " , duration:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (in_ts), GST_TIME_ARGS (in_dur));
+
+  /* can't clip without TIME segment */
+  if (dec->segment.format != GST_FORMAT_TIME)
+    goto beach;
+
+  /* we need a start time */
+  if (!GST_CLOCK_TIME_IS_VALID (in_ts))
+    goto beach;
+
+  /* generate valid stop, if duration unknown, we have unknown stop */
+  stop =
+      GST_CLOCK_TIME_IS_VALID (in_dur) ? (in_ts + in_dur) : GST_CLOCK_TIME_NONE;
+
+  /* now clip */
+  if (!(res = gst_segment_clip (&dec->segment, GST_FORMAT_TIME,
+              in_ts, stop, &cstart, &cstop)))
+    goto beach;
+
+  /* update timestamp and possibly duration if the clipped stop time is
+   * valid */
+  GST_BUFFER_TIMESTAMP (buf) = cstart;
+  if (GST_CLOCK_TIME_IS_VALID (cstop))
+    GST_BUFFER_DURATION (buf) = cstop - cstart;
+
+beach:
+  GST_LOG_OBJECT (dec, "%sdropping", (res ? "not " : ""));
+  return res;
+}
+
+static GstFlowReturn
+handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
+{
+  GstBuffer *outbuf = NULL;
+  GstFlowReturn ret = GST_FLOW_OK;
+  const mpeg2_picture_t *picture;
+  gboolean key_frame = FALSE;
+  GstClockTime time;
+
+  GST_DEBUG_OBJECT (mpeg2dec, "picture slice/end %p %p %p %p",
+      info->display_fbuf,
+      info->display_picture, info->current_picture,
+      (info->display_fbuf ? info->display_fbuf->id : NULL));
+
+  if (!info->display_fbuf || !info->display_fbuf->id)
+    goto no_display;
+
+  outbuf = GST_BUFFER (info->display_fbuf->id);
+
+  picture = info->display_picture;
+
+  key_frame = (picture->flags & PIC_MASK_CODING_TYPE) == PIC_FLAG_CODING_TYPE_I;
+
+  GST_DEBUG_OBJECT (mpeg2dec, "picture flags: %d, type: %d, keyframe: %d",
+      picture->flags, picture->flags & PIC_MASK_CODING_TYPE, key_frame);
+
+  if (key_frame) {
+    GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
+    mpeg2_skip (mpeg2dec->decoder, 0);
+  } else {
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
+  }
+
+  if (mpeg2dec->discont_state == MPEG2DEC_DISC_NEW_KEYFRAME && key_frame)
+    mpeg2dec->discont_state = MPEG2DEC_DISC_NONE;
+
+  time = GST_CLOCK_TIME_NONE;
+
+#if MPEG2_RELEASE < MPEG2_VERSION(0,4,0)
+  if (picture->flags & PIC_FLAG_PTS) {
+    time = MPEG_TIME_TO_GST_TIME (picture->pts);
+    GST_DEBUG_OBJECT (mpeg2dec, "picture pts %" G_GUINT64_FORMAT
+        ", time %" GST_TIME_FORMAT, picture->pts, GST_TIME_ARGS (time));
+  }
+#else
+  if (picture->flags & PIC_FLAG_TAGS) {
+    guint64 pts = (((guint64) picture->tag2) << 32) | picture->tag;
+
+    time = MPEG_TIME_TO_GST_TIME (pts);
+    GST_DEBUG_OBJECT (mpeg2dec, "picture tags %" G_GUINT64_FORMAT
+        ", time %" GST_TIME_FORMAT, pts, GST_TIME_ARGS (time));
+  }
+#endif
+
+  if (time == GST_CLOCK_TIME_NONE) {
+    time = mpeg2dec->next_time;
+    GST_DEBUG_OBJECT (mpeg2dec, "picture didn't have pts");
+  } else {
+    GST_DEBUG_OBJECT (mpeg2dec,
+        "picture had pts %" GST_TIME_FORMAT ", we had %"
+        GST_TIME_FORMAT, GST_TIME_ARGS (time),
+        GST_TIME_ARGS (mpeg2dec->next_time));
+    mpeg2dec->next_time = time;
+  }
+  GST_BUFFER_TIMESTAMP (outbuf) = time;
+
+  /* TODO set correct offset here based on frame number */
+  if (info->display_picture_2nd) {
+    GST_BUFFER_DURATION (outbuf) = (picture->nb_fields +
+        info->display_picture_2nd->nb_fields) * mpeg2dec->frame_period / 2;
+  } else {
+    GST_BUFFER_DURATION (outbuf) =
+        picture->nb_fields * mpeg2dec->frame_period / 2;
+  }
+  mpeg2dec->next_time += GST_BUFFER_DURATION (outbuf);
+
+  if (picture->flags & PIC_FLAG_TOP_FIELD_FIRST)
+    GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_TFF);
+
+#if MPEG2_RELEASE >= MPEG2_VERSION(0,5,0)
+  /* repeat field introduced in 0.5.0 */
+  if (picture->flags & PIC_FLAG_REPEAT_FIRST_FIELD)
+    GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_RFF);
+#endif
+
+  GST_DEBUG_OBJECT (mpeg2dec,
+      "picture: %s %s %s %s %s fields:%d off:%" G_GINT64_FORMAT " ts:%"
+      GST_TIME_FORMAT,
+      (picture->flags & PIC_FLAG_PROGRESSIVE_FRAME ? "prog" : "    "),
+      (picture->flags & PIC_FLAG_TOP_FIELD_FIRST ? "tff" : "   "),
+#if MPEG2_RELEASE >= MPEG2_VERSION(0,5,0)
+      (picture->flags & PIC_FLAG_REPEAT_FIRST_FIELD ? "rff" : "   "),
+#else
+      "unknown rff",
+#endif
+      (picture->flags & PIC_FLAG_SKIP ? "skip" : "    "),
+      (picture->flags & PIC_FLAG_COMPOSITE_DISPLAY ? "composite" : "         "),
+      picture->nb_fields, GST_BUFFER_OFFSET (outbuf),
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
+
+  if (mpeg2dec->index) {
+    gst_index_add_association (mpeg2dec->index, mpeg2dec->index_id,
+        (key_frame ? GST_ASSOCIATION_FLAG_KEY_UNIT :
+            GST_ASSOCIATION_FLAG_DELTA_UNIT),
+        GST_FORMAT_BYTES, GST_BUFFER_OFFSET (outbuf),
+        GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (outbuf), 0);
+  }
+
+  if (picture->flags & PIC_FLAG_SKIP)
+    goto skip;
+
+  if (mpeg2dec->discont_state != MPEG2DEC_DISC_NONE)
+    goto drop;
+
+  /* check for clipping */
+  if (!clip_buffer (mpeg2dec, outbuf))
+    goto clipped;
+
+  if (GST_CLOCK_TIME_IS_VALID (time)) {
+    gboolean need_skip;
+    GstClockTime qostime;
+
+    /* qos needs to be done on running time */
+    qostime = gst_segment_to_running_time (&mpeg2dec->segment, GST_FORMAT_TIME,
+        time);
+
+    GST_OBJECT_LOCK (mpeg2dec);
+    /* check for QoS, don't perform the last steps of getting and
+     * pushing the buffers that are known to be late. */
+    /* FIXME, we can also entirely skip decoding if the next valid buffer is
+     * known to be after a keyframe (using the granule_shift) */
+    need_skip = mpeg2dec->earliest_time != -1
+        && qostime <= mpeg2dec->earliest_time;
+    GST_OBJECT_UNLOCK (mpeg2dec);
+
+    if (need_skip) {
+      GstMessage *qos_msg;
+      guint64 stream_time;
+      gint64 jitter;
+
+      mpeg2dec->dropped++;
+
+      stream_time =
+          gst_segment_to_stream_time (&mpeg2dec->segment, GST_FORMAT_TIME,
+          time);
+      jitter = GST_CLOCK_DIFF (qostime, mpeg2dec->earliest_time);
+
+      qos_msg =
+          gst_message_new_qos (GST_OBJECT_CAST (mpeg2dec), FALSE, qostime,
+          stream_time, time, GST_BUFFER_DURATION (outbuf));
+      gst_message_set_qos_values (qos_msg, jitter, mpeg2dec->proportion,
+          1000000);
+      gst_message_set_qos_stats (qos_msg, GST_FORMAT_BUFFERS,
+          mpeg2dec->processed, mpeg2dec->dropped);
+      gst_element_post_message (GST_ELEMENT_CAST (mpeg2dec), qos_msg);
+
+      goto dropping_qos;
+    }
+  }
+
+  mpeg2dec->processed++;
+
+  /* ref before pushing it out, so we still have the ref in our
+   * array of buffers */
+  gst_buffer_ref (outbuf);
+
+  /* do cropping if the target region is smaller than the input one */
+  if (mpeg2dec->decoded_width != mpeg2dec->width ||
+      mpeg2dec->decoded_height != mpeg2dec->height) {
+    GST_DEBUG_OBJECT (mpeg2dec, "cropping buffer");
+    ret = gst_mpeg2dec_crop_buffer (mpeg2dec, &outbuf);
+    if (ret != GST_FLOW_OK)
+      goto done;
+  }
+
+  if (mpeg2dec->segment.rate >= 0.0) {
+    /* forward: push right away */
+    GST_LOG_OBJECT (mpeg2dec, "pushing buffer %p, timestamp %"
+        GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT,
+        outbuf,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)));
+    GST_LOG_OBJECT (mpeg2dec, "... with flags %x", GST_BUFFER_FLAGS (outbuf));
+
+    ret = gst_pad_push (mpeg2dec->srcpad, outbuf);
+    GST_DEBUG_OBJECT (mpeg2dec, "pushed with result %s",
+        gst_flow_get_name (ret));
+  } else {
+    /* reverse: queue, we'll push in reverse when we receive the next (previous)
+     * keyframe. */
+    GST_DEBUG_OBJECT (mpeg2dec, "queued frame");
+    mpeg2dec->queued = g_list_prepend (mpeg2dec->queued, outbuf);
+    ret = GST_FLOW_OK;
+  }
+
+done:
+
+  return ret;
+
+  /* special cases */
+no_display:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "no picture to display");
+    return GST_FLOW_OK;
+  }
+skip:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer because of skip flag");
+    return GST_FLOW_OK;
+  }
+drop:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer, discont state %d",
+        mpeg2dec->discont_state);
+    return GST_FLOW_OK;
+  }
+clipped:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer, clipped");
+    return GST_FLOW_OK;
+  }
+dropping_qos:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer because of QoS");
+    return GST_FLOW_OK;
+  }
+}
+
+#if 0
+static void
+update_streaminfo (GstMpeg2dec * mpeg2dec)
+{
+  GstCaps *caps;
+  GstProps *props;
+  GstPropsEntry *entry;
+  const mpeg2_info_t *info;
+
+  info = mpeg2_info (mpeg2dec->decoder);
+
+  props = gst_props_empty_new ();
+
+  entry =
+      gst_props_entry_new ("framerate",
+      G_TYPE_DOUBLE (GST_SECOND / (float) mpeg2dec->frame_period));
+  gst_props_add_entry (props, entry);
+  entry =
+      gst_props_entry_new ("bitrate",
+      G_TYPE_INT (info->sequence->byte_rate * 8));
+  gst_props_add_entry (props, entry);
+
+  caps = gst_caps_new ("mpeg2dec_streaminfo",
+      "application/x-gst-streaminfo", props);
+
+  gst_caps_replace_sink (&mpeg2dec->streaminfo, caps);
+  g_object_notify (G_OBJECT (mpeg2dec), "streaminfo");
+}
+#endif
+
+static GstFlowReturn
+gst_mpeg2dec_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstMpeg2dec *mpeg2dec;
+  guint32 size;
+  guint8 *data, *end;
+  GstClockTime pts;
+  const mpeg2_info_t *info;
+  mpeg2_state_t state;
+  gboolean done = FALSE;
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  size = GST_BUFFER_SIZE (buf);
+  data = GST_BUFFER_DATA (buf);
+  pts = GST_BUFFER_TIMESTAMP (buf);
+
+  if (GST_BUFFER_IS_DISCONT (buf)) {
+    GST_LOG_OBJECT (mpeg2dec, "DISCONT, reset decoder");
+    /* when we receive a discont, reset our state as to not create too much
+     * distortion in the picture due to missing packets */
+    mpeg2_reset (mpeg2dec->decoder, 0);
+    mpeg2_skip (mpeg2dec->decoder, 1);
+    mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_PICTURE;
+  }
+
+  GST_LOG_OBJECT (mpeg2dec, "received buffer, timestamp %"
+      GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
+      GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+  info = mpeg2dec->info;
+  end = data + size;
+
+  mpeg2dec->offset = GST_BUFFER_OFFSET (buf);
+
+  if (pts != GST_CLOCK_TIME_NONE) {
+    gint64 mpeg_pts = GST_TIME_TO_MPEG_TIME (pts);
+
+    GST_DEBUG_OBJECT (mpeg2dec,
+        "have pts: %" G_GINT64_FORMAT " (%" GST_TIME_FORMAT ")",
+        mpeg_pts, GST_TIME_ARGS (MPEG_TIME_TO_GST_TIME (mpeg_pts)));
+
+#if MPEG2_RELEASE >= MPEG2_VERSION(0,4,0)
+    mpeg2_tag_picture (mpeg2dec->decoder, mpeg_pts & 0xffffffff,
+        mpeg_pts >> 32);
+#else
+    mpeg2_pts (mpeg2dec->decoder, mpeg_pts);
+#endif
+  } else {
+    GST_LOG ("no pts");
+  }
+
+  GST_LOG_OBJECT (mpeg2dec, "calling mpeg2_buffer");
+  mpeg2_buffer (mpeg2dec->decoder, data, end);
+  GST_LOG_OBJECT (mpeg2dec, "calling mpeg2_buffer done");
+
+  while (!done) {
+    GST_LOG_OBJECT (mpeg2dec, "calling parse");
+    state = mpeg2_parse (mpeg2dec->decoder);
+    GST_DEBUG_OBJECT (mpeg2dec, "parse state %d", state);
+
+    switch (state) {
+#if MPEG2_RELEASE >= MPEG2_VERSION (0, 5, 0)
+      case STATE_SEQUENCE_MODIFIED:
+        GST_DEBUG_OBJECT (mpeg2dec, "sequence modified");
+        /* fall through */
+#endif
+      case STATE_SEQUENCE:
+        ret = handle_sequence (mpeg2dec, info);
+        /* if there is an error handling the sequence
+         * reset the decoder, maybe something more elegant
+         * could be done.
+         */
+        if (ret == GST_FLOW_ERROR) {
+          mpeg2dec->error_count++;
+          GST_WARNING_OBJECT (mpeg2dec, "Decoding error #%d",
+              mpeg2dec->error_count);
+          if (mpeg2dec->error_count >= WARN_THRESHOLD && WARN_THRESHOLD > 0) {
+            GST_ELEMENT_WARNING (mpeg2dec, STREAM, DECODE,
+                ("%d consecutive decoding errors", mpeg2dec->error_count),
+                (NULL));
+          }
+          mpeg2_reset (mpeg2dec->decoder, 0);
+          mpeg2_skip (mpeg2dec->decoder, 1);
+          mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_PICTURE;
+
+          goto exit;
+        }
+        break;
+      case STATE_SEQUENCE_REPEATED:
+        GST_DEBUG_OBJECT (mpeg2dec, "sequence repeated");
+        break;
+      case STATE_GOP:
+        GST_DEBUG_OBJECT (mpeg2dec, "gop");
+        break;
+      case STATE_PICTURE:
+        ret = handle_picture (mpeg2dec, info);
+        break;
+      case STATE_SLICE_1ST:
+        GST_LOG_OBJECT (mpeg2dec, "1st slice of frame encountered");
+        break;
+      case STATE_PICTURE_2ND:
+        GST_LOG_OBJECT (mpeg2dec,
+            "Second picture header encountered. Decoding 2nd field");
+        break;
+#if MPEG2_RELEASE >= MPEG2_VERSION (0, 4, 0)
+      case STATE_INVALID_END:
+        GST_DEBUG_OBJECT (mpeg2dec, "invalid end");
+#endif
+      case STATE_END:
+        GST_DEBUG_OBJECT (mpeg2dec, "end");
+        mpeg2dec->need_sequence = TRUE;
+      case STATE_SLICE:
+        ret = handle_slice (mpeg2dec, info);
+        break;
+      case STATE_BUFFER:
+        done = TRUE;
+        break;
+        /* error */
+      case STATE_INVALID:
+        /* FIXME: at some point we should probably send newsegment events to
+         * let downstream know that parts of the stream are missing */
+        mpeg2dec->error_count++;
+        GST_WARNING_OBJECT (mpeg2dec, "Decoding error #%d",
+            mpeg2dec->error_count);
+        if (mpeg2dec->error_count >= WARN_THRESHOLD && WARN_THRESHOLD > 0) {
+          GST_ELEMENT_WARNING (mpeg2dec, STREAM, DECODE,
+              ("%d consecutive decoding errors", mpeg2dec->error_count),
+              (NULL));
+        }
+        continue;
+      default:
+        GST_ERROR_OBJECT (mpeg2dec, "Unknown libmpeg2 state %d, FIXME", state);
+        goto exit;
+    }
+
+    mpeg2dec->error_count = 0;
+
+    /*
+     * FIXME: should pass more information such as state the user data is from
+     */
+#ifdef enable_user_data
+    if (info->user_data_len > 0) {
+      GstBuffer *udbuf = gst_buffer_new_and_alloc (info->user_data_len);
+
+      memcpy (GST_BUFFER_DATA (udbuf), info->user_data, info->user_data_len);
+
+      gst_pad_push (mpeg2dec->userdatapad, udbuf);
+    }
+#endif
+
+    if (ret != GST_FLOW_OK) {
+      GST_DEBUG_OBJECT (mpeg2dec, "exit loop, reason %s",
+          gst_flow_get_name (ret));
+      break;
+    }
+  }
+done:
+  gst_buffer_unref (buf);
+  return ret;
+
+  /* errors */
+exit:
+  {
+    ret = GST_FLOW_OK;
+    goto done;
+  }
+}
+
+static gboolean
+gst_mpeg2dec_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstMpeg2dec *mpeg2dec;
+  gboolean ret = TRUE;
+
+  mpeg2dec = GST_MPEG2DEC (gst_pad_get_parent (pad));
+
+  GST_DEBUG_OBJECT (mpeg2dec, "Got %s event on sink pad",
+      GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gboolean update;
+      GstFormat format;
+      gdouble rate, arate;
+      gint64 start, stop, time;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &arate, &format,
+          &start, &stop, &time);
+
+      /* we need TIME and a positive rate */
+      if (format != GST_FORMAT_TIME)
+        goto newseg_wrong_format;
+
+      /* now configure the values */
+      gst_segment_set_newsegment_full (&mpeg2dec->segment, update,
+          rate, arate, format, start, stop, time);
+
+      GST_DEBUG_OBJECT (mpeg2dec,
+          "Pushing newseg rate %g, applied rate %g, format %d, start %"
+          G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT ", pos %" G_GINT64_FORMAT,
+          rate, arate, format, start, stop, time);
+
+      ret = gst_pad_push_event (mpeg2dec->srcpad, event);
+      break;
+    }
+    case GST_EVENT_FLUSH_START:
+      ret = gst_pad_push_event (mpeg2dec->srcpad, event);
+      break;
+    case GST_EVENT_FLUSH_STOP:
+    {
+      mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_PICTURE;
+      mpeg2dec->next_time = -1;;
+      gst_mpeg2dec_qos_reset (mpeg2dec);
+      mpeg2_reset (mpeg2dec->decoder, 0);
+      mpeg2_skip (mpeg2dec->decoder, 1);
+      clear_queued (mpeg2dec);
+      ret = gst_pad_push_event (mpeg2dec->srcpad, event);
+      break;
+    }
+    case GST_EVENT_EOS:
+      if (mpeg2dec->index && mpeg2dec->closed) {
+        gst_index_commit (mpeg2dec->index, mpeg2dec->index_id);
+      }
+      ret = gst_pad_push_event (mpeg2dec->srcpad, event);
+      break;
+    default:
+      ret = gst_pad_push_event (mpeg2dec->srcpad, event);
+      break;
+  }
+
+done:
+  gst_object_unref (mpeg2dec);
+
+  return ret;
+
+  /* ERRORS */
+newseg_wrong_format:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "received non TIME newsegment");
+    gst_event_unref (event);
+    goto done;
+  }
+}
+
+static gboolean
+gst_mpeg2dec_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstMpeg2dec *mpeg2dec;
+  GstStructure *s;
+
+  mpeg2dec = GST_MPEG2DEC (gst_pad_get_parent (pad));
+
+  s = gst_caps_get_structure (caps, 0);
+
+  /* parse the par, this overrides the encoded par */
+  mpeg2dec->have_par = gst_structure_get_fraction (s, "pixel-aspect-ratio",
+      &mpeg2dec->pixel_width, &mpeg2dec->pixel_height);
+
+  gst_object_unref (mpeg2dec);
+
+  return TRUE;
+}
+
+static gboolean
+gst_mpeg2dec_sink_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+    GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  GstMpeg2dec *mpeg2dec;
+  const mpeg2_info_t *info;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  if (mpeg2dec->decoder == NULL)
+    return FALSE;
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  info = mpeg2_info (mpeg2dec->decoder);
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_TIME:
+          if (info->sequence && info->sequence->byte_rate) {
+            *dest_value =
+                gst_util_uint64_scale (GST_SECOND, src_value,
+                info->sequence->byte_rate);
+            GST_WARNING_OBJECT (mpeg2dec, "dest_value:%" GST_TIME_FORMAT,
+                GST_TIME_ARGS (*dest_value));
+            break;
+          } else if (info->sequence)
+            GST_WARNING_OBJECT (mpeg2dec,
+                "Cannot convert from BYTES to TIME since we don't know the bitrate at this point.");
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          if (info->sequence && info->sequence->byte_rate) {
+            *dest_value =
+                gst_util_uint64_scale_int (src_value, info->sequence->byte_rate,
+                GST_SECOND);
+            break;
+          } else if (info->sequence)
+            GST_WARNING_OBJECT (mpeg2dec,
+                "Cannot convert from TIME to BYTES since we don't know the bitrate at this point.");
+        default:
+          res = FALSE;
+      }
+      break;
+    default:
+      res = FALSE;
+  }
+  return res;
+}
+
+
+static gboolean
+gst_mpeg2dec_src_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+    GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  GstMpeg2dec *mpeg2dec;
+  const mpeg2_info_t *info;
+  guint64 scale = 1;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  if (mpeg2dec->decoder == NULL)
+    return FALSE;
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  info = mpeg2_info (mpeg2dec->decoder);
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_TIME:
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          scale = 6 * (mpeg2dec->width * mpeg2dec->height >> 2);
+        case GST_FORMAT_DEFAULT:
+          if (info->sequence && mpeg2dec->frame_period) {
+            *dest_value =
+                gst_util_uint64_scale_int (src_value, scale,
+                mpeg2dec->frame_period);
+            break;
+          }
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_DEFAULT:
+      switch (*dest_format) {
+        case GST_FORMAT_TIME:
+          *dest_value = src_value * mpeg2dec->frame_period;
+          break;
+        case GST_FORMAT_BYTES:
+          *dest_value =
+              src_value * 6 * ((mpeg2dec->width * mpeg2dec->height) >> 2);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    default:
+      res = FALSE;
+  }
+  return res;
+}
+
+static const GstQueryType *
+gst_mpeg2dec_get_src_query_types (GstPad * pad)
+{
+  static const GstQueryType types[] = {
+    GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
+    0
+  };
+
+  return types;
+}
+
+static gboolean
+gst_mpeg2dec_src_query (GstPad * pad, GstQuery * query)
+{
+  gboolean res = TRUE;
+  GstMpeg2dec *mpeg2dec;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+    {
+      GstFormat format;
+      gint64 cur;
+
+      /* First, we try to ask upstream, which might know better, especially in
+       * the case of DVDs, with multiple chapter */
+      if ((res = gst_pad_peer_query (mpeg2dec->sinkpad, query)))
+        break;
+
+      /* save requested format */
+      gst_query_parse_position (query, &format, NULL);
+
+      /* and convert to the requested format */
+      if (!gst_mpeg2dec_src_convert (pad, GST_FORMAT_TIME,
+              mpeg2dec->next_time, &format, &cur))
+        goto error;
+
+      cur = gst_segment_to_stream_time (&mpeg2dec->segment, format, cur);
+      if (cur == -1)
+        goto error;
+
+      gst_query_set_position (query, format, cur);
+
+      GST_LOG_OBJECT (mpeg2dec,
+          "position query: we return %" G_GUINT64_FORMAT " (format %u)", cur,
+          format);
+      break;
+    }
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
+      GstFormat rformat;
+      gint64 total, total_bytes;
+      GstPad *peer;
+
+      if ((peer = gst_pad_get_peer (mpeg2dec->sinkpad)) == NULL)
+        goto error;
+
+      /* save requested format */
+      gst_query_parse_duration (query, &format, NULL);
+
+      /* send to peer */
+      if ((res = gst_pad_query (peer, query))) {
+        gst_object_unref (peer);
+        goto done;
+      } else {
+        GST_LOG_OBJECT (mpeg2dec, "query on peer pad failed, trying bytes");
+      }
+
+      /* query peer for total length in bytes */
+      gst_query_set_duration (query, GST_FORMAT_BYTES, -1);
+
+      if (!(res = gst_pad_query (peer, query))) {
+        GST_LOG_OBJECT (mpeg2dec, "query on peer pad failed");
+        gst_object_unref (peer);
+        goto error;
+      }
+      gst_object_unref (peer);
+
+      /* get the returned format */
+      gst_query_parse_duration (query, &rformat, &total_bytes);
+      GST_LOG_OBJECT (mpeg2dec,
+          "peer pad returned total=%" G_GINT64_FORMAT " bytes", total_bytes);
+
+      if (total_bytes != -1) {
+        if (!gst_mpeg2dec_sink_convert (pad, GST_FORMAT_BYTES, total_bytes,
+                &format, &total))
+          goto error;
+      } else {
+        total = -1;
+      }
+
+      gst_query_set_duration (query, format, total);
+
+      GST_LOG_OBJECT (mpeg2dec,
+          "position query: we return %" G_GUINT64_FORMAT " (format %u)", total,
+          format);
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+done:
+  return res;
+
+error:
+
+  GST_DEBUG ("error handling query");
+  return FALSE;
+}
+
+
+#if 0
+static const GstEventMask *
+gst_mpeg2dec_get_event_masks (GstPad * pad)
+{
+  static const GstEventMask masks[] = {
+    {GST_EVENT_SEEK, GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH},
+    {GST_EVENT_NAVIGATION, GST_EVENT_FLAG_NONE},
+    {0,}
+  };
+
+  return masks;
+}
+#endif
+
+static gboolean
+index_seek (GstPad * pad, GstEvent * event)
+{
+  GstIndexEntry *entry;
+  GstMpeg2dec *mpeg2dec;
+  gdouble rate;
+  GstFormat format;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  gst_event_parse_seek (event, &rate, &format, &flags,
+      &cur_type, &cur, &stop_type, &stop);
+
+  entry = gst_index_get_assoc_entry (mpeg2dec->index, mpeg2dec->index_id,
+      GST_INDEX_LOOKUP_BEFORE, GST_ASSOCIATION_FLAG_KEY_UNIT, format, cur);
+
+  if ((entry) && gst_pad_is_linked (mpeg2dec->sinkpad)) {
+    const GstFormat *peer_formats, *try_formats;
+
+    /* since we know the exact byteoffset of the frame, make sure to seek on bytes first */
+    const GstFormat try_all_formats[] = {
+      GST_FORMAT_BYTES,
+      GST_FORMAT_TIME,
+      0
+    };
+
+    try_formats = try_all_formats;
+
+#if 0
+    peer_formats = gst_pad_get_formats (GST_PAD_PEER (mpeg2dec->sinkpad));
+#else
+    peer_formats = try_all_formats;     /* FIXE ME */
+#endif
+
+    while (gst_formats_contains (peer_formats, *try_formats)) {
+      gint64 value;
+
+      if (gst_index_entry_assoc_map (entry, *try_formats, &value)) {
+        GstEvent *seek_event;
+
+        GST_DEBUG_OBJECT (mpeg2dec, "index %s %" G_GINT64_FORMAT
+            " -> %s %" G_GINT64_FORMAT,
+            gst_format_get_details (format)->nick,
+            cur, gst_format_get_details (*try_formats)->nick, value);
+
+        /* lookup succeeded, create the seek */
+        seek_event =
+            gst_event_new_seek (rate, *try_formats, flags, cur_type, value,
+            stop_type, stop);
+        /* do the seek */
+        if (gst_pad_push_event (mpeg2dec->sinkpad, seek_event)) {
+          /* seek worked, we're done, loop will exit */
+#if 0
+          mpeg2dec->segment_start = GST_EVENT_SEEK_OFFSET (event);
+#endif
+          return TRUE;
+        }
+      }
+      try_formats++;
+    }
+  }
+  return FALSE;
+}
+
+static gboolean
+normal_seek (GstPad * pad, GstEvent * event)
+{
+  gdouble rate;
+  GstFormat format, conv;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  gint64 time_cur, bytes_cur;
+  gint64 time_stop, bytes_stop;
+  gboolean res;
+  GstMpeg2dec *mpeg2dec;
+  GstEvent *peer_event;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  GST_DEBUG ("normal seek");
+
+  gst_event_parse_seek (event, &rate, &format, &flags,
+      &cur_type, &cur, &stop_type, &stop);
+
+  conv = GST_FORMAT_TIME;
+  if (!gst_mpeg2dec_src_convert (pad, format, cur, &conv, &time_cur))
+    goto convert_failed;
+  if (!gst_mpeg2dec_src_convert (pad, format, stop, &conv, &time_stop))
+    goto convert_failed;
+
+  GST_DEBUG ("seek to time %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (time_cur), GST_TIME_ARGS (time_stop));
+
+  peer_event = gst_event_new_seek (rate, GST_FORMAT_TIME, flags,
+      cur_type, time_cur, stop_type, time_stop);
+
+  /* try seek on time then */
+  if ((res = gst_pad_push_event (mpeg2dec->sinkpad, peer_event)))
+    goto done;
+
+  /* else we try to seek on bytes */
+  conv = GST_FORMAT_BYTES;
+  if (!gst_mpeg2dec_sink_convert (pad, GST_FORMAT_TIME, time_cur,
+          &conv, &bytes_cur))
+    goto convert_failed;
+  if (!gst_mpeg2dec_sink_convert (pad, GST_FORMAT_TIME, time_stop,
+          &conv, &bytes_stop))
+    goto convert_failed;
+
+  /* conversion succeeded, create the seek */
+  peer_event =
+      gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
+      cur_type, bytes_cur, stop_type, bytes_stop);
+
+  /* do the seek */
+  res = gst_pad_push_event (mpeg2dec->sinkpad, peer_event);
+
+done:
+  return res;
+
+  /* ERRORS */
+convert_failed:
+  {
+    /* probably unsupported seek format */
+    GST_DEBUG_OBJECT (mpeg2dec,
+        "failed to convert format %u into GST_FORMAT_TIME", format);
+    return FALSE;
+  }
+}
+
+
+static gboolean
+gst_mpeg2dec_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res;
+  GstMpeg2dec *mpeg2dec;
+
+  mpeg2dec = GST_MPEG2DEC (GST_PAD_PARENT (pad));
+
+  if (mpeg2dec->decoder == NULL)
+    goto no_decoder;
+
+  switch (GST_EVENT_TYPE (event)) {
+      /* the all-formats seek logic */
+    case GST_EVENT_SEEK:{
+      gst_event_ref (event);
+      if (!(res = gst_pad_push_event (mpeg2dec->sinkpad, event))) {
+        if (mpeg2dec->index)
+          res = index_seek (pad, event);
+        else
+          res = normal_seek (pad, event);
+      }
+      gst_event_unref (event);
+      break;
+    }
+    case GST_EVENT_QOS:
+    {
+      gdouble proportion;
+      GstClockTimeDiff diff;
+      GstClockTime timestamp;
+
+      gst_event_parse_qos (event, &proportion, &diff, &timestamp);
+
+      GST_OBJECT_LOCK (mpeg2dec);
+      mpeg2dec->proportion = proportion;
+      mpeg2dec->earliest_time = timestamp + diff;
+      GST_OBJECT_UNLOCK (mpeg2dec);
+
+      GST_DEBUG_OBJECT (mpeg2dec,
+          "got QoS %" GST_TIME_FORMAT ", %" G_GINT64_FORMAT,
+          GST_TIME_ARGS (timestamp), diff);
+
+      res = gst_pad_push_event (mpeg2dec->sinkpad, event);
+      break;
+    }
+    case GST_EVENT_NAVIGATION:
+      /* Forward a navigation event unchanged */
+    default:
+      res = gst_pad_push_event (mpeg2dec->sinkpad, event);
+      break;
+  }
+  return res;
+
+no_decoder:
+  {
+    GST_DEBUG_OBJECT (mpeg2dec, "no decoder, cannot handle event");
+    gst_event_unref (event);
+    return FALSE;
+  }
+}
+
+static GstStateChangeReturn
+gst_mpeg2dec_change_state (GstElement * element, GstStateChange transition)
+{
+  GstStateChangeReturn ret;
+  GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      mpeg2_accel (MPEG2_ACCEL_DETECT);
+      if ((mpeg2dec->decoder = mpeg2_init ()) == NULL)
+        goto init_failed;
+      mpeg2dec->info = mpeg2_info (mpeg2dec->decoder);
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      gst_mpeg2dec_reset (mpeg2dec);
+      gst_mpeg2dec_qos_reset (mpeg2dec);
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_mpeg2dec_qos_reset (mpeg2dec);
+      clear_queued (mpeg2dec);
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      if (mpeg2dec->decoder) {
+        mpeg2_close (mpeg2dec->decoder);
+        mpeg2dec->decoder = NULL;
+        mpeg2dec->info = NULL;
+      }
+      clear_buffers (mpeg2dec);
+      break;
+    default:
+      break;
+  }
+  return ret;
+
+  /* ERRORS */
+init_failed:
+  {
+    GST_ELEMENT_ERROR (mpeg2dec, LIBRARY, INIT,
+        (NULL), ("Failed to initialize libmpeg2 library"));
+    return GST_STATE_CHANGE_FAILURE;
+  }
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, "mpeg2dec", GST_RANK_PRIMARY,
+          GST_TYPE_MPEG2DEC))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "mpeg2dec",
+    "LibMpeg2 decoder", plugin_init, VERSION, "GPL", GST_PACKAGE_NAME,
+    GST_PACKAGE_ORIGIN);
diff --git a/ext/mpeg2dec/gstmpeg2dec.h b/ext/mpeg2dec/gstmpeg2dec.h
new file mode 100644 (file)
index 0000000..69f4fe3
--- /dev/null
@@ -0,0 +1,133 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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_MPEG2DEC_H__
+#define __GST_MPEG2DEC_H__
+
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <mpeg2.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MPEG2DEC \
+  (gst_mpeg2dec_get_type())
+#define GST_MPEG2DEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MPEG2DEC,GstMpeg2dec))
+#define GST_MPEG2DEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MPEG2DEC,GstMpeg2decClass))
+#define GST_IS_MPEG2DEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MPEG2DEC))
+#define GST_IS_MPEG2DEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MPEG2DEC))
+
+#define MPEG_TIME_TO_GST_TIME(time) ((time) == -1 ? -1 : ((time) * (GST_MSECOND/10)) / G_GINT64_CONSTANT(9))
+#define GST_TIME_TO_MPEG_TIME(time) ((time) == -1 ? -1 : ((time) * G_GINT64_CONSTANT(9)) / (GST_MSECOND/10))
+
+typedef struct _GstMpeg2dec GstMpeg2dec;
+typedef struct _GstMpeg2decClass GstMpeg2decClass;
+
+typedef enum
+{
+  MPEG2DEC_DISC_NONE            = 0,
+  MPEG2DEC_DISC_NEW_PICTURE,
+  MPEG2DEC_DISC_NEW_KEYFRAME
+} DiscontState;
+
+struct _GstMpeg2dec {
+  GstElement     element;
+
+  /* pads */
+  GstPad        *sinkpad,
+                *srcpad,
+                *userdatapad;
+
+  mpeg2dec_t    *decoder;
+  const mpeg2_info_t *info;
+
+  gboolean       closed;
+  gboolean       have_fbuf;
+
+  /* buffer management */
+  guint          ip_bufpos;
+  GstBuffer     *ip_buffers[4];
+  GstBuffer     *b_buffer;
+
+  DiscontState   discont_state;
+
+  /* the timestamp of the next frame */
+  GstClockTime   next_time;
+  GstSegment     segment;
+
+  /* video state */
+  GstVideoFormat format;
+  gint           width;
+  gint           height;
+  gint           decoded_width;
+  gint           decoded_height;
+  gint           pixel_width;
+  gint           pixel_height;
+  gint           frame_rate_code;
+  gint64         total_frames;
+  gint64         frame_period;
+  gboolean       interlaced;
+
+  gint           size;
+  gint           u_offs;
+  gint           v_offs;
+  guint8        *dummybuf[4];
+
+
+  guint64        offset;
+  gint           fps_n;
+  gint           fps_d;
+  gboolean       need_sequence;
+
+  GstIndex      *index;
+  gint           index_id;
+
+  gint           error_count;
+  gboolean       can_allocate_aligned;
+
+  /* QoS stuff */ /* with LOCK*/
+  gdouble        proportion;
+  GstClockTime   earliest_time;
+  guint64        processed;
+  guint64        dropped;
+
+  /* gather/decode queues for reverse playback */
+  GList *gather;
+  GList *decode;
+  GList *queued;
+
+  /* whether we have a pixel aspect ratio from the sink caps */
+  gboolean have_par;
+};
+
+struct _GstMpeg2decClass {
+  GstElementClass parent_class;
+};
+
+GType gst_mpeg2dec_get_type(void);
+
+G_END_DECLS
+
+#endif /* __GST_MPEG2DEC_H__ */
diff --git a/ext/sidplay/Makefile.am b/ext/sidplay/Makefile.am
new file mode 100644 (file)
index 0000000..50f3135
--- /dev/null
@@ -0,0 +1,9 @@
+plugin_LTLIBRARIES = libgstsid.la
+
+libgstsid_la_SOURCES = gstsiddec.cc
+libgstsid_la_CXXFLAGS = $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(SIDPLAY_CFLAGS)
+libgstsid_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(SIDPLAY_LIBS)
+libgstsid_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstsid_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstsiddec.h
diff --git a/ext/sidplay/Makefile.in b/ext/sidplay/Makefile.in
new file mode 100644 (file)
index 0000000..4740e23
--- /dev/null
@@ -0,0 +1,721 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/sidplay
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstsid_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstsid_la_OBJECTS = libgstsid_la-gstsiddec.lo
+libgstsid_la_OBJECTS = $(am_libgstsid_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstsid_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+       $(libgstsid_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CXXLD) $(libgstsid_la_CXXFLAGS) $(CXXFLAGS) \
+       $(libgstsid_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
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+       $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+       $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstsid_la_SOURCES)
+DIST_SOURCES = $(libgstsid_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstsid.la
+libgstsid_la_SOURCES = gstsiddec.cc
+libgstsid_la_CXXFLAGS = $(GST_BASE_CFLAGS) $(GST_CXXFLAGS) $(SIDPLAY_CFLAGS)
+libgstsid_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(SIDPLAY_LIBS)
+libgstsid_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstsid_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstsiddec.h
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .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 ext/sidplay/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/sidplay/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
+libgstsid.la: $(libgstsid_la_OBJECTS) $(libgstsid_la_DEPENDENCIES) $(EXTRA_libgstsid_la_DEPENDENCIES) 
+       $(AM_V_CXXLD)$(libgstsid_la_LINK) -rpath $(plugindir) $(libgstsid_la_OBJECTS) $(libgstsid_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsid_la-gstsiddec.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+libgstsid_la-gstsiddec.lo: gstsiddec.cc
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstsid_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsid_la_CXXFLAGS) $(CXXFLAGS) -MT libgstsid_la-gstsiddec.lo -MD -MP -MF $(DEPDIR)/libgstsid_la-gstsiddec.Tpo -c -o libgstsid_la-gstsiddec.lo `test -f 'gstsiddec.cc' || echo '$(srcdir)/'`gstsiddec.cc
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsid_la-gstsiddec.Tpo $(DEPDIR)/libgstsid_la-gstsiddec.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='gstsiddec.cc' object='libgstsid_la-gstsiddec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstsid_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsid_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstsid_la-gstsiddec.lo `test -f 'gstsiddec.cc' || echo '$(srcdir)/'`gstsiddec.cc
+
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/sidplay/gstsiddec.cc b/ext/sidplay/gstsiddec.cc
new file mode 100644 (file)
index 0000000..4c18eec
--- /dev/null
@@ -0,0 +1,746 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *           (C) <2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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-siddec
+ *
+ * This element decodes .sid files to raw audio. .sid files are in fact 
+ * small Commodore 64 programs that are executed on an emulated 6502 CPU and a 
+ * MOS 6581 sound chip.
+ * 
+ * This plugin will first load the complete program into memory before starting
+ * the emulator and producing output.
+ * 
+ * Seeking is not (and cannot be) implemented.
+ * 
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch -v filesrc location=Hawkeye.sid ! siddec ! audioconvert ! alsasink
+ * ]| Decode a sid file and play back the audio using alsasink.
+ * </refsect2>
+ *
+ * Last reviewed on 2006-12-30 (0.10.5)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include "gstsiddec.h"
+
+#define DEFAULT_TUNE           0
+#define DEFAULT_CLOCK          SIDTUNE_CLOCK_PAL
+#define DEFAULT_MEMORY         MPU_BANK_SWITCHING
+#define DEFAULT_FILTER         TRUE
+#define DEFAULT_MEASURED_VOLUME        TRUE
+#define DEFAULT_MOS8580                FALSE
+#define DEFAULT_FORCE_SPEED    FALSE
+#define DEFAULT_BLOCKSIZE      4096
+
+enum
+{
+  PROP_0,
+  PROP_TUNE,
+  PROP_CLOCK,
+  PROP_MEMORY,
+  PROP_FILTER,
+  PROP_MEASURED_VOLUME,
+  PROP_MOS8580,
+  PROP_FORCE_SPEED,
+  PROP_BLOCKSIZE,
+  PROP_METADATA
+};
+
+static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-sid")
+    );
+
+static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "endianness = (int) BYTE_ORDER, "
+        "signed = (boolean) { true, false }, "
+        "width = (int) { 8, 16 }, "
+        "depth = (int) { 8, 16 }, "
+        "rate = (int) [ 8000, 48000 ], " "channels = (int) [ 1, 2 ]")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_siddec_debug);
+#define GST_CAT_DEFAULT gst_siddec_debug
+
+#define GST_TYPE_SID_CLOCK (gst_sid_clock_get_type())
+static GType
+gst_sid_clock_get_type (void)
+{
+  static GType sid_clock_type = 0;
+  static const GEnumValue sid_clock[] = {
+    {SIDTUNE_CLOCK_PAL, "PAL", "pal"},
+    {SIDTUNE_CLOCK_NTSC, "NTSC", "ntsc"},
+    {0, NULL, NULL},
+  };
+
+  if (!sid_clock_type) {
+    sid_clock_type = g_enum_register_static ("GstSidClock", sid_clock);
+  }
+  return sid_clock_type;
+}
+
+#define GST_TYPE_SID_MEMORY (gst_sid_memory_get_type())
+static GType
+gst_sid_memory_get_type (void)
+{
+  static GType sid_memory_type = 0;
+  static const GEnumValue sid_memory[] = {
+    {MPU_BANK_SWITCHING, "Bank Switching", "bank-switching"},
+    {MPU_TRANSPARENT_ROM, "Transparent ROM", "transparent-rom"},
+    {MPU_PLAYSID_ENVIRONMENT, "Playsid Environment", "playsid-environment"},
+    {0, NULL, NULL},
+  };
+
+  if (!sid_memory_type) {
+    sid_memory_type = g_enum_register_static ("GstSidMemory", sid_memory);
+  }
+  return sid_memory_type;
+}
+
+static void gst_siddec_finalize (GObject * object);
+
+static GstFlowReturn gst_siddec_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_siddec_sink_event (GstPad * pad, GstEvent * event);
+
+static gboolean gst_siddec_src_convert (GstPad * pad, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value);
+static gboolean gst_siddec_src_event (GstPad * pad, GstEvent * event);
+static gboolean gst_siddec_src_query (GstPad * pad, GstQuery * query);
+
+static void gst_siddec_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_siddec_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gst_siddec_debug, "siddec", 0, "C64 sid song player");
+
+GST_BOILERPLATE_FULL (GstSidDec, gst_siddec, GstElement, GST_TYPE_ELEMENT, 
+    _do_init);
+
+static void
+gst_siddec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_set_details_simple (element_class, "Sid decoder",
+      "Codec/Decoder/Audio", "Use libsidplay to decode SID audio tunes",
+      "Wim Taymans <wim.taymans@gmail.com>");
+
+  gst_element_class_add_static_pad_template (element_class,
+      &src_templ);
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_templ);
+}
+
+static void
+gst_siddec_class_init (GstSidDecClass * klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = (GObjectClass *) klass;
+
+  gobject_class->finalize = gst_siddec_finalize;
+  gobject_class->set_property = gst_siddec_set_property;
+  gobject_class->get_property = gst_siddec_get_property;
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TUNE,
+      g_param_spec_int ("tune", "tune", "tune",
+          0, 100, DEFAULT_TUNE,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_CLOCK,
+      g_param_spec_enum ("clock", "clock", "clock",
+          GST_TYPE_SID_CLOCK, DEFAULT_CLOCK,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MEMORY,
+      g_param_spec_enum ("memory", "memory", "memory", GST_TYPE_SID_MEMORY,
+          DEFAULT_MEMORY,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FILTER,
+      g_param_spec_boolean ("filter", "filter", "filter", DEFAULT_FILTER,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MEASURED_VOLUME,
+      g_param_spec_boolean ("measured-volume", "measured_volume",
+          "measured_volume", DEFAULT_MEASURED_VOLUME,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_MOS8580,
+      g_param_spec_boolean ("mos8580", "mos8580", "mos8580", DEFAULT_MOS8580,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FORCE_SPEED,
+      g_param_spec_boolean ("force-speed", "force_speed", "force_speed",
+          DEFAULT_FORCE_SPEED,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_BLOCKSIZE,
+      g_param_spec_ulong ("blocksize", "Block size",
+          "Size in bytes to output per buffer", 1, G_MAXULONG,
+          DEFAULT_BLOCKSIZE,
+          (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (gobject_class, PROP_METADATA,
+      g_param_spec_boxed ("metadata", "Metadata", "Metadata", GST_TYPE_CAPS,
+          (GParamFlags)(G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)));
+}
+
+static void
+gst_siddec_init (GstSidDec * siddec, GstSidDecClass * klass)
+{
+  siddec->sinkpad = gst_pad_new_from_static_template (&sink_templ, "sink");
+  gst_pad_set_event_function (siddec->sinkpad, gst_siddec_sink_event);
+  gst_pad_set_chain_function (siddec->sinkpad, gst_siddec_chain);
+  gst_element_add_pad (GST_ELEMENT (siddec), siddec->sinkpad);
+
+  siddec->srcpad = gst_pad_new_from_static_template (&src_templ, "src");
+  gst_pad_set_event_function (siddec->srcpad, gst_siddec_src_event);
+  gst_pad_set_query_function (siddec->srcpad, gst_siddec_src_query);
+  gst_pad_use_fixed_caps (siddec->srcpad);
+  gst_element_add_pad (GST_ELEMENT (siddec), siddec->srcpad);
+
+  siddec->engine = new emuEngine ();
+  siddec->tune = new sidTune (0);
+  siddec->config = (emuConfig *) g_malloc (sizeof (emuConfig));
+
+  /* get default config parameters */
+  siddec->engine->getConfig (*siddec->config);
+
+  siddec->config->mos8580 = DEFAULT_MOS8580;    // mos8580
+  siddec->config->memoryMode = DEFAULT_MEMORY;  // memory mode
+  siddec->config->clockSpeed = DEFAULT_CLOCK;   // clock speed
+  siddec->config->forceSongSpeed = DEFAULT_FORCE_SPEED; // force song speed
+
+  siddec->engine->setConfig (*siddec->config);
+
+  siddec->tune_buffer = (guchar *) g_malloc (maxSidtuneFileLen);
+  siddec->tune_len = 0;
+  siddec->tune_number = 0;
+  siddec->total_bytes = 0;
+  siddec->blocksize = DEFAULT_BLOCKSIZE;
+}
+
+static void
+gst_siddec_finalize (GObject * object)
+{
+  GstSidDec *siddec = GST_SIDDEC (object);
+
+  g_free (siddec->config);
+  g_free (siddec->tune_buffer);
+
+  delete (siddec->tune);
+  delete (siddec->engine);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+update_tags (GstSidDec * siddec)
+{
+  sidTuneInfo info;
+  GstTagList *list;
+
+  if (siddec->tune->getInfo (info)) {
+    list = gst_tag_list_new ();
+
+    if (info.nameString) {
+      gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+          GST_TAG_TITLE, info.nameString, (void *) NULL);
+    }
+    if (info.authorString) {
+      gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+          GST_TAG_ARTIST, info.authorString, (void *) NULL);
+    }
+    if (info.copyrightString) {
+      gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+          GST_TAG_COPYRIGHT, info.copyrightString, (void *) NULL);
+    }
+    gst_element_found_tags_for_pad (GST_ELEMENT_CAST (siddec),
+        siddec->srcpad, list);
+  }
+}
+
+static gboolean
+siddec_negotiate (GstSidDec * siddec)
+{
+  GstCaps *allowed;
+  gboolean sign = TRUE;
+  gint width = 16, depth = 16;
+  GstStructure *structure;
+  int rate = 44100;
+  int channels = 1;
+  GstCaps *caps;
+
+  allowed = gst_pad_get_allowed_caps (siddec->srcpad);
+  if (!allowed)
+    goto nothing_allowed;
+
+  GST_DEBUG_OBJECT (siddec, "allowed caps: %" GST_PTR_FORMAT, allowed);
+
+  structure = gst_caps_get_structure (allowed, 0);
+
+  gst_structure_get_int (structure, "width", &width);
+  gst_structure_get_int (structure, "depth", &depth);
+
+  if (width && depth && width != depth)
+    goto wrong_width;
+
+  width = width | depth;
+  if (width) {
+    siddec->config->bitsPerSample = width;
+  }
+
+  gst_structure_get_boolean (structure, "signed", &sign);
+  gst_structure_get_int (structure, "rate", &rate);
+  siddec->config->frequency = rate;
+  gst_structure_get_int (structure, "channels", &channels);
+  siddec->config->channels = channels;
+
+  siddec->config->sampleFormat =
+      (sign ? SIDEMU_SIGNED_PCM : SIDEMU_UNSIGNED_PCM);
+
+  caps = gst_caps_new_simple ("audio/x-raw-int",
+      "endianness", G_TYPE_INT, G_BYTE_ORDER,
+      "signed", G_TYPE_BOOLEAN, sign,
+      "width", G_TYPE_INT, siddec->config->bitsPerSample,
+      "depth", G_TYPE_INT, siddec->config->bitsPerSample,
+      "rate", G_TYPE_INT, siddec->config->frequency,
+      "channels", G_TYPE_INT, siddec->config->channels, NULL);
+  gst_pad_set_caps (siddec->srcpad, caps);
+  gst_caps_unref (caps);
+
+  siddec->engine->setConfig (*siddec->config);
+
+  return TRUE;
+
+  /* ERRORS */
+nothing_allowed:
+  {
+    GST_DEBUG_OBJECT (siddec, "could not get allowed caps");
+    return FALSE;
+  }
+wrong_width:
+  {
+    GST_DEBUG_OBJECT (siddec, "width %d and depth %d are different",
+        width, depth);
+    return FALSE;
+  }
+}
+
+static void
+play_loop (GstPad * pad)
+{
+  GstFlowReturn ret;
+  GstSidDec *siddec;
+  GstBuffer *out;
+  gint64 value, offset, time;
+  GstFormat format;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  out = gst_buffer_new_and_alloc (siddec->blocksize);
+  gst_buffer_set_caps (out, GST_PAD_CAPS (pad));
+
+  sidEmuFillBuffer (*siddec->engine, *siddec->tune,
+      GST_BUFFER_DATA (out), GST_BUFFER_SIZE (out));
+
+  /* get offset in samples */
+  format = GST_FORMAT_DEFAULT;
+  gst_siddec_src_convert (siddec->srcpad,
+      GST_FORMAT_BYTES, siddec->total_bytes, &format, &offset);
+  GST_BUFFER_OFFSET (out) = offset;
+
+  /* get current timestamp */
+  format = GST_FORMAT_TIME;
+  gst_siddec_src_convert (siddec->srcpad,
+      GST_FORMAT_BYTES, siddec->total_bytes, &format, &time);
+  GST_BUFFER_TIMESTAMP (out) = time;
+
+  /* update position and get new timestamp to calculate duration */
+  siddec->total_bytes += siddec->blocksize;
+
+  /* get offset in samples */
+  format = GST_FORMAT_DEFAULT;
+  gst_siddec_src_convert (siddec->srcpad,
+      GST_FORMAT_BYTES, siddec->total_bytes, &format, &value);
+  GST_BUFFER_OFFSET_END (out) = value;
+
+  format = GST_FORMAT_TIME;
+  gst_siddec_src_convert (siddec->srcpad,
+      GST_FORMAT_BYTES, siddec->total_bytes, &format, &value);
+  GST_BUFFER_DURATION (out) = value - time;
+
+  if ((ret = gst_pad_push (siddec->srcpad, out)) != GST_FLOW_OK)
+    goto pause;
+
+done:
+  gst_object_unref (siddec);
+
+  return;
+
+  /* ERRORS */
+pause:
+  {
+    const gchar *reason = gst_flow_get_name (ret);
+
+    if (ret == GST_FLOW_UNEXPECTED) {
+      /* perform EOS logic, FIXME, segment seek? */
+      gst_pad_push_event (pad, gst_event_new_eos ());
+    } else  if (ret < GST_FLOW_UNEXPECTED || ret == GST_FLOW_NOT_LINKED) {
+      /* for fatal errors we post an error message */
+      GST_ELEMENT_ERROR (siddec, STREAM, FAILED,
+          (NULL), ("streaming task paused, reason %s", reason));
+      gst_pad_push_event (pad, gst_event_new_eos ());
+    }
+
+    GST_INFO_OBJECT (siddec, "pausing task, reason: %s", reason);
+    gst_pad_pause_task (pad);
+    goto done;
+  }
+}
+
+static gboolean
+start_play_tune (GstSidDec * siddec)
+{
+  gboolean res;
+
+  if (!siddec->tune->load (siddec->tune_buffer, siddec->tune_len))
+    goto could_not_load;
+
+  update_tags (siddec);
+
+  if (!siddec_negotiate (siddec))
+    goto could_not_negotiate;
+
+  if (!sidEmuInitializeSong (*siddec->engine, *siddec->tune,
+          siddec->tune_number))
+    goto could_not_init;
+
+  gst_pad_push_event (siddec->srcpad,
+      gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME, 0, -1, 0));
+
+  res = gst_pad_start_task (siddec->srcpad,
+      (GstTaskFunction) play_loop, siddec->srcpad);
+  return res;
+
+  /* ERRORS */
+could_not_load:
+  {
+    GST_ELEMENT_ERROR (siddec, LIBRARY, INIT,
+        ("Could not load tune"), ("Could not load tune"));
+    return FALSE;
+  }
+could_not_negotiate:
+  {
+    GST_ELEMENT_ERROR (siddec, CORE, NEGOTIATION,
+        ("Could not negotiate format"), ("Could not negotiate format"));
+    return FALSE;
+  }
+could_not_init:
+  {
+    GST_ELEMENT_ERROR (siddec, LIBRARY, INIT,
+        ("Could not initialize song"), ("Could not initialize song"));
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_siddec_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstSidDec *siddec;
+  gboolean res;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_EOS:
+      res = start_play_tune (siddec);
+      break;
+    case GST_EVENT_NEWSEGMENT:
+      res = FALSE;
+      break;
+    default:
+      res = FALSE;
+      break;
+  }
+  gst_event_unref (event);
+  gst_object_unref (siddec);
+
+  return res;
+}
+
+static GstFlowReturn
+gst_siddec_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstSidDec *siddec;
+  guint64 size;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  size = GST_BUFFER_SIZE (buffer);
+  if (siddec->tune_len + size > maxSidtuneFileLen)
+    goto overflow;
+
+  memcpy (siddec->tune_buffer + siddec->tune_len, GST_BUFFER_DATA (buffer),
+      size);
+  siddec->tune_len += size;
+
+  gst_buffer_unref (buffer);
+
+  gst_object_unref (siddec);
+
+  return GST_FLOW_OK;
+
+  /* ERRORS */
+overflow:
+  {
+    GST_ELEMENT_ERROR (siddec, STREAM, DECODE,
+        (NULL), ("Input data bigger than allowed buffer size"));
+    gst_object_unref (siddec);
+    return GST_FLOW_ERROR;
+  }
+}
+
+static gboolean
+gst_siddec_src_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
+    GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  guint scale = 1;
+  GstSidDec *siddec;
+  gint bytes_per_sample;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  bytes_per_sample =
+      (siddec->config->bitsPerSample >> 3) * siddec->config->channels;
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_DEFAULT:
+          if (bytes_per_sample == 0)
+            return FALSE;
+          *dest_value = src_value / bytes_per_sample;
+          break;
+        case GST_FORMAT_TIME:
+        {
+          gint byterate = bytes_per_sample * siddec->config->frequency;
+
+          if (byterate == 0)
+            return FALSE;
+          *dest_value =
+              gst_util_uint64_scale_int (src_value, GST_SECOND, byterate);
+          break;
+        }
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_DEFAULT:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          *dest_value = src_value * bytes_per_sample;
+          break;
+        case GST_FORMAT_TIME:
+          if (siddec->config->frequency == 0)
+            return FALSE;
+          *dest_value =
+              gst_util_uint64_scale_int (src_value, GST_SECOND,
+              siddec->config->frequency);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_BYTES:
+          scale = bytes_per_sample;
+          /* fallthrough */
+        case GST_FORMAT_DEFAULT:
+          *dest_value =
+              gst_util_uint64_scale_int (src_value,
+              scale * siddec->config->frequency, GST_SECOND);
+          break;
+        default:
+          res = FALSE;
+      }
+      break;
+    default:
+      res = FALSE;
+  }
+
+  return res;
+}
+
+static gboolean
+gst_siddec_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res = FALSE;
+  GstSidDec *siddec;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    default:
+      break;
+  }
+  gst_event_unref (event);
+
+  gst_object_unref (siddec);
+
+  return res;
+}
+
+static gboolean
+gst_siddec_src_query (GstPad * pad, GstQuery * query)
+{
+  gboolean res = TRUE;
+  GstSidDec *siddec;
+
+  siddec = GST_SIDDEC (gst_pad_get_parent (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+    {
+      GstFormat format;
+      gint64 current;
+
+      gst_query_parse_position (query, &format, NULL);
+
+      /* we only know about our bytes, convert to requested format */
+      res &= gst_siddec_src_convert (pad,
+          GST_FORMAT_BYTES, siddec->total_bytes, &format, &current);
+      if (res) {
+        gst_query_set_position (query, format, current);
+      }
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+  gst_object_unref (siddec);
+
+  return res;
+}
+
+static void
+gst_siddec_set_property (GObject * object, guint prop_id, const GValue * value,
+    GParamSpec * pspec)
+{
+  GstSidDec *siddec = GST_SIDDEC (object);
+
+  switch (prop_id) {
+    case PROP_TUNE:
+      siddec->tune_number = g_value_get_int (value);
+      break;
+    case PROP_CLOCK:
+      siddec->config->clockSpeed = g_value_get_enum (value);
+      break;
+    case PROP_MEMORY:
+      siddec->config->memoryMode = g_value_get_enum (value);
+      break;
+    case PROP_FILTER:
+      siddec->config->emulateFilter = g_value_get_boolean (value);
+      break;
+    case PROP_MEASURED_VOLUME:
+      siddec->config->measuredVolume = g_value_get_boolean (value);
+      break;
+    case PROP_MOS8580:
+      siddec->config->mos8580 = g_value_get_boolean (value);
+      break;
+    case PROP_BLOCKSIZE:
+      siddec->blocksize = g_value_get_ulong (value);
+      break;
+    case PROP_FORCE_SPEED:
+      siddec->config->forceSongSpeed = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      return;
+  }
+  siddec->engine->setConfig (*siddec->config);
+}
+
+static void
+gst_siddec_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstSidDec *siddec = GST_SIDDEC (object);
+
+  switch (prop_id) {
+    case PROP_TUNE:
+      g_value_set_int (value, siddec->tune_number);
+      break;
+    case PROP_CLOCK:
+      g_value_set_enum (value, siddec->config->clockSpeed);
+      break;
+    case PROP_MEMORY:
+      g_value_set_enum (value, siddec->config->memoryMode);
+      break;
+    case PROP_FILTER:
+      g_value_set_boolean (value, siddec->config->emulateFilter);
+      break;
+    case PROP_MEASURED_VOLUME:
+      g_value_set_boolean (value, siddec->config->measuredVolume);
+      break;
+    case PROP_MOS8580:
+      g_value_set_boolean (value, siddec->config->mos8580);
+      break;
+    case PROP_FORCE_SPEED:
+      g_value_set_boolean (value, siddec->config->forceSongSpeed);
+      break;
+    case PROP_BLOCKSIZE:
+      g_value_set_ulong (value, siddec->blocksize);
+      break;
+    case PROP_METADATA:
+      g_value_set_boxed (value, NULL);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "siddec", GST_RANK_PRIMARY,
+      GST_TYPE_SIDDEC);
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "siddec",
+    "Uses libsidplay to decode .sid files",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/sidplay/gstsiddec.h b/ext/sidplay/gstsiddec.h
new file mode 100644 (file)
index 0000000..55ec7d6
--- /dev/null
@@ -0,0 +1,72 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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_SIDDEC_H__
+#define __GST_SIDDEC_H__
+
+#include <stdlib.h>
+#include <sidplay/player.h>
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_SIDDEC \
+  (gst_siddec_get_type())
+#define GST_SIDDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SIDDEC,GstSidDec))
+#define GST_SIDDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SIDDEC,GstSidDecClass))
+#define GST_IS_SIDDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SIDDEC))
+#define GST_IS_SIDDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SIDDEC))
+
+typedef struct _GstSidDec GstSidDec;
+typedef struct _GstSidDecClass GstSidDecClass;
+
+struct _GstSidDec {
+  GstElement     element;
+
+  /* pads */
+  GstPad        *sinkpad, 
+                *srcpad;
+
+  guchar        *tune_buffer;
+  gint           tune_len;
+  gint           tune_number;
+  guint64        total_bytes;
+
+  emuEngine     *engine;
+  sidTune       *tune;
+  emuConfig     *config;
+
+  gulong         blocksize;
+};
+
+struct _GstSidDecClass {
+  GstElementClass parent_class;
+};
+
+GType gst_siddec_get_type (void);
+        
+G_END_DECLS
+
+#endif /* __GST_SIDDEC_H__ */
diff --git a/ext/twolame/Makefile.am b/ext/twolame/Makefile.am
new file mode 100644 (file)
index 0000000..1b32aae
--- /dev/null
@@ -0,0 +1,12 @@
+plugin_LTLIBRARIES = libgsttwolame.la
+
+libgsttwolame_la_SOURCES = gsttwolame.c
+libgsttwolame_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+       $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(TWOLAME_CFLAGS)
+libgsttwolame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-@GST_MAJORMINOR@ -lgstpbutils-@GST_MAJORMINOR@ \
+       $(GST_LIBS) $(TWOLAME_LIBS)
+libgsttwolame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttwolame_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gsttwolame.h
diff --git a/ext/twolame/Makefile.in b/ext/twolame/Makefile.in
new file mode 100644 (file)
index 0000000..fd10177
--- /dev/null
@@ -0,0 +1,726 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/twolame
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgsttwolame_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgsttwolame_la_OBJECTS = libgsttwolame_la-gsttwolame.lo
+libgsttwolame_la_OBJECTS = $(am_libgsttwolame_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgsttwolame_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgsttwolame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgsttwolame_la_CFLAGS) $(CFLAGS) \
+       $(libgsttwolame_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgsttwolame_la_SOURCES)
+DIST_SOURCES = $(libgsttwolame_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgsttwolame.la
+libgsttwolame_la_SOURCES = gsttwolame.c
+libgsttwolame_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+       $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(TWOLAME_CFLAGS)
+
+libgsttwolame_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+       -lgstaudio-@GST_MAJORMINOR@ -lgstpbutils-@GST_MAJORMINOR@ \
+       $(GST_LIBS) $(TWOLAME_LIBS)
+
+libgsttwolame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttwolame_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gsttwolame.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 ext/twolame/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/twolame/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
+libgsttwolame.la: $(libgsttwolame_la_OBJECTS) $(libgsttwolame_la_DEPENDENCIES) $(EXTRA_libgsttwolame_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgsttwolame_la_LINK) -rpath $(plugindir) $(libgsttwolame_la_OBJECTS) $(libgsttwolame_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttwolame_la-gsttwolame.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgsttwolame_la-gsttwolame.lo: gsttwolame.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttwolame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttwolame_la_CFLAGS) $(CFLAGS) -MT libgsttwolame_la-gsttwolame.lo -MD -MP -MF $(DEPDIR)/libgsttwolame_la-gsttwolame.Tpo -c -o libgsttwolame_la-gsttwolame.lo `test -f 'gsttwolame.c' || echo '$(srcdir)/'`gsttwolame.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgsttwolame_la-gsttwolame.Tpo $(DEPDIR)/libgsttwolame_la-gsttwolame.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gsttwolame.c' object='libgsttwolame_la-gsttwolame.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttwolame_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttwolame_la_CFLAGS) $(CFLAGS) -c -o libgsttwolame_la-gsttwolame.lo `test -f 'gsttwolame.c' || echo '$(srcdir)/'`gsttwolame.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/ext/twolame/gsttwolame.c b/ext/twolame/gsttwolame.c
new file mode 100644 (file)
index 0000000..a1b1579
--- /dev/null
@@ -0,0 +1,901 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2004> Wim Taymans <wim@fluendo.com>
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ * Copyright (C) <2008> Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ *
+ * 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.
+ */
+
+/*
+ * Based on the lame element.
+ */
+
+/**
+ * SECTION:element-twolame
+ * @see_also: mad, lame
+ *
+ * This element encodes raw integer audio into an MPEG-1 layer 2 (MP2) stream.
+ *
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch -v audiotestsrc wave=sine num-buffers=100 ! audioconvert ! twolame ! filesink location=sine.mp2
+ * ]| Encode a test sine signal to MP2.
+ * |[
+ * gst-launch -v alsasrc ! audioconvert ! twolame bitrate=192 ! filesink location=alsasrc.mp2
+ * ]| Record from a sound card using ALSA and encode to MP2
+ * |[
+ * gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! twolame bitrate=192 ! id3v2mux ! filesink location=music.mp2
+ * ]| Transcode from a .wav file to MP2 (the id3v2mux element is optional)
+ * |[
+ * gst-launch -v cdda://5 ! audioconvert ! twolame bitrate=192 ! filesink location=track5.mp2
+ * ]| Encode Audio CD track 5 to MP2
+ * </refsect2>
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "string.h"
+#include "gsttwolame.h"
+#include "gst/gst-i18n-plugin.h"
+
+GST_DEBUG_CATEGORY_STATIC (debug);
+#define GST_CAT_DEFAULT debug
+
+/* TwoLAME can do MPEG-1, MPEG-2 so it has 6 possible
+ * sample rates it supports */
+static GstStaticPadTemplate gst_two_lame_sink_template =
+    GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-float, "
+        "endianness = (int) BYTE_ORDER, "
+        "width = (int) 32, "
+        "rate = (int) { 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]; "
+        "audio/x-raw-int, "
+        "endianness = (int) BYTE_ORDER, "
+        "signed = (boolean) true, "
+        "width = (int) 16, "
+        "depth = (int) 16, "
+        "rate = (int) { 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static GstStaticPadTemplate gst_two_lame_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, "
+        "layer = (int) 2, "
+        "rate = (int) { 16000, 22050, 24000, 32000, 44100, 48000 }, "
+        "channels = (int) [ 1, 2 ]")
+    );
+
+static struct
+{
+  gint mode;
+  gint psymodel;
+  gint bitrate;
+  gint padding;
+  gboolean energy_level_extension;
+  gint emphasis;
+  gboolean error_protection;
+  gboolean copyright;
+  gboolean original;
+  gboolean vbr;
+  gfloat vbr_level;
+  gfloat ath_level;
+  gint vbr_max_bitrate;
+  gboolean quick_mode;
+  gint quick_mode_count;
+} gst_two_lame_default_settings;
+
+/********** Define useful types for non-programmatic interfaces **********/
+#define GST_TYPE_TWO_LAME_MODE (gst_two_lame_mode_get_type())
+static GType
+gst_two_lame_mode_get_type (void)
+{
+  static GType two_lame_mode_type = 0;
+  static GEnumValue two_lame_modes[] = {
+    {TWOLAME_AUTO_MODE, "Auto", "auto"},
+    {TWOLAME_STEREO, "Stereo", "stereo"},
+    {TWOLAME_JOINT_STEREO, "Joint Stereo", "joint"},
+    {TWOLAME_DUAL_CHANNEL, "Dual Channel", "dual"},
+    {TWOLAME_MONO, "Mono", "mono"},
+    {0, NULL, NULL}
+  };
+
+  if (!two_lame_mode_type) {
+    two_lame_mode_type =
+        g_enum_register_static ("GstTwoLameMode", two_lame_modes);
+  }
+  return two_lame_mode_type;
+}
+
+#define GST_TYPE_TWO_LAME_PADDING (gst_two_lame_padding_get_type())
+static GType
+gst_two_lame_padding_get_type (void)
+{
+  static GType two_lame_padding_type = 0;
+  static GEnumValue two_lame_padding[] = {
+    {TWOLAME_PAD_NO, "No Padding", "never"},
+    {TWOLAME_PAD_ALL, "Always Pad", "always"},
+    {0, NULL, NULL}
+  };
+
+  if (!two_lame_padding_type) {
+    two_lame_padding_type =
+        g_enum_register_static ("GstTwoLamePadding", two_lame_padding);
+  }
+  return two_lame_padding_type;
+}
+
+#define GST_TYPE_TWO_LAME_EMPHASIS (gst_two_lame_emphasis_get_type())
+static GType
+gst_two_lame_emphasis_get_type (void)
+{
+  static GType two_lame_emphasis_type = 0;
+  static GEnumValue two_lame_emphasis[] = {
+    {TWOLAME_EMPHASIS_N, "No emphasis", "none"},
+    {TWOLAME_EMPHASIS_5, "50/15 ms", "5"},
+    {TWOLAME_EMPHASIS_C, "CCIT J.17", "ccit"},
+    {0, NULL, NULL}
+  };
+
+  if (!two_lame_emphasis_type) {
+    two_lame_emphasis_type =
+        g_enum_register_static ("GstTwoLameEmphasis", two_lame_emphasis);
+  }
+
+  return two_lame_emphasis_type;
+}
+
+/********** Standard stuff for signals and arguments **********/
+
+enum
+{
+  ARG_0,
+  ARG_MODE,
+  ARG_PSYMODEL,
+  ARG_BITRATE,
+  ARG_PADDING,
+  ARG_ENERGY_LEVEL_EXTENSION,
+  ARG_EMPHASIS,
+  ARG_ERROR_PROTECTION,
+  ARG_COPYRIGHT,
+  ARG_ORIGINAL,
+  ARG_VBR,
+  ARG_VBR_LEVEL,
+  ARG_ATH_LEVEL,
+  ARG_VBR_MAX_BITRATE,
+  ARG_QUICK_MODE,
+  ARG_QUICK_MODE_COUNT
+};
+
+static gboolean gst_two_lame_start (GstAudioEncoder * enc);
+static gboolean gst_two_lame_stop (GstAudioEncoder * enc);
+static gboolean gst_two_lame_set_format (GstAudioEncoder * enc,
+    GstAudioInfo * info);
+static GstFlowReturn gst_two_lame_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * in_buf);
+static void gst_two_lame_flush (GstAudioEncoder * enc);
+
+static void gst_two_lame_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_two_lame_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_two_lame_setup (GstTwoLame * twolame);
+
+GST_BOILERPLATE (GstTwoLame, gst_two_lame, GstAudioEncoder,
+    GST_TYPE_AUDIO_ENCODER);
+
+static void
+gst_two_lame_release_memory (GstTwoLame * twolame)
+{
+  if (twolame->glopts) {
+    twolame_close (&twolame->glopts);
+    twolame->glopts = NULL;
+  }
+}
+
+static void
+gst_two_lame_finalize (GObject * obj)
+{
+  gst_two_lame_release_memory (GST_TWO_LAME (obj));
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_two_lame_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_two_lame_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_two_lame_sink_template);
+  gst_element_class_set_details_simple (element_class, "TwoLAME mp2 encoder",
+      "Codec/Encoder/Audio",
+      "High-quality free MP2 encoder",
+      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+}
+
+static void
+gst_two_lame_class_init (GstTwoLameClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstAudioEncoderClass *gstbase_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstbase_class = (GstAudioEncoderClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->set_property = gst_two_lame_set_property;
+  gobject_class->get_property = gst_two_lame_get_property;
+  gobject_class->finalize = gst_two_lame_finalize;
+
+  gstbase_class->start = GST_DEBUG_FUNCPTR (gst_two_lame_start);
+  gstbase_class->stop = GST_DEBUG_FUNCPTR (gst_two_lame_stop);
+  gstbase_class->set_format = GST_DEBUG_FUNCPTR (gst_two_lame_set_format);
+  gstbase_class->handle_frame = GST_DEBUG_FUNCPTR (gst_two_lame_handle_frame);
+  gstbase_class->flush = GST_DEBUG_FUNCPTR (gst_two_lame_flush);
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MODE,
+      g_param_spec_enum ("mode", "Mode", "Encoding mode",
+          GST_TYPE_TWO_LAME_MODE, gst_two_lame_default_settings.mode,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PSYMODEL,
+      g_param_spec_int ("psymodel", "Psychoacoustic Model",
+          "Psychoacoustic model used to encode the audio",
+          -1, 4, gst_two_lame_default_settings.psymodel,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BITRATE,
+      g_param_spec_int ("bitrate", "Bitrate (kb/s)",
+          "Bitrate in kbit/sec (8, 16, 24, 32, 40, 48, 56, 64, 80, 96, "
+          "112, 128, 144, 160, 192, 224, 256, 320, 384)",
+          8, 384, gst_two_lame_default_settings.bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PADDING,
+      g_param_spec_enum ("padding", "Padding", "Padding type",
+          GST_TYPE_TWO_LAME_PADDING, gst_two_lame_default_settings.padding,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass),
+      ARG_ENERGY_LEVEL_EXTENSION,
+      g_param_spec_boolean ("energy-level-extension", "Energy Level Extension",
+          "Write peak PCM level to each frame",
+          gst_two_lame_default_settings.energy_level_extension,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_EMPHASIS,
+      g_param_spec_enum ("emphasis", "Emphasis",
+          "Pre-emphasis to apply to the decoded audio",
+          GST_TYPE_TWO_LAME_EMPHASIS, gst_two_lame_default_settings.emphasis,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ERROR_PROTECTION,
+      g_param_spec_boolean ("error-protection", "Error protection",
+          "Adds checksum to every frame",
+          gst_two_lame_default_settings.error_protection,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_COPYRIGHT,
+      g_param_spec_boolean ("copyright", "Copyright", "Mark as copyright",
+          gst_two_lame_default_settings.copyright,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ORIGINAL,
+      g_param_spec_boolean ("original", "Original", "Mark as original",
+          gst_two_lame_default_settings.original,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR,
+      g_param_spec_boolean ("vbr", "VBR", "Enable variable bitrate mode",
+          gst_two_lame_default_settings.vbr,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_LEVEL,
+      g_param_spec_float ("vbr-level", "VBR Level", "VBR Level",
+          -10.0, 10.0, gst_two_lame_default_settings.vbr_level,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ATH_LEVEL,
+      g_param_spec_float ("ath-level", "ATH Level", "ATH Level in dB",
+          -G_MAXFLOAT, G_MAXFLOAT, gst_two_lame_default_settings.ath_level,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_VBR_MAX_BITRATE,
+      g_param_spec_int ("vbr-max-bitrate", "VBR max bitrate",
+          "Specify maximum VBR bitrate (0=off, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, "
+          "112, 128, 144, 160, 192, 224, 256, 320, 384)",
+          0, 384, gst_two_lame_default_settings.vbr_max_bitrate,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUICK_MODE,
+      g_param_spec_boolean ("quick-mode", "Quick mode",
+          "Calculate Psymodel every frames",
+          gst_two_lame_default_settings.quick_mode,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUICK_MODE_COUNT,
+      g_param_spec_int ("quick-mode-count", "Quick mode count",
+          "Calculate Psymodel every n frames",
+          0, G_MAXINT, gst_two_lame_default_settings.quick_mode_count,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static gboolean
+gst_two_lame_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstTwoLame *twolame;
+  gint out_samplerate;
+  gint version;
+  GstCaps *othercaps;
+
+  twolame = GST_TWO_LAME (enc);
+
+  /* parameters already parsed for us */
+  twolame->samplerate = GST_AUDIO_INFO_RATE (info);
+  twolame->num_channels = GST_AUDIO_INFO_CHANNELS (info);
+  twolame->float_input = !GST_AUDIO_INFO_IS_INTEGER (info);
+
+  /* but we might be asked to reconfigure, so reset */
+  gst_two_lame_release_memory (twolame);
+
+  GST_DEBUG_OBJECT (twolame, "setting up twolame");
+  if (!gst_two_lame_setup (twolame))
+    goto setup_failed;
+
+  out_samplerate = twolame_get_out_samplerate (twolame->glopts);
+  if (out_samplerate == 0)
+    goto zero_output_rate;
+
+  if (out_samplerate != twolame->samplerate) {
+    GST_WARNING_OBJECT (twolame,
+        "output samplerate %d is different from incoming samplerate %d",
+        out_samplerate, twolame->samplerate);
+  }
+
+  version = twolame_get_version (twolame->glopts);
+  if (version == TWOLAME_MPEG2)
+    version = 2;
+  else
+    version = 1;
+
+  othercaps =
+      gst_caps_new_simple ("audio/mpeg",
+      "mpegversion", G_TYPE_INT, 1,
+      "mpegaudioversion", G_TYPE_INT, version,
+      "layer", G_TYPE_INT, 2,
+      "channels", G_TYPE_INT,
+      twolame->mode == TWOLAME_MONO ? 1 : twolame->num_channels, "rate",
+      G_TYPE_INT, out_samplerate, NULL);
+
+  /* and use these caps */
+  gst_pad_set_caps (GST_AUDIO_ENCODER_SRC_PAD (twolame), othercaps);
+  gst_caps_unref (othercaps);
+
+  /* report needs to base class:
+   * hand one frame at a time, if we are pretty sure what a frame is */
+  if (out_samplerate == twolame->samplerate) {
+    gst_audio_encoder_set_frame_samples_min (enc, 1152);
+    gst_audio_encoder_set_frame_samples_max (enc, 1152);
+    gst_audio_encoder_set_frame_max (enc, 1);
+  }
+
+  return TRUE;
+
+zero_output_rate:
+  {
+    GST_ELEMENT_ERROR (twolame, LIBRARY, SETTINGS, (NULL),
+        ("TwoLAME decided on a zero sample rate"));
+    return FALSE;
+  }
+setup_failed:
+  {
+    GST_ELEMENT_ERROR (twolame, LIBRARY, SETTINGS,
+        (_("Failed to configure TwoLAME encoder. Check your encoding parameters.")), (NULL));
+    return FALSE;
+  }
+}
+
+static void
+gst_two_lame_init (GstTwoLame * twolame, GstTwoLameClass * klass)
+{
+  GST_DEBUG_OBJECT (twolame, "starting initialization");
+
+  twolame->mode = gst_two_lame_default_settings.mode;
+  twolame->psymodel = gst_two_lame_default_settings.psymodel;
+  twolame->bitrate = gst_two_lame_default_settings.bitrate;
+  twolame->padding = gst_two_lame_default_settings.padding;
+  twolame->energy_level_extension =
+      gst_two_lame_default_settings.energy_level_extension;
+  twolame->emphasis = gst_two_lame_default_settings.emphasis;
+  twolame->error_protection = gst_two_lame_default_settings.error_protection;
+  twolame->copyright = gst_two_lame_default_settings.copyright;
+  twolame->original = gst_two_lame_default_settings.original;
+  twolame->vbr = gst_two_lame_default_settings.vbr;
+  twolame->vbr_level = gst_two_lame_default_settings.vbr_level;
+  twolame->ath_level = gst_two_lame_default_settings.ath_level;
+  twolame->vbr_max_bitrate = gst_two_lame_default_settings.vbr_max_bitrate;
+  twolame->quick_mode = gst_two_lame_default_settings.quick_mode;
+  twolame->quick_mode_count = gst_two_lame_default_settings.quick_mode_count;
+
+  GST_DEBUG_OBJECT (twolame, "done initializing");
+}
+
+static gboolean
+gst_two_lame_start (GstAudioEncoder * enc)
+{
+  GstTwoLame *twolame = GST_TWO_LAME (enc);
+
+  GST_DEBUG_OBJECT (twolame, "start");
+  return TRUE;
+}
+
+static gboolean
+gst_two_lame_stop (GstAudioEncoder * enc)
+{
+  GstTwoLame *twolame = GST_TWO_LAME (enc);
+
+  GST_DEBUG_OBJECT (twolame, "stop");
+
+  gst_two_lame_release_memory (twolame);
+  return TRUE;
+}
+
+/* <php-emulation-mode>three underscores for ___rate is really really really
+ * private as opposed to one underscore<php-emulation-mode> */
+/* call this MACRO outside of the NULL state so that we have a higher chance
+ * of actually having a pipeline and bus to get the message through */
+
+#define CHECK_AND_FIXUP_BITRATE(obj,param,rate)                          \
+G_STMT_START {                                                            \
+  gint ___rate = rate;                                                    \
+  gint maxrate = 320;                                                    \
+  gint multiplier = 64;                                                          \
+  if (rate <= 64) {                                                      \
+    maxrate = 64; multiplier = 8;                                         \
+    if ((rate % 8) != 0) ___rate = GST_ROUND_UP_8 (rate);                \
+  } else if (rate <= 144) {                                              \
+    maxrate = 144; multiplier = 16;                                       \
+    if ((rate % 16) != 0) ___rate = GST_ROUND_UP_16 (rate);               \
+  } else if (rate <= 256) {                                              \
+    maxrate = 256; multiplier = 32;                                       \
+    if ((rate % 32) != 0) ___rate = GST_ROUND_UP_32 (rate);               \
+  } else if (rate <= 384) {                                              \
+    maxrate = 384; multiplier = 64;                                       \
+    if ((rate % 64) != 0) ___rate = GST_ROUND_UP_64 (rate);               \
+  }                                                                       \
+  if (___rate != rate) {                                                  \
+    GST_ELEMENT_WARNING (obj, LIBRARY, SETTINGS,                         \
+        (_("The requested bitrate %d kbit/s for property '%s' "           \
+           "is not allowed. "                                                    \
+           "The bitrate was changed to %d kbit/s."), rate,               \
+         param,  ___rate),                                               \
+        ("A bitrate below %d should be a multiple of %d.",               \
+            maxrate, multiplier));                                       \
+    rate = ___rate;                                                       \
+  }                                                                       \
+} G_STMT_END
+
+static void
+gst_two_lame_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstTwoLame *twolame = GST_TWO_LAME (object);
+
+  switch (prop_id) {
+    case ARG_MODE:
+      twolame->mode = g_value_get_enum (value);
+      break;
+    case ARG_PSYMODEL:
+      twolame->psymodel = g_value_get_int (value);
+      break;
+    case ARG_BITRATE:
+      twolame->bitrate = g_value_get_int (value);
+      break;
+    case ARG_PADDING:
+      twolame->padding = g_value_get_enum (value);
+      break;
+    case ARG_ENERGY_LEVEL_EXTENSION:
+      twolame->energy_level_extension = g_value_get_boolean (value);
+      break;
+    case ARG_EMPHASIS:
+      twolame->emphasis = g_value_get_enum (value);
+      break;
+    case ARG_ERROR_PROTECTION:
+      twolame->error_protection = g_value_get_boolean (value);
+      break;
+    case ARG_COPYRIGHT:
+      twolame->copyright = g_value_get_boolean (value);
+      break;
+    case ARG_ORIGINAL:
+      twolame->original = g_value_get_boolean (value);
+      break;
+    case ARG_VBR:
+      twolame->vbr = g_value_get_boolean (value);
+      break;
+    case ARG_VBR_LEVEL:
+      twolame->vbr_level = g_value_get_float (value);
+      break;
+    case ARG_ATH_LEVEL:
+      twolame->ath_level = g_value_get_float (value);
+      break;
+    case ARG_VBR_MAX_BITRATE:
+      twolame->vbr_max_bitrate = g_value_get_int (value);
+      break;
+    case ARG_QUICK_MODE:
+      twolame->quick_mode = g_value_get_boolean (value);
+      break;
+    case ARG_QUICK_MODE_COUNT:
+      twolame->quick_mode_count = g_value_get_int (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_two_lame_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstTwoLame *twolame = GST_TWO_LAME (object);
+
+  switch (prop_id) {
+    case ARG_MODE:
+      g_value_set_enum (value, twolame->mode);
+      break;
+    case ARG_PSYMODEL:
+      g_value_set_int (value, twolame->psymodel);
+      break;
+    case ARG_BITRATE:
+      g_value_set_int (value, twolame->bitrate);
+      break;
+    case ARG_PADDING:
+      g_value_set_enum (value, twolame->padding);
+      break;
+    case ARG_ENERGY_LEVEL_EXTENSION:
+      g_value_set_boolean (value, twolame->energy_level_extension);
+      break;
+    case ARG_EMPHASIS:
+      g_value_set_enum (value, twolame->emphasis);
+      break;
+    case ARG_ERROR_PROTECTION:
+      g_value_set_boolean (value, twolame->error_protection);
+      break;
+    case ARG_COPYRIGHT:
+      g_value_set_boolean (value, twolame->copyright);
+      break;
+    case ARG_ORIGINAL:
+      g_value_set_boolean (value, twolame->original);
+      break;
+    case ARG_VBR:
+      g_value_set_boolean (value, twolame->vbr);
+      break;
+    case ARG_VBR_LEVEL:
+      g_value_set_float (value, twolame->vbr_level);
+      break;
+    case ARG_ATH_LEVEL:
+      g_value_set_float (value, twolame->ath_level);
+      break;
+    case ARG_VBR_MAX_BITRATE:
+      g_value_set_int (value, twolame->vbr_max_bitrate);
+      break;
+    case ARG_QUICK_MODE:
+      g_value_set_boolean (value, twolame->quick_mode);
+      break;
+    case ARG_QUICK_MODE_COUNT:
+      g_value_set_int (value, twolame->quick_mode_count);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstFlowReturn
+gst_two_lame_flush_full (GstTwoLame * lame, gboolean push)
+{
+  GstBuffer *buf;
+  gint size;
+  GstFlowReturn result = GST_FLOW_OK;
+
+  if (!lame->glopts)
+    return GST_FLOW_OK;
+
+  buf = gst_buffer_new_and_alloc (16384);
+  size = twolame_encode_flush (lame->glopts, GST_BUFFER_DATA (buf), 16384);
+
+  if (size > 0 && push) {
+    GST_BUFFER_SIZE (buf) = size;
+    GST_DEBUG_OBJECT (lame, "pushing final packet of %u bytes", size);
+    result = gst_audio_encoder_finish_frame (GST_AUDIO_ENCODER (lame), buf, -1);
+  } else {
+    GST_DEBUG_OBJECT (lame, "no final packet (size=%d, push=%d)", size, push);
+    gst_buffer_unref (buf);
+    result = GST_FLOW_OK;
+  }
+  return result;
+}
+
+static void
+gst_two_lame_flush (GstAudioEncoder * enc)
+{
+  gst_two_lame_flush_full (GST_TWO_LAME (enc), FALSE);
+}
+
+static GstFlowReturn
+gst_two_lame_handle_frame (GstAudioEncoder * enc, GstBuffer * buf)
+{
+  GstTwoLame *twolame;
+  guchar *mp3_data;
+  gint mp3_buffer_size, mp3_size;
+  GstBuffer *mp3_buf;
+  GstFlowReturn result;
+  gint num_samples;
+  guint8 *data;
+  guint size;
+
+  twolame = GST_TWO_LAME (enc);
+
+  /* squeeze remaining and push */
+  if (G_UNLIKELY (buf == NULL))
+    return gst_two_lame_flush_full (twolame, TRUE);
+
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+
+  if (twolame->float_input)
+    num_samples = size / 4;
+  else
+    num_samples = size / 2;
+
+  /* allocate space for output */
+  mp3_buffer_size = 1.25 * num_samples + 16384;
+  mp3_buf = gst_buffer_new_and_alloc (mp3_buffer_size);
+  mp3_data = GST_BUFFER_DATA (mp3_buf);
+
+  if (twolame->num_channels == 1) {
+    if (twolame->float_input)
+      mp3_size = twolame_encode_buffer_float32 (twolame->glopts,
+          (float *) data,
+          (float *) data, num_samples, mp3_data, mp3_buffer_size);
+    else
+      mp3_size = twolame_encode_buffer (twolame->glopts,
+          (short int *) data,
+          (short int *) data, num_samples, mp3_data, mp3_buffer_size);
+  } else {
+    if (twolame->float_input)
+      mp3_size = twolame_encode_buffer_float32_interleaved (twolame->glopts,
+          (float *) data,
+          num_samples / twolame->num_channels, mp3_data, mp3_buffer_size);
+    else
+      mp3_size = twolame_encode_buffer_interleaved (twolame->glopts,
+          (short int *) data,
+          num_samples / twolame->num_channels, mp3_data, mp3_buffer_size);
+  }
+
+  GST_LOG_OBJECT (twolame, "encoded %d bytes of audio to %d bytes of mp3",
+      size, mp3_size);
+
+  if (mp3_size < 0) {
+  }
+
+  if (mp3_size > 0) {
+    GST_BUFFER_SIZE (mp3_buf) = mp3_size;
+    result = gst_audio_encoder_finish_frame (enc, mp3_buf, -1);
+  } else {
+    if (mp3_size < 0) {
+      /* eat error ? */
+      g_warning ("error %d", mp3_size);
+    }
+    gst_buffer_unref (mp3_buf);
+    result = GST_FLOW_OK;
+  }
+
+  return result;
+}
+
+/* set up the encoder state */
+static gboolean
+gst_two_lame_setup (GstTwoLame * twolame)
+{
+
+#define CHECK_ERROR(command) G_STMT_START {\
+  if ((command) < 0) { \
+    GST_ERROR_OBJECT (twolame, "setup failed: " G_STRINGIFY (command)); \
+    return FALSE; \
+  } \
+}G_STMT_END
+
+  int retval;
+  GstCaps *allowed_caps;
+
+  GST_DEBUG_OBJECT (twolame, "starting setup");
+
+  /* check if we're already setup; if we are, we might want to check
+   * if this initialization is compatible with the previous one */
+  /* FIXME: do this */
+  if (twolame->setup) {
+    GST_WARNING_OBJECT (twolame, "already setup");
+    twolame->setup = FALSE;
+  }
+
+  twolame->glopts = twolame_init ();
+
+  if (twolame->glopts == NULL)
+    return FALSE;
+
+  /* copy the parameters over */
+  twolame_set_in_samplerate (twolame->glopts, twolame->samplerate);
+
+  /* let twolame choose default samplerate unless outgoing sample rate is fixed */
+  allowed_caps = gst_pad_get_allowed_caps (GST_AUDIO_ENCODER_SRC_PAD (twolame));
+
+  if (allowed_caps != NULL) {
+    GstStructure *structure;
+    gint samplerate;
+
+    structure = gst_caps_get_structure (allowed_caps, 0);
+
+    if (gst_structure_get_int (structure, "rate", &samplerate)) {
+      GST_DEBUG_OBJECT (twolame,
+          "Setting sample rate to %d as fixed in src caps", samplerate);
+      twolame_set_out_samplerate (twolame->glopts, samplerate);
+    } else {
+      GST_DEBUG_OBJECT (twolame, "Letting twolame choose sample rate");
+      twolame_set_out_samplerate (twolame->glopts, 0);
+    }
+    gst_caps_unref (allowed_caps);
+    allowed_caps = NULL;
+  } else {
+    GST_DEBUG_OBJECT (twolame,
+        "No peer yet, letting twolame choose sample rate");
+    twolame_set_out_samplerate (twolame->glopts, 0);
+  }
+
+  /* force mono encoding if we only have one channel */
+  if (twolame->num_channels == 1)
+    twolame->mode = 3;
+
+  /* Fix bitrates and MPEG version */
+
+  CHECK_ERROR (twolame_set_num_channels (twolame->glopts,
+          twolame->num_channels));
+
+  CHECK_ERROR (twolame_set_mode (twolame->glopts, twolame->mode));
+  CHECK_ERROR (twolame_set_psymodel (twolame->glopts, twolame->psymodel));
+  CHECK_AND_FIXUP_BITRATE (twolame, "bitrate", twolame->bitrate);
+  CHECK_ERROR (twolame_set_bitrate (twolame->glopts, twolame->bitrate));
+  CHECK_ERROR (twolame_set_padding (twolame->glopts, twolame->padding));
+  CHECK_ERROR (twolame_set_energy_levels (twolame->glopts,
+          twolame->energy_level_extension));
+  CHECK_ERROR (twolame_set_emphasis (twolame->glopts, twolame->emphasis));
+  CHECK_ERROR (twolame_set_error_protection (twolame->glopts,
+          twolame->error_protection));
+  CHECK_ERROR (twolame_set_copyright (twolame->glopts, twolame->copyright));
+  CHECK_ERROR (twolame_set_original (twolame->glopts, twolame->original));
+  CHECK_ERROR (twolame_set_VBR (twolame->glopts, twolame->vbr));
+  CHECK_ERROR (twolame_set_VBR_level (twolame->glopts, twolame->vbr_level));
+  CHECK_ERROR (twolame_set_ATH_level (twolame->glopts, twolame->ath_level));
+  CHECK_AND_FIXUP_BITRATE (twolame, "vbr-max-bitrate",
+      twolame->vbr_max_bitrate);
+  CHECK_ERROR (twolame_set_VBR_max_bitrate_kbps (twolame->glopts,
+          twolame->vbr_max_bitrate));
+  CHECK_ERROR (twolame_set_quick_mode (twolame->glopts, twolame->quick_mode));
+  CHECK_ERROR (twolame_set_quick_count (twolame->glopts,
+          twolame->quick_mode_count));
+
+  /* initialize the twolame encoder */
+  if ((retval = twolame_init_params (twolame->glopts)) >= 0) {
+    twolame->setup = TRUE;
+    /* FIXME: it would be nice to print out the mode here */
+    GST_INFO ("twolame encoder setup (%d kbit/s, %d Hz, %d channels)",
+        twolame->bitrate, twolame->samplerate, twolame->num_channels);
+  } else {
+    GST_ERROR_OBJECT (twolame, "twolame_init_params returned %d", retval);
+  }
+
+  GST_DEBUG_OBJECT (twolame, "done with setup");
+
+  return twolame->setup;
+#undef CHECK_ERROR
+}
+
+static gboolean
+gst_two_lame_get_default_settings (void)
+{
+  twolame_options *glopts = NULL;
+
+  glopts = twolame_init ();
+  if (glopts == NULL) {
+    GST_ERROR ("Couldn't initialize TwoLAME");
+    return FALSE;
+  }
+
+  twolame_set_num_channels (glopts, 2);
+  twolame_set_in_samplerate (glopts, 44100);
+
+  if (twolame_init_params (glopts) != 0) {
+    GST_ERROR ("Couldn't set default parameters");
+    return FALSE;
+  }
+
+  gst_two_lame_default_settings.mode = TWOLAME_JOINT_STEREO;    /* twolame_get_mode (glopts); */
+  gst_two_lame_default_settings.psymodel = twolame_get_psymodel (glopts);
+  gst_two_lame_default_settings.bitrate = twolame_get_bitrate (glopts);
+  gst_two_lame_default_settings.padding = twolame_get_padding (glopts);
+  gst_two_lame_default_settings.energy_level_extension =
+      twolame_get_energy_levels (glopts);
+  gst_two_lame_default_settings.emphasis = twolame_get_emphasis (glopts);
+  gst_two_lame_default_settings.error_protection =
+      twolame_get_error_protection (glopts);
+  gst_two_lame_default_settings.copyright = twolame_get_copyright (glopts);
+  gst_two_lame_default_settings.original = twolame_get_original (glopts);
+  gst_two_lame_default_settings.vbr = twolame_get_VBR (glopts);
+  gst_two_lame_default_settings.vbr_level = twolame_get_VBR_level (glopts);
+  gst_two_lame_default_settings.ath_level = twolame_get_ATH_level (glopts);
+  gst_two_lame_default_settings.vbr_max_bitrate =
+      twolame_get_VBR_max_bitrate_kbps (glopts);
+  gst_two_lame_default_settings.quick_mode = twolame_get_quick_mode (glopts);
+  gst_two_lame_default_settings.quick_mode_count =
+      twolame_get_quick_count (glopts);
+
+  twolame_close (&glopts);
+
+  return TRUE;
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (debug, "twolame", 0, "twolame mp2 encoder");
+
+  if (!gst_two_lame_get_default_settings ())
+    return FALSE;
+
+#ifdef ENABLE_NLS
+  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
+      LOCALEDIR);
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
+
+  if (!gst_element_register (plugin, "twolame", GST_RANK_PRIMARY,
+          GST_TYPE_TWO_LAME))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "twolame",
+    "Encode MP2s with TwoLAME",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/ext/twolame/gsttwolame.h b/ext/twolame/gsttwolame.h
new file mode 100644 (file)
index 0000000..deb3cf4
--- /dev/null
@@ -0,0 +1,88 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2008> Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ *
+ * 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_TWO_LAME_H__
+#define __GST_TWO_LAME_H__
+
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudioencoder.h>
+
+G_BEGIN_DECLS
+
+#include <twolame.h>
+
+#define GST_TYPE_TWO_LAME \
+  (gst_two_lame_get_type())
+#define GST_TWO_LAME(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TWO_LAME,GstTwoLame))
+#define GST_TWO_LAME_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TWO_LAME,GstTwoLameClass))
+#define GST_IS_TWO_LAME(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TWO_LAME))
+#define GST_IS_TWO_LAME_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TWO_LAME))
+
+typedef struct _GstTwoLame GstTwoLame;
+typedef struct _GstTwoLameClass GstTwoLameClass;
+
+/**
+ * GstTwoLame:
+ *
+ * Opaque data structure.
+ */
+struct _GstTwoLame {
+  GstAudioEncoder element;
+
+  gint samplerate;
+  gint num_channels;
+  gboolean float_input;
+  gboolean setup;
+
+  gint mode;
+  gint psymodel;
+  gint bitrate;
+  gint padding;
+  gboolean energy_level_extension;
+  gint emphasis;
+  gboolean error_protection;
+  gboolean copyright;
+  gboolean original;
+  gboolean vbr;
+  gfloat vbr_level;
+  gfloat ath_level;
+  gint vbr_max_bitrate;
+  gboolean quick_mode;
+  gint quick_mode_count;
+
+  twolame_options *glopts;
+};
+
+struct _GstTwoLameClass {
+  GstAudioEncoderClass parent_class;
+};
+
+GType gst_two_lame_get_type(void);
+
+G_END_DECLS
+
+
+#endif /* __GST_TWO_LAME_H__ */
diff --git a/ext/x264/GstX264Enc.prs b/ext/x264/GstX264Enc.prs
new file mode 100644 (file)
index 0000000..84c76a9
--- /dev/null
@@ -0,0 +1,44 @@
+[_presets_]
+version=0.10
+element-name=GstX264Enc
+
+[Profile Baseline]
+_meta/comment=Baseline Profile
+bframes=0
+cabac=false
+dct8x8=false
+
+[Profile Main]
+_meta/comment=Main Profile
+cabac=true
+dct8x8=false
+
+[Profile High]
+_meta/comment=High Profile
+cabac=true
+dct8x8=true
+
+[Quality Low]
+_meta/comment=Low quality
+pass=qual
+quantizer=27
+subme=4
+threads=0
+
+[Quality Normal]
+_meta/comment=Normal quality
+pass=qual
+quantizer=21
+me=umh
+subme=6
+ref=3
+threads=0
+
+[Quality High]
+_meta/comment=High quality
+pass=qual
+quantizer=18
+me=umh
+subme=6
+ref=3
+threads=0
diff --git a/ext/x264/Makefile.am b/ext/x264/Makefile.am
new file mode 100644 (file)
index 0000000..92691d1
--- /dev/null
@@ -0,0 +1,37 @@
+plugin_LTLIBRARIES = libgstx264.la
+
+libgstx264_la_SOURCES = gstx264enc.c
+libgstx264_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(X264_CFLAGS)
+libgstx264_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) \
+       -lgstvideo-$(GST_MAJORMINOR) \
+       -lgstpbutils-$(GST_MAJORMINOR) \
+       $(GST_LIBS) \
+       $(X264_LIBS)
+libgstx264_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstx264_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstx264enc.h
+
+presetdir = $(datadir)/gstreamer-$(GST_MAJORMINOR)/presets
+preset_DATA = GstX264Enc.prs
+
+EXTRA_DIST = $(preset_DATA)
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstx264 -:SHARED libgstx264 \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstx264_la_SOURCES) \
+        -:CPPFLAGS $(CPPFLAGS) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstx264_la_CFLAGS) -I'$$(GSTREAMER_AGGREGATE_TOP)/x264' \
+        -:LDFLAGS $(libgstx264_la_LDFLAGS) \
+                  $(libgstx264_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/ext/x264/Makefile.in b/ext/x264/Makefile.in
new file mode 100644 (file)
index 0000000..e4a6c86
--- /dev/null
@@ -0,0 +1,770 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = ext/x264
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(presetdir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstx264_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstx264_la_OBJECTS = libgstx264_la-gstx264enc.lo
+libgstx264_la_OBJECTS = $(am_libgstx264_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstx264_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstx264_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstx264_la_CFLAGS) $(CFLAGS) \
+       $(libgstx264_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstx264_la_SOURCES)
+DIST_SOURCES = $(libgstx264_la_SOURCES)
+DATA = $(preset_DATA)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstx264.la
+libgstx264_la_SOURCES = gstx264enc.c
+libgstx264_la_CFLAGS = \
+       $(GST_PLUGINS_BASE_CFLAGS) \
+       $(GST_CFLAGS) \
+       $(X264_CFLAGS)
+
+libgstx264_la_LIBADD = \
+       $(GST_PLUGINS_BASE_LIBS) \
+       -lgstvideo-$(GST_MAJORMINOR) \
+       -lgstpbutils-$(GST_MAJORMINOR) \
+       $(GST_LIBS) \
+       $(X264_LIBS)
+
+libgstx264_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstx264_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstx264enc.h
+presetdir = $(datadir)/gstreamer-$(GST_MAJORMINOR)/presets
+preset_DATA = GstX264Enc.prs
+EXTRA_DIST = $(preset_DATA)
+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 ext/x264/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu ext/x264/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
+libgstx264.la: $(libgstx264_la_OBJECTS) $(libgstx264_la_DEPENDENCIES) $(EXTRA_libgstx264_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstx264_la_LINK) -rpath $(plugindir) $(libgstx264_la_OBJECTS) $(libgstx264_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstx264_la-gstx264enc.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstx264_la-gstx264enc.lo: gstx264enc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstx264_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstx264_la_CFLAGS) $(CFLAGS) -MT libgstx264_la-gstx264enc.lo -MD -MP -MF $(DEPDIR)/libgstx264_la-gstx264enc.Tpo -c -o libgstx264_la-gstx264enc.lo `test -f 'gstx264enc.c' || echo '$(srcdir)/'`gstx264enc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstx264_la-gstx264enc.Tpo $(DEPDIR)/libgstx264_la-gstx264enc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstx264enc.c' object='libgstx264_la-gstx264enc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstx264_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstx264_la_CFLAGS) $(CFLAGS) -c -o libgstx264_la-gstx264enc.lo `test -f 'gstx264enc.c' || echo '$(srcdir)/'`gstx264enc.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-presetDATA: $(preset_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(presetdir)" || $(MKDIR_P) "$(DESTDIR)$(presetdir)"
+       @list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(presetdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(presetdir)" || exit $$?; \
+       done
+
+uninstall-presetDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(preset_DATA)'; test -n "$(presetdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(presetdir)'; $(am__uninstall_files_from_dir)
+
+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) $(DATA) $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(plugindir)" "$(DESTDIR)$(presetdir)"; 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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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-presetDATA
+
+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 uninstall-presetDATA
+
+.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-presetDATA 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 \
+       uninstall-presetDATA
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstx264 -:SHARED libgstx264 \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstx264_la_SOURCES) \
+        -:CPPFLAGS $(CPPFLAGS) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstx264_la_CFLAGS) -I'$$(GSTREAMER_AGGREGATE_TOP)/x264' \
+        -:LDFLAGS $(libgstx264_la_LDFLAGS) \
+                  $(libgstx264_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
new file mode 100644 (file)
index 0000000..ea3cf0b
--- /dev/null
@@ -0,0 +1,2449 @@
+/* GStreamer H264 encoder plugin
+ * Copyright (C) 2005 Michal Benes <michal.benes@itonis.tv>
+ * Copyright (C) 2005 Josef Zlomek <josef.zlomek@itonis.tv>
+ * Copyright (C) 2008 Mark Nauwelaerts <mnauw@users.sf.net>
+ *
+ * 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-x264enc
+ * @see_also: faac
+ *
+ * This element encodes raw video into H264 compressed data,
+ * also otherwise known as MPEG-4 AVC (Advanced Video Codec).
+ *
+ * The #GstX264Enc:pass property controls the type of encoding.  In case of Constant
+ * Bitrate Encoding (actually ABR), the #GstX264Enc:bitrate will determine the quality
+ * of the encoding.  This will similarly be the case if this target bitrate
+ * is to obtained in multiple (2 or 3) pass encoding.
+ * Alternatively, one may choose to perform Constant Quantizer or Quality encoding,
+ * in which case the #GstX264Enc:quantizer property controls much of the outcome, in that case #GstX264Enc:bitrate is the maximum bitrate.
+ *
+ * The H264 profile that is eventually used depends on a few settings.
+ * If #GstX264Enc:dct8x8 is enabled, then High profile is used.
+ * Otherwise, if #GstX264Enc:cabac entropy coding is enabled or #GstX264Enc:bframes
+ * are allowed, then Main Profile is in effect, and otherwise Baseline profile
+ * applies.  The main profile is imposed by default,
+ * which is fine for most software players and settings,
+ * but in some cases (e.g. hardware platforms) a more restricted profile/level
+ * may be necessary. The recommended way to set a profile is to set it in the
+ * downstream caps.
+ *
+ * If a preset/tuning are specified then these will define the default values and
+ * the property defaults will be ignored. After this the option-string property is
+ * applied, followed by the user-set properties, fast first pass restrictions and
+ * finally the profile restrictions.
+ *
+ * <note>Some settings, including the default settings, may lead to quite
+ * some latency (i.e. frame buffering) in the encoder. This may cause problems
+ * with pipeline stalling in non-trivial pipelines, because the encoder latency
+ * is often considerably higher than the default size of a simple queue
+ * element. Such problems are caused by one of the queues in the other
+ * non-x264enc streams/branches filling up and blocking upstream. They can
+ * be fixed by relaxing the default time/size/buffer limits on the queue
+ * elements in the non-x264 branches, or using a (single) multiqueue element
+ * for all branches. Also see the last example below.
+ * </note>
+ *
+ * <refsect2>
+ * <title>Example pipeline</title>
+ * |[
+ * gst-launch -v videotestsrc num-buffers=1000 ! x264enc qp-min=18 ! \
+ *   avimux ! filesink location=videotestsrc.avi
+ * ]| This example pipeline will encode a test video source to H264 muxed in an
+ * AVI container, while ensuring a sane minimum quantization factor to avoid
+ * some (excessive) waste.
+ * |[
+ * gst-launch -v videotestsrc num-buffers=1000 ! x264enc pass=quant ! \
+ *   matroskamux ! filesink location=videotestsrc.avi
+ * ]| This example pipeline will encode a test video source to H264 using fixed
+ * quantization, and muxes it in a Matroska container.
+ * |[
+ * gst-launch -v videotestsrc num-buffers=1000 ! x264enc pass=5 quantizer=25 speed-preset=6 ! video/x-h264, profile=baseline ! \
+ *   qtmux ! filesink location=videotestsrc.mov
+ * ]| This example pipeline will encode a test video source to H264 using
+ * constant quality at around Q25 using the 'medium' speed/quality preset and
+ * restricting the options used so that the output is H.264 Baseline Profile
+ * compliant and finally multiplexing the output in Quicktime mov format.
+ * |[
+ * gst-launch -v videotestsrc num-buffers=1000 ! tee name=t ! queue ! xvimagesink \
+ *   t. ! queue ! x264enc rc-lookahead=5 ! fakesink
+ * ]| This example pipeline will encode a test video source to H264 while
+ * displaying the input material at the same time.  As mentioned above,
+ * specific settings are needed in this case to avoid pipeline stalling.
+ * Depending on goals and context, other approaches are possible, e.g.
+ * tune=zerolatency might be configured, or queue sizes increased.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "gstx264enc.h"
+
+#include <gst/pbutils/pbutils.h>
+
+#if X264_BUILD >= 71
+#define X264_DELAYED_FRAMES_API
+#endif
+
+#if X264_BUILD >= 76
+#define X264_ENC_NALS 1
+#endif
+
+#if X264_BUILD >= 69
+#define X264_MB_RC
+#endif
+
+#if X264_BUILD >= 78
+/* b-pyramid was available before but was changed from boolean here */
+#define X264_B_PYRAMID
+#endif
+
+#if X264_BUILD >= 80
+#define X264_ENH_THREADING
+#endif
+
+#if X264_BUILD >= 82
+#define X264_INTRA_REFRESH
+#endif
+
+#if X264_BUILD >= 86
+#define X264_PRESETS
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+
+GST_DEBUG_CATEGORY_STATIC (x264_enc_debug);
+#define GST_CAT_DEFAULT x264_enc_debug
+
+enum
+{
+  ARG_0,
+  ARG_THREADS,
+  ARG_SLICED_THREADS,
+  ARG_SYNC_LOOKAHEAD,
+  ARG_PASS,
+  ARG_QUANTIZER,
+  ARG_STATS_FILE,
+  ARG_MULTIPASS_CACHE_FILE,
+  ARG_BYTE_STREAM,
+  ARG_BITRATE,
+  ARG_INTRA_REFRESH,
+  ARG_VBV_BUF_CAPACITY,
+  ARG_ME,
+  ARG_SUBME,
+  ARG_ANALYSE,
+  ARG_DCT8x8,
+  ARG_REF,
+  ARG_BFRAMES,
+  ARG_B_ADAPT,
+  ARG_B_PYRAMID,
+  ARG_WEIGHTB,
+  ARG_SPS_ID,
+  ARG_AU_NALU,
+  ARG_TRELLIS,
+  ARG_KEYINT_MAX,
+  ARG_CABAC,
+  ARG_QP_MIN,
+  ARG_QP_MAX,
+  ARG_QP_STEP,
+  ARG_IP_FACTOR,
+  ARG_PB_FACTOR,
+  ARG_RC_MB_TREE,
+  ARG_RC_LOOKAHEAD,
+  ARG_NR,
+  ARG_INTERLACED,
+  ARG_OPTION_STRING,
+  ARG_PROFILE,
+  ARG_SPEED_PRESET,
+  ARG_PSY_TUNE,
+  ARG_TUNE,
+};
+
+#define ARG_THREADS_DEFAULT            0        /* 0 means 'auto' which is 1.5x number of CPU cores */
+#define ARG_PASS_DEFAULT               0
+#define ARG_QUANTIZER_DEFAULT          21
+#define ARG_MULTIPASS_CACHE_FILE_DEFAULT "x264.log"
+#define ARG_STATS_FILE_DEFAULT         ARG_MULTIPASS_CACHE_FILE_DEFAULT
+#define ARG_BYTE_STREAM_DEFAULT        FALSE
+#define ARG_BITRATE_DEFAULT            (2 * 1024)
+#define ARG_VBV_BUF_CAPACITY_DEFAULT   600
+#define ARG_ME_DEFAULT                 X264_ME_HEX
+#define ARG_SUBME_DEFAULT              1
+#define ARG_ANALYSE_DEFAULT            0
+#define ARG_DCT8x8_DEFAULT             FALSE
+#define ARG_REF_DEFAULT                1
+#define ARG_BFRAMES_DEFAULT            0
+#define ARG_B_ADAPT_DEFAULT            TRUE
+#define ARG_B_PYRAMID_DEFAULT          FALSE
+#define ARG_WEIGHTB_DEFAULT            FALSE
+#define ARG_SPS_ID_DEFAULT             0
+#define ARG_AU_NALU_DEFAULT            TRUE
+#define ARG_TRELLIS_DEFAULT            TRUE
+#define ARG_KEYINT_MAX_DEFAULT         0
+#define ARG_CABAC_DEFAULT              TRUE
+#define ARG_QP_MIN_DEFAULT             10
+#define ARG_QP_MAX_DEFAULT             51
+#define ARG_QP_STEP_DEFAULT            4
+#define ARG_IP_FACTOR_DEFAULT          1.4
+#define ARG_PB_FACTOR_DEFAULT          1.3
+#define ARG_NR_DEFAULT                 0
+#define ARG_INTERLACED_DEFAULT         FALSE
+#define ARG_SLICED_THREADS_DEFAULT     FALSE
+#define ARG_SYNC_LOOKAHEAD_DEFAULT     -1
+#define ARG_RC_MB_TREE_DEFAULT         TRUE
+#define ARG_RC_LOOKAHEAD_DEFAULT       40
+#define ARG_INTRA_REFRESH_DEFAULT      FALSE
+#define ARG_PROFILE_DEFAULT            2        /* 'Main Profile' - matches profile of property defaults */
+#define ARG_OPTION_STRING_DEFAULT      ""
+static GString *x264enc_defaults;
+#define ARG_SPEED_PRESET_DEFAULT       6        /* 'medium' preset - matches x264 CLI default */
+#define ARG_PSY_TUNE_DEFAULT           0        /* no psy tuning */
+#define ARG_TUNE_DEFAULT               0        /* no tuning */
+
+enum
+{
+  GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY,
+  GST_X264_ENC_STREAM_FORMAT_AVC,
+  GST_X264_ENC_STREAM_FORMAT_BYTE_STREAM
+};
+
+enum
+{
+  GST_X264_ENC_PASS_CBR = 0,
+  GST_X264_ENC_PASS_QUANT = 0x04,
+  GST_X264_ENC_PASS_QUAL,
+  GST_X264_ENC_PASS_PASS1 = 0x11,
+  GST_X264_ENC_PASS_PASS2,
+  GST_X264_ENC_PASS_PASS3
+};
+
+#define GST_X264_ENC_PASS_TYPE (gst_x264_enc_pass_get_type())
+static GType
+gst_x264_enc_pass_get_type (void)
+{
+  static GType pass_type = 0;
+
+  static const GEnumValue pass_types[] = {
+    {GST_X264_ENC_PASS_CBR, "Constant Bitrate Encoding", "cbr"},
+    {GST_X264_ENC_PASS_QUANT, "Constant Quantizer (debugging only)", "quant"},
+    {GST_X264_ENC_PASS_QUAL, "Constant Quality", "qual"},
+    {GST_X264_ENC_PASS_PASS1, "VBR Encoding - Pass 1", "pass1"},
+    {GST_X264_ENC_PASS_PASS2, "VBR Encoding - Pass 2", "pass2"},
+    {GST_X264_ENC_PASS_PASS3, "VBR Encoding - Pass 3", "pass3"},
+    {0, NULL, NULL}
+  };
+
+  if (!pass_type) {
+    pass_type = g_enum_register_static ("GstX264EncPass", pass_types);
+  }
+  return pass_type;
+}
+
+#define GST_X264_ENC_ME_TYPE (gst_x264_enc_me_get_type())
+static GType
+gst_x264_enc_me_get_type (void)
+{
+  static GType me_type = 0;
+  static GEnumValue *me_types;
+  int n, i;
+
+  if (me_type != 0)
+    return me_type;
+
+  n = 0;
+  while (x264_motion_est_names[n] != NULL)
+    n++;
+
+  me_types = g_new0 (GEnumValue, n + 1);
+
+  for (i = 0; i < n; i++) {
+    me_types[i].value = i;
+    me_types[i].value_name = x264_motion_est_names[i];
+    me_types[i].value_nick = x264_motion_est_names[i];
+  }
+
+  me_type = g_enum_register_static ("GstX264EncMe", me_types);
+
+  return me_type;
+}
+
+#define GST_X264_ENC_ANALYSE_TYPE (gst_x264_enc_analyse_get_type())
+static GType
+gst_x264_enc_analyse_get_type (void)
+{
+  static GType analyse_type = 0;
+  static const GFlagsValue analyse_types[] = {
+    {X264_ANALYSE_I4x4, "i4x4", "i4x4"},
+    {X264_ANALYSE_I8x8, "i8x8", "i8x8"},
+    {X264_ANALYSE_PSUB16x16, "p8x8", "p8x8"},
+    {X264_ANALYSE_PSUB8x8, "p4x4", "p4x4"},
+    {X264_ANALYSE_BSUB16x16, "b8x8", "b8x8"},
+    {0, NULL, NULL},
+  };
+
+  if (!analyse_type) {
+    analyse_type = g_flags_register_static ("GstX264EncAnalyse", analyse_types);
+  }
+  return analyse_type;
+}
+
+#ifdef X264_PRESETS
+
+#define GST_X264_ENC_PROFILE_TYPE (gst_x264_enc_profile_get_type())
+static GType
+gst_x264_enc_profile_get_type (void)
+{
+  static GType profile_type = 0;
+  static GEnumValue *profile_types;
+  int n, i;
+
+  if (profile_type != 0)
+    return profile_type;
+
+  n = 0;
+  while (x264_profile_names[n] != NULL)
+    n++;
+
+  profile_types = g_new0 (GEnumValue, n + 2);
+
+  i = 0;
+  profile_types[i].value = i;
+  profile_types[i].value_name = "No profile";
+  profile_types[i].value_nick = "None";
+  for (i = 1; i <= n; i++) {
+    profile_types[i].value = i;
+    profile_types[i].value_name = x264_profile_names[i - 1];
+    profile_types[i].value_nick = x264_profile_names[i - 1];
+  }
+
+  profile_type = g_enum_register_static ("GstX264EncProfile", profile_types);
+
+  return profile_type;
+}
+
+#define GST_X264_ENC_SPEED_PRESET_TYPE (gst_x264_enc_speed_preset_get_type())
+static GType
+gst_x264_enc_speed_preset_get_type (void)
+{
+  static GType speed_preset_type = 0;
+  static GEnumValue *speed_preset_types;
+  int n, i;
+
+  if (speed_preset_type != 0)
+    return speed_preset_type;
+
+  n = 0;
+  while (x264_preset_names[n] != NULL)
+    n++;
+
+  speed_preset_types = g_new0 (GEnumValue, n + 2);
+
+  speed_preset_types[0].value = 0;
+  speed_preset_types[0].value_name = "No preset";
+  speed_preset_types[0].value_nick = "None";
+
+  for (i = 1; i <= n; i++) {
+    speed_preset_types[i].value = i;
+    speed_preset_types[i].value_name = x264_preset_names[i - 1];
+    speed_preset_types[i].value_nick = x264_preset_names[i - 1];
+  }
+
+  speed_preset_type =
+      g_enum_register_static ("GstX264EncPreset", speed_preset_types);
+
+  return speed_preset_type;
+}
+
+static const GFlagsValue tune_types[] = {
+  {0x0, "No tuning", "none"},
+  {0x1, "Still image", "stillimage"},
+  {0x2, "Fast decode", "fastdecode"},
+  {0x4, "Zero latency (requires constant framerate)", "zerolatency"},
+  {0, NULL, NULL},
+};
+
+#define GST_X264_ENC_TUNE_TYPE (gst_x264_enc_tune_get_type())
+static GType
+gst_x264_enc_tune_get_type (void)
+{
+  static GType tune_type = 0;
+
+  if (!tune_type) {
+    tune_type = g_flags_register_static ("GstX264EncTune", tune_types + 1);
+  }
+  return tune_type;
+}
+
+enum
+{
+  GST_X264_ENC_TUNE_NONE,
+  GST_X264_ENC_TUNE_FILM,
+  GST_X264_ENC_TUNE_ANIMATION,
+  GST_X264_ENC_TUNE_GRAIN,
+  GST_X264_ENC_TUNE_PSNR,
+  GST_X264_ENC_TUNE_SSIM,
+  GST_X264_ENC_TUNE_LAST
+};
+
+static const GEnumValue psy_tune_types[] = {
+  {GST_X264_ENC_TUNE_NONE, "No tuning", "none"},
+  {GST_X264_ENC_TUNE_FILM, "Film", "film"},
+  {GST_X264_ENC_TUNE_ANIMATION, "Animation", "animation"},
+  {GST_X264_ENC_TUNE_GRAIN, "Grain", "grain"},
+  {GST_X264_ENC_TUNE_PSNR, "PSNR", "psnr"},
+  {GST_X264_ENC_TUNE_SSIM, "SSIM", "ssim"},
+  {0, NULL, NULL},
+};
+
+#define GST_X264_ENC_PSY_TUNE_TYPE (gst_x264_enc_psy_tune_get_type())
+static GType
+gst_x264_enc_psy_tune_get_type (void)
+{
+  static GType psy_tune_type = 0;
+
+  if (!psy_tune_type) {
+    psy_tune_type =
+        g_enum_register_static ("GstX264EncPsyTune", psy_tune_types);
+  }
+  return psy_tune_type;
+}
+
+static void
+gst_x264_enc_build_tunings_string (GstX264Enc * x264enc)
+{
+  int i = 1;
+
+  if (x264enc->tunings)
+    g_string_free (x264enc->tunings, TRUE);
+
+  if (x264enc->psy_tune) {
+    x264enc->tunings =
+        g_string_new (psy_tune_types[x264enc->psy_tune].value_nick);
+  } else {
+    x264enc->tunings = g_string_new (NULL);
+  }
+
+  while (tune_types[i].value_name) {
+    if (x264enc->tune & (1 << (i - 1)))
+      g_string_append_printf (x264enc->tunings, "%s%s",
+          x264enc->tunings->len ? "," : "", tune_types[i].value_nick);
+    i++;
+  }
+
+  if (x264enc->tunings->len)
+    GST_DEBUG_OBJECT (x264enc, "Constructed tunings string: %s",
+        x264enc->tunings->str);
+}
+
+#endif
+
+
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw-yuv, "
+        "format = (fourcc) { I420, YV12 }, "
+        "framerate = (fraction) [0, MAX], "
+        "width = (int) [ 16, MAX ], " "height = (int) [ 16, MAX ]")
+    );
+
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-h264, "
+        "framerate = (fraction) [0/1, MAX], "
+        "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ], "
+        "stream-format = (string) { byte-stream, avc }, "
+        "alignment = (string) { au }, "
+        "profile = (string) { high-10, high, main, constrained-baseline, "
+        "high-10-intra }")
+    );
+
+static void gst_x264_enc_finalize (GObject * object);
+static void gst_x264_enc_reset (GstX264Enc * encoder);
+
+static gboolean gst_x264_enc_init_encoder (GstX264Enc * encoder);
+static void gst_x264_enc_close_encoder (GstX264Enc * encoder);
+
+static gboolean gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps);
+static GstCaps *gst_x264_enc_sink_get_caps (GstPad * pad);
+static gboolean gst_x264_enc_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_x264_enc_src_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_x264_enc_chain (GstPad * pad, GstBuffer * buf);
+static void gst_x264_enc_flush_frames (GstX264Enc * encoder, gboolean send);
+static GstFlowReturn gst_x264_enc_encode_frame (GstX264Enc * encoder,
+    x264_picture_t * pic_in, int *i_nal, gboolean send);
+static GstStateChangeReturn gst_x264_enc_change_state (GstElement * element,
+    GstStateChange transition);
+
+static void gst_x264_enc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_x264_enc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static void
+_do_init (GType object_type)
+{
+  const GInterfaceInfo preset_interface_info = {
+    NULL,                       /* interface_init */
+    NULL,                       /* interface_finalize */
+    NULL                        /* interface_data */
+  };
+
+  g_type_add_interface_static (object_type, GST_TYPE_PRESET,
+      &preset_interface_info);
+}
+
+GST_BOILERPLATE_FULL (GstX264Enc, gst_x264_enc, GstElement, GST_TYPE_ELEMENT,
+    _do_init);
+
+static void
+gst_x264_enc_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_set_details_simple (element_class,
+      "x264enc", "Codec/Encoder/Video", "H264 Encoder",
+      "Josef Zlomek <josef.zlomek@itonis.tv>, "
+      "Mark Nauwelaerts <mnauw@users.sf.net>");
+
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+}
+
+/* don't forget to free the string after use */
+static const gchar *
+gst_x264_enc_build_partitions (gint analyse)
+{
+  GString *string;
+
+  if (!analyse)
+    return NULL;
+
+  string = g_string_new (NULL);
+  if (analyse & X264_ANALYSE_I4x4)
+    g_string_append (string, "i4x4");
+  if (analyse & X264_ANALYSE_I8x8)
+    g_string_append (string, ",i8x8");
+  if (analyse & X264_ANALYSE_PSUB16x16)
+    g_string_append (string, ",p8x8");
+  if (analyse & X264_ANALYSE_PSUB8x8)
+    g_string_append (string, ",p4x4");
+  if (analyse & X264_ANALYSE_BSUB16x16)
+    g_string_append (string, ",b8x8");
+
+  return (const gchar *) g_string_free (string, FALSE);
+}
+
+static void
+gst_x264_enc_class_init (GstX264EncClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  const gchar *partitions = NULL;
+
+  x264enc_defaults = g_string_new ("");
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->set_property = gst_x264_enc_set_property;
+  gobject_class->get_property = gst_x264_enc_get_property;
+  gobject_class->finalize = gst_x264_enc_finalize;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_x264_enc_change_state);
+
+  /* options for which we don't use string equivalents */
+  g_object_class_install_property (gobject_class, ARG_PASS,
+      g_param_spec_enum ("pass", "Encoding pass/type",
+          "Encoding pass/type", GST_X264_ENC_PASS_TYPE,
+          ARG_PASS_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_QUANTIZER,
+      g_param_spec_uint ("quantizer", "Constant Quantizer",
+          "Constant quantizer or quality to apply",
+          1, 50, ARG_QUANTIZER_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_BITRATE,
+      g_param_spec_uint ("bitrate", "Bitrate", "Bitrate in kbit/sec", 1,
+          100 * 1024, ARG_BITRATE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+          GST_PARAM_MUTABLE_PLAYING));
+  g_object_class_install_property (gobject_class, ARG_VBV_BUF_CAPACITY,
+      g_param_spec_uint ("vbv-buf-capacity", "VBV buffer capacity",
+          "Size of the VBV buffer in milliseconds",
+          0, 10000, ARG_VBV_BUF_CAPACITY_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+          GST_PARAM_MUTABLE_PLAYING));
+
+#ifdef X264_PRESETS
+  g_object_class_install_property (gobject_class, ARG_SPEED_PRESET,
+      g_param_spec_enum ("speed-preset", "Speed/quality preset",
+          "Preset name for speed/quality tradeoff options (can affect decode "
+          "compatibility - impose restrictions separately for your target decoder)",
+          GST_X264_ENC_SPEED_PRESET_TYPE, ARG_SPEED_PRESET_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_PSY_TUNE,
+      g_param_spec_enum ("psy-tune", "Psychovisual tuning preset",
+          "Preset name for psychovisual tuning options",
+          GST_X264_ENC_PSY_TUNE_TYPE, ARG_PSY_TUNE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_TUNE,
+      g_param_spec_flags ("tune", "Content tuning preset",
+          "Preset name for non-psychovisual tuning options",
+          GST_X264_ENC_TUNE_TYPE, ARG_TUNE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_PROFILE,
+      g_param_spec_enum ("profile", "H.264 profile",
+          "Apply restrictions to meet H.264 Profile constraints. This will "
+          "override other properties if necessary. This will only be used "
+          "if downstream elements do not specify a profile in their caps (DEPRECATED)",
+          GST_X264_ENC_PROFILE_TYPE, ARG_PROFILE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif /* X264_PRESETS */
+  g_object_class_install_property (gobject_class, ARG_OPTION_STRING,
+      g_param_spec_string ("option-string", "Option string",
+          "String of x264 options (overridden by element properties)",
+          ARG_OPTION_STRING_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /* options for which we _do_ use string equivalents */
+  g_object_class_install_property (gobject_class, ARG_THREADS,
+      g_param_spec_uint ("threads", "Threads",
+          "Number of threads used by the codec (0 for automatic)",
+          0, 4, ARG_THREADS_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /* NOTE: this first string append doesn't require the ':' delimiter but the
+   * rest do */
+  g_string_append_printf (x264enc_defaults, "threads=%d", ARG_THREADS_DEFAULT);
+#ifdef X264_ENH_THREADING
+  g_object_class_install_property (gobject_class, ARG_SLICED_THREADS,
+      g_param_spec_boolean ("sliced-threads", "Sliced Threads",
+          "Low latency but lower efficiency threading",
+          ARG_SLICED_THREADS_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":sliced-threads=%d",
+      ARG_SLICED_THREADS_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_SYNC_LOOKAHEAD,
+      g_param_spec_int ("sync-lookahead", "Sync Lookahead",
+          "Number of buffer frames for threaded lookahead (-1 for automatic)",
+          -1, 250, ARG_SYNC_LOOKAHEAD_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":sync-lookahead=%d",
+      ARG_SYNC_LOOKAHEAD_DEFAULT);
+#endif
+  g_object_class_install_property (gobject_class, ARG_STATS_FILE,
+      g_param_spec_string ("stats-file", "Stats File",
+          "Filename for multipass statistics (deprecated, use multipass-cache-file)",
+          ARG_STATS_FILE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, ARG_MULTIPASS_CACHE_FILE,
+      g_param_spec_string ("multipass-cache-file", "Multipass Cache File",
+          "Filename for multipass cache file",
+          ARG_MULTIPASS_CACHE_FILE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":stats=%s",
+      ARG_MULTIPASS_CACHE_FILE_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_BYTE_STREAM,
+      g_param_spec_boolean ("byte-stream", "Byte Stream",
+          "Generate byte stream format of NALU", ARG_BYTE_STREAM_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":annexb=%d",
+      ARG_BYTE_STREAM_DEFAULT);
+#ifdef X264_INTRA_REFRESH
+  g_object_class_install_property (gobject_class, ARG_INTRA_REFRESH,
+      g_param_spec_boolean ("intra-refresh", "Intra Refresh",
+          "Use Periodic Intra Refresh instead of IDR frames",
+          ARG_INTRA_REFRESH_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":intra-refresh=%d",
+      ARG_INTRA_REFRESH_DEFAULT);
+#endif
+  g_object_class_install_property (gobject_class, ARG_ME,
+      g_param_spec_enum ("me", "Motion Estimation",
+          "Integer pixel motion estimation method", GST_X264_ENC_ME_TYPE,
+          ARG_ME_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":me=%s",
+      x264_motion_est_names[ARG_ME_DEFAULT]);
+  g_object_class_install_property (gobject_class, ARG_SUBME,
+      g_param_spec_uint ("subme", "Subpixel Motion Estimation",
+          "Subpixel motion estimation and partition decision quality: 1=fast, 10=best",
+          1, 10, ARG_SUBME_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":subme=%d", ARG_SUBME_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_ANALYSE,
+      g_param_spec_flags ("analyse", "Analyse", "Partitions to consider",
+          GST_X264_ENC_ANALYSE_TYPE, ARG_ANALYSE_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  partitions = gst_x264_enc_build_partitions (ARG_ANALYSE_DEFAULT);
+  if (partitions) {
+    g_string_append_printf (x264enc_defaults, ":partitions=%s", partitions);
+    g_free ((gpointer) partitions);
+  }
+  g_object_class_install_property (gobject_class, ARG_DCT8x8,
+      g_param_spec_boolean ("dct8x8", "DCT8x8",
+          "Adaptive spatial transform size", ARG_DCT8x8_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":8x8dct=%d", ARG_DCT8x8_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_REF,
+      g_param_spec_uint ("ref", "Reference Frames",
+          "Number of reference frames",
+          1, 12, ARG_REF_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":ref=%d", ARG_REF_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_BFRAMES,
+      g_param_spec_uint ("bframes", "B-Frames",
+          "Number of B-frames between I and P",
+          0, 4, ARG_BFRAMES_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":bframes=%d", ARG_BFRAMES_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_B_ADAPT,
+      g_param_spec_boolean ("b-adapt", "B-Adapt",
+          "Automatically decide how many B-frames to use",
+          ARG_B_ADAPT_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":b-adapt=%d", ARG_B_ADAPT_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_B_PYRAMID,
+      g_param_spec_boolean ("b-pyramid", "B-Pyramid",
+          "Keep some B-frames as references", ARG_B_PYRAMID_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#ifdef X264_B_PYRAMID
+  g_string_append_printf (x264enc_defaults, ":b-pyramid=%s",
+      x264_b_pyramid_names[ARG_B_PYRAMID_DEFAULT]);
+#else
+  g_string_append_printf (x264enc_defaults, ":b-pyramid=%d",
+      ARG_B_PYRAMID_DEFAULT);
+#endif /* X264_B_PYRAMID */
+  g_object_class_install_property (gobject_class, ARG_WEIGHTB,
+      g_param_spec_boolean ("weightb", "Weighted B-Frames",
+          "Weighted prediction for B-frames", ARG_WEIGHTB_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":weightb=%d", ARG_WEIGHTB_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_SPS_ID,
+      g_param_spec_uint ("sps-id", "SPS ID",
+          "SPS and PPS ID number",
+          0, 31, ARG_SPS_ID_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":sps-id=%d", ARG_SPS_ID_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_AU_NALU,
+      g_param_spec_boolean ("aud", "AUD",
+          "Use AU (Access Unit) delimiter", ARG_AU_NALU_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":aud=%d", ARG_AU_NALU_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_TRELLIS,
+      g_param_spec_boolean ("trellis", "Trellis quantization",
+          "Enable trellis searched quantization", ARG_TRELLIS_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":trellis=%d", ARG_TRELLIS_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_KEYINT_MAX,
+      g_param_spec_uint ("key-int-max", "Key-frame maximal interval",
+          "Maximal distance between two key-frames (0 for automatic)",
+          0, G_MAXINT, ARG_KEYINT_MAX_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":keyint=%d",
+      ARG_KEYINT_MAX_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_CABAC,
+      g_param_spec_boolean ("cabac", "Use CABAC", "Enable CABAC entropy coding",
+          ARG_CABAC_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":cabac=%d", ARG_CABAC_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_QP_MIN,
+      g_param_spec_uint ("qp-min", "Minimum Quantizer",
+          "Minimum quantizer", 1, 51, ARG_QP_MIN_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":qpmin=%d", ARG_QP_MIN_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_QP_MAX,
+      g_param_spec_uint ("qp-max", "Maximum Quantizer",
+          "Maximum quantizer", 1, 51, ARG_QP_MAX_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":qpmax=%d", ARG_QP_MAX_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_QP_STEP,
+      g_param_spec_uint ("qp-step", "Maximum Quantizer Difference",
+          "Maximum quantizer difference between frames",
+          1, 50, ARG_QP_STEP_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":qpstep=%d", ARG_QP_STEP_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_IP_FACTOR,
+      g_param_spec_float ("ip-factor", "IP-Factor",
+          "Quantizer factor between I- and P-frames",
+          0, 2, ARG_IP_FACTOR_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":ip-factor=%f",
+      ARG_IP_FACTOR_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_PB_FACTOR,
+      g_param_spec_float ("pb-factor", "PB-Factor",
+          "Quantizer factor between P- and B-frames", 0, 2,
+          ARG_PB_FACTOR_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":pb-factor=%f",
+      ARG_PB_FACTOR_DEFAULT);
+#ifdef X264_MB_RC
+  g_object_class_install_property (gobject_class, ARG_RC_MB_TREE,
+      g_param_spec_boolean ("mb-tree", "Macroblock Tree",
+          "Macroblock-Tree ratecontrol",
+          ARG_RC_MB_TREE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":mbtree=%d",
+      ARG_RC_MB_TREE_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_RC_LOOKAHEAD,
+      g_param_spec_int ("rc-lookahead", "Rate Control Lookahead",
+          "Number of frames for frametype lookahead", 0, 250,
+          ARG_RC_LOOKAHEAD_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":rc-lookahead=%d",
+      ARG_RC_LOOKAHEAD_DEFAULT);
+#endif
+  g_object_class_install_property (gobject_class, ARG_NR,
+      g_param_spec_uint ("noise-reduction", "Noise Reduction",
+          "Noise reduction strength",
+          0, 100000, ARG_NR_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":nr=%d", ARG_NR_DEFAULT);
+  g_object_class_install_property (gobject_class, ARG_INTERLACED,
+      g_param_spec_boolean ("interlaced", "Interlaced",
+          "Interlaced material", ARG_INTERLACED_DEFAULT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_string_append_printf (x264enc_defaults, ":interlaced=%d",
+      ARG_INTERLACED_DEFAULT);
+
+  /* append deblock parameters */
+  g_string_append_printf (x264enc_defaults, ":deblock=0,0");
+  /* append weighted prediction parameter */
+  g_string_append_printf (x264enc_defaults, ":weightp=0");
+}
+
+static void
+gst_x264_enc_log_callback (gpointer private, gint level, const char *format,
+    va_list args)
+{
+#ifndef GST_DISABLE_GST_DEBUG
+  GstDebugLevel gst_level;
+  GObject *object = (GObject *) private;
+
+  switch (level) {
+    case X264_LOG_NONE:
+      gst_level = GST_LEVEL_NONE;
+      break;
+    case X264_LOG_ERROR:
+      gst_level = GST_LEVEL_ERROR;
+      break;
+    case X264_LOG_WARNING:
+      gst_level = GST_LEVEL_WARNING;
+      break;
+    case X264_LOG_INFO:
+      gst_level = GST_LEVEL_INFO;
+      break;
+    default:
+      /* push x264enc debug down to our lower levels to avoid some clutter */
+      gst_level = GST_LEVEL_LOG;
+      break;
+  }
+
+  gst_debug_log_valist (x264_enc_debug, gst_level, "", "", 0, object, format,
+      args);
+#endif /* GST_DISABLE_GST_DEBUG */
+}
+
+/* initialize the new element
+ * instantiate pads and add them to element
+ * set functions
+ * initialize structure
+ */
+static void
+gst_x264_enc_init (GstX264Enc * encoder, GstX264EncClass * klass)
+{
+  encoder->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
+  gst_pad_set_setcaps_function (encoder->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_x264_enc_sink_set_caps));
+  gst_pad_set_getcaps_function (encoder->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_x264_enc_sink_get_caps));
+  gst_pad_set_event_function (encoder->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_x264_enc_sink_event));
+  gst_pad_set_chain_function (encoder->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_x264_enc_chain));
+  gst_element_add_pad (GST_ELEMENT (encoder), encoder->sinkpad);
+
+  encoder->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
+  gst_pad_use_fixed_caps (encoder->srcpad);
+  gst_element_add_pad (GST_ELEMENT (encoder), encoder->srcpad);
+
+  gst_pad_set_event_function (encoder->srcpad,
+      GST_DEBUG_FUNCPTR (gst_x264_enc_src_event));
+
+  /* properties */
+  encoder->threads = ARG_THREADS_DEFAULT;
+  encoder->sliced_threads = ARG_SLICED_THREADS_DEFAULT;
+  encoder->sync_lookahead = ARG_SYNC_LOOKAHEAD_DEFAULT;
+  encoder->pass = ARG_PASS_DEFAULT;
+  encoder->quantizer = ARG_QUANTIZER_DEFAULT;
+  encoder->mp_cache_file = g_strdup (ARG_MULTIPASS_CACHE_FILE_DEFAULT);
+  encoder->byte_stream = ARG_BYTE_STREAM_DEFAULT;
+  encoder->bitrate = ARG_BITRATE_DEFAULT;
+  encoder->intra_refresh = ARG_INTRA_REFRESH_DEFAULT;
+  encoder->vbv_buf_capacity = ARG_VBV_BUF_CAPACITY_DEFAULT;
+  encoder->me = ARG_ME_DEFAULT;
+  encoder->subme = ARG_SUBME_DEFAULT;
+  encoder->analyse = ARG_ANALYSE_DEFAULT;
+  encoder->dct8x8 = ARG_DCT8x8_DEFAULT;
+  encoder->ref = ARG_REF_DEFAULT;
+  encoder->bframes = ARG_BFRAMES_DEFAULT;
+  encoder->b_adapt = ARG_B_ADAPT_DEFAULT;
+  encoder->b_pyramid = ARG_B_PYRAMID_DEFAULT;
+  encoder->weightb = ARG_WEIGHTB_DEFAULT;
+  encoder->sps_id = ARG_SPS_ID_DEFAULT;
+  encoder->au_nalu = ARG_AU_NALU_DEFAULT;
+  encoder->trellis = ARG_TRELLIS_DEFAULT;
+  encoder->keyint_max = ARG_KEYINT_MAX_DEFAULT;
+  encoder->cabac = ARG_CABAC_DEFAULT;
+  encoder->qp_min = ARG_QP_MIN_DEFAULT;
+  encoder->qp_max = ARG_QP_MAX_DEFAULT;
+  encoder->qp_step = ARG_QP_STEP_DEFAULT;
+  encoder->ip_factor = ARG_IP_FACTOR_DEFAULT;
+  encoder->pb_factor = ARG_PB_FACTOR_DEFAULT;
+  encoder->mb_tree = ARG_RC_MB_TREE_DEFAULT;
+  encoder->rc_lookahead = ARG_RC_LOOKAHEAD_DEFAULT;
+  encoder->noise_reduction = ARG_NR_DEFAULT;
+  encoder->interlaced = ARG_INTERLACED_DEFAULT;
+  encoder->profile = ARG_PROFILE_DEFAULT;
+  encoder->option_string = g_string_new (NULL);
+  encoder->option_string_prop = g_string_new (ARG_OPTION_STRING_DEFAULT);
+  encoder->speed_preset = ARG_SPEED_PRESET_DEFAULT;
+  encoder->psy_tune = ARG_PSY_TUNE_DEFAULT;
+  encoder->tune = ARG_TUNE_DEFAULT;
+
+  /* resources */
+  encoder->delay = g_queue_new ();
+  encoder->buffer_size = 100000;
+  encoder->buffer = g_malloc (encoder->buffer_size);
+
+  x264_param_default (&encoder->x264param);
+
+  /* log callback setup; part of parameters */
+  encoder->x264param.pf_log = gst_x264_enc_log_callback;
+  encoder->x264param.p_log_private = encoder;
+  encoder->x264param.i_log_level = X264_LOG_DEBUG;
+
+  gst_x264_enc_reset (encoder);
+}
+
+static void
+gst_x264_enc_reset (GstX264Enc * encoder)
+{
+  encoder->x264enc = NULL;
+  encoder->width = 0;
+  encoder->height = 0;
+  encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
+
+  GST_OBJECT_LOCK (encoder);
+  encoder->i_type = X264_TYPE_AUTO;
+  if (encoder->forcekeyunit_event)
+    gst_event_unref (encoder->forcekeyunit_event);
+  encoder->forcekeyunit_event = NULL;
+  GST_OBJECT_UNLOCK (encoder);
+}
+
+static void
+gst_x264_enc_finalize (GObject * object)
+{
+  GstX264Enc *encoder = GST_X264_ENC (object);
+
+#define FREE_STRING(ptr) \
+  if (ptr) \
+    g_string_free (ptr, TRUE);
+
+  FREE_STRING (encoder->tunings);
+  FREE_STRING (encoder->option_string);
+  FREE_STRING (encoder->option_string_prop);
+
+#undef FREE_STRING
+
+  g_free (encoder->mp_cache_file);
+  encoder->mp_cache_file = NULL;
+  g_free (encoder->buffer);
+  encoder->buffer = NULL;
+  g_queue_free (encoder->delay);
+  encoder->delay = NULL;
+
+  gst_x264_enc_close_encoder (encoder);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/*
+ * gst_x264_enc_parse_options
+ * @encoder: Encoder to which options are assigned
+ * @str: Option string
+ *
+ * Parse option string and assign to x264 parameters
+ *
+ */
+static gboolean
+gst_x264_enc_parse_options (GstX264Enc * encoder, const gchar * str)
+{
+  GStrv kvpairs;
+  guint npairs, i;
+  gint parse_result = 0, ret = 0;
+  gchar *options = (gchar *) str;
+
+  while (*options == ':')
+    options++;
+
+  kvpairs = g_strsplit (options, ":", 0);
+  npairs = g_strv_length (kvpairs);
+
+  for (i = 0; i < npairs; i++) {
+    GStrv key_val = g_strsplit (kvpairs[i], "=", 2);
+
+    parse_result =
+        x264_param_parse (&encoder->x264param, key_val[0], key_val[1]);
+
+    if (parse_result == X264_PARAM_BAD_NAME) {
+      GST_ERROR_OBJECT (encoder, "Bad name for option %s=%s",
+          key_val[0] ? key_val[0] : "", key_val[1] ? key_val[1] : "");
+    }
+    if (parse_result == X264_PARAM_BAD_VALUE) {
+      GST_ERROR_OBJECT (encoder,
+          "Bad value for option %s=%s (Note: a NULL value for a non-boolean triggers this)",
+          key_val[0] ? key_val[0] : "", key_val[1] ? key_val[1] : "");
+    }
+
+    g_strfreev (key_val);
+
+    if (parse_result)
+      ret++;
+  }
+
+  g_strfreev (kvpairs);
+  return !ret;
+}
+
+/*
+ * gst_x264_enc_init_encoder
+ * @encoder:  Encoder which should be initialized.
+ *
+ * Initialize x264 encoder.
+ *
+ */
+static gboolean
+gst_x264_enc_init_encoder (GstX264Enc * encoder)
+{
+  guint pass = 0;
+
+  /* make sure that the encoder is closed */
+  gst_x264_enc_close_encoder (encoder);
+
+  GST_OBJECT_LOCK (encoder);
+
+#ifdef X264_PRESETS
+  gst_x264_enc_build_tunings_string (encoder);
+
+  /* set x264 parameters and use preset/tuning if present */
+  GST_DEBUG_OBJECT (encoder, "Applying defaults with preset %s, tunings %s",
+      encoder->speed_preset ? x264_preset_names[encoder->speed_preset - 1] : "",
+      encoder->tunings && encoder->tunings->len ? encoder->tunings->str : "");
+  x264_param_default_preset (&encoder->x264param,
+      encoder->speed_preset ? x264_preset_names[encoder->speed_preset -
+          1] : NULL, encoder->tunings
+      && encoder->tunings->len ? encoder->tunings->str : NULL);
+
+  /* log callback setup; part of parameters
+   * this needs to be done again after every *param_default* () call */
+  encoder->x264param.pf_log = gst_x264_enc_log_callback;
+  encoder->x264param.p_log_private = encoder;
+  encoder->x264param.i_log_level = X264_LOG_DEBUG;
+
+  /* if no preset nor tuning, use property defaults */
+  if (!encoder->speed_preset && !encoder->tunings->len) {
+#endif /* X264_PRESETS */
+    GST_DEBUG_OBJECT (encoder, "Applying x264enc_defaults");
+    if (x264enc_defaults->len
+        && gst_x264_enc_parse_options (encoder,
+            x264enc_defaults->str) == FALSE) {
+      GST_DEBUG_OBJECT (encoder,
+          "x264enc_defaults string contains errors. This is a bug.");
+      goto unlock_and_return;
+    }
+#ifdef X264_PRESETS
+  } else {
+    /* When using presets we need to respect the default output format */
+    encoder->x264param.b_aud = encoder->au_nalu;
+    encoder->x264param.b_annexb = encoder->byte_stream;
+  }
+#endif /* X264_PRESETS */
+
+#if X264_BUILD >= 81
+  /* setup appropriate timebase for gstreamer */
+  encoder->x264param.i_timebase_num = 1;
+  encoder->x264param.i_timebase_den = 1000000000;
+#endif
+
+  /* apply option-string property */
+  if (encoder->option_string_prop && encoder->option_string_prop->len) {
+    GST_DEBUG_OBJECT (encoder, "Applying option-string: %s",
+        encoder->option_string_prop->str);
+    if (gst_x264_enc_parse_options (encoder,
+            encoder->option_string_prop->str) == FALSE) {
+      GST_DEBUG_OBJECT (encoder, "Your option-string contains errors.");
+      goto unlock_and_return;
+    }
+  }
+  /* apply user-set options */
+  if (encoder->option_string && encoder->option_string->len) {
+    GST_DEBUG_OBJECT (encoder, "Applying user-set options: %s",
+        encoder->option_string->str);
+    if (gst_x264_enc_parse_options (encoder,
+            encoder->option_string->str) == FALSE) {
+      GST_DEBUG_OBJECT (encoder, "Failed to parse internal option string. "
+          "This could be due to use of an old libx264 version. Option string "
+          "was: %s", encoder->option_string->str);
+    }
+  }
+
+  /* set up encoder parameters */
+  encoder->x264param.i_fps_num = encoder->fps_num;
+  encoder->x264param.i_fps_den = encoder->fps_den;
+  encoder->x264param.i_width = encoder->width;
+  encoder->x264param.i_height = encoder->height;
+  if (encoder->par_den > 0) {
+    encoder->x264param.vui.i_sar_width = encoder->par_num;
+    encoder->x264param.vui.i_sar_height = encoder->par_den;
+  }
+  /* FIXME 0.11 : 2s default keyframe interval seems excessive
+   * (10s is x264 default) */
+  encoder->x264param.i_keyint_max = encoder->keyint_max ? encoder->keyint_max :
+      (2 * encoder->fps_num / encoder->fps_den);
+
+  if ((((encoder->height == 576) && ((encoder->width == 720)
+                  || (encoder->width == 704) || (encoder->width == 352)))
+          || ((encoder->height == 288) && (encoder->width == 352)))
+      && (encoder->fps_den == 1) && (encoder->fps_num == 25)) {
+    encoder->x264param.vui.i_vidformat = 1;     /* PAL */
+  } else if ((((encoder->height == 480) && ((encoder->width == 720)
+                  || (encoder->width == 704) || (encoder->width == 352)))
+          || ((encoder->height == 240) && (encoder->width == 352)))
+      && (encoder->fps_den == 1001) && ((encoder->fps_num == 30000)
+          || (encoder->fps_num == 24000))) {
+    encoder->x264param.vui.i_vidformat = 2;     /* NTSC */
+  } else
+    encoder->x264param.vui.i_vidformat = 5;     /* unspecified */
+
+  encoder->x264param.analyse.b_psnr = 0;
+
+  switch (encoder->pass) {
+    case GST_X264_ENC_PASS_QUANT:
+      encoder->x264param.rc.i_rc_method = X264_RC_CQP;
+      encoder->x264param.rc.i_qp_constant = encoder->quantizer;
+      break;
+    case GST_X264_ENC_PASS_QUAL:
+      encoder->x264param.rc.i_rc_method = X264_RC_CRF;
+      encoder->x264param.rc.f_rf_constant = encoder->quantizer;
+      encoder->x264param.rc.i_vbv_max_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_buffer_size
+          = encoder->x264param.rc.i_vbv_max_bitrate
+          * encoder->vbv_buf_capacity / 1000;
+      break;
+    case GST_X264_ENC_PASS_CBR:
+    case GST_X264_ENC_PASS_PASS1:
+    case GST_X264_ENC_PASS_PASS2:
+    case GST_X264_ENC_PASS_PASS3:
+    default:
+      encoder->x264param.rc.i_rc_method = X264_RC_ABR;
+      encoder->x264param.rc.i_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_max_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_buffer_size =
+          encoder->x264param.rc.i_vbv_max_bitrate
+          * encoder->vbv_buf_capacity / 1000;
+      pass = encoder->pass & 0xF;
+      break;
+  }
+
+  switch (pass) {
+    case 0:
+      encoder->x264param.rc.b_stat_read = 0;
+      encoder->x264param.rc.b_stat_write = 0;
+      break;
+    case 1:
+      encoder->x264param.rc.b_stat_read = 0;
+      encoder->x264param.rc.b_stat_write = 1;
+#ifdef X264_PRESETS
+      x264_param_apply_fastfirstpass (&encoder->x264param);
+#else
+      encoder->x264param.i_frame_reference = 1;
+      encoder->x264param.analyse.b_transform_8x8 = 0;
+      encoder->x264param.analyse.inter = 0;
+      encoder->x264param.analyse.i_me_method = X264_ME_DIA;
+      encoder->x264param.analyse.i_subpel_refine =
+          MIN (2, encoder->x264param.analyse.i_subpel_refine);
+      encoder->x264param.analyse.i_trellis = 0;
+      encoder->x264param.analyse.b_fast_pskip = 1;
+#endif /* X264_PRESETS */
+      break;
+    case 2:
+      encoder->x264param.rc.b_stat_read = 1;
+      encoder->x264param.rc.b_stat_write = 0;
+      break;
+    case 3:
+      encoder->x264param.rc.b_stat_read = 1;
+      encoder->x264param.rc.b_stat_write = 1;
+      break;
+  }
+
+#if X264_BUILD >= 81 && X264_BUILD < 106
+  /* When vfr is disabled, libx264 ignores buffer timestamps. This causes
+   * issues with rate control in libx264 with our nanosecond timebase. This
+   * has been fixed upstream in libx264 but this workaround is required for
+   * pre-fix versions. */
+  if (!encoder->x264param.b_vfr_input) {
+    if (encoder->x264param.i_fps_num == 0) {
+      GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
+          ("Constant framerate is required."),
+          ("The framerate caps (%d/%d) indicate VFR but VFR is disabled in libx264. (Is the zerolatency tuning in use?)",
+              encoder->x264param.i_fps_num, encoder->x264param.i_fps_den));
+      return FALSE;
+    }
+    encoder->x264param.i_timebase_num = encoder->x264param.i_fps_den;
+    encoder->x264param.i_timebase_den = encoder->x264param.i_fps_num;
+  }
+#endif
+
+#ifdef X264_PRESETS
+  if (encoder->peer_profile) {
+    if (x264_param_apply_profile (&encoder->x264param, encoder->peer_profile))
+      GST_WARNING_OBJECT (encoder, "Bad downstream profile name: %s",
+          encoder->peer_profile);
+  } else if (encoder->profile) {
+    if (x264_param_apply_profile (&encoder->x264param,
+            x264_profile_names[encoder->profile - 1]))
+      GST_WARNING_OBJECT (encoder, "Bad profile name: %s",
+          x264_profile_names[encoder->profile - 1]);
+  }
+#endif /* X264_PRESETS */
+
+  /* If using an intra profile, all frames are intra frames */
+  if (encoder->peer_intra_profile)
+    encoder->x264param.i_keyint_max = encoder->x264param.i_keyint_min = 1;
+
+  /* Enforce level limits if they were in the caps */
+  if (encoder->peer_level) {
+    encoder->x264param.i_level_idc = encoder->peer_level->level_idc;
+
+    encoder->x264param.rc.i_bitrate = MIN (encoder->x264param.rc.i_bitrate,
+        encoder->peer_level->bitrate);
+    encoder->x264param.rc.i_vbv_max_bitrate =
+        MIN (encoder->x264param.rc.i_vbv_max_bitrate,
+        encoder->peer_level->bitrate);
+    encoder->x264param.rc.i_vbv_buffer_size =
+        MIN (encoder->x264param.rc.i_vbv_buffer_size, encoder->peer_level->cpb);
+    encoder->x264param.analyse.i_mv_range =
+        MIN (encoder->x264param.analyse.i_mv_range,
+        encoder->peer_level->mv_range);
+
+    if (encoder->peer_level->frame_only) {
+      encoder->x264param.b_interlaced = FALSE;
+#if X264_BUILD >= 95
+      encoder->x264param.b_fake_interlaced = FALSE;
+#endif
+    }
+  }
+
+  encoder->reconfig = FALSE;
+
+  GST_OBJECT_UNLOCK (encoder);
+
+  encoder->x264enc = x264_encoder_open (&encoder->x264param);
+  if (!encoder->x264enc) {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
+        ("Can not initialize x264 encoder."), (NULL));
+    return FALSE;
+  }
+
+  return TRUE;
+
+unlock_and_return:
+  GST_OBJECT_UNLOCK (encoder);
+  return FALSE;
+}
+
+/* gst_x264_enc_close_encoder
+ * @encoder:  Encoder which should close.
+ *
+ * Close x264 encoder.
+ */
+static void
+gst_x264_enc_close_encoder (GstX264Enc * encoder)
+{
+  if (encoder->x264enc != NULL) {
+    x264_encoder_close (encoder->x264enc);
+    encoder->x264enc = NULL;
+  }
+}
+
+static gboolean
+gst_x264_enc_set_profile_and_level (GstX264Enc * encoder, GstCaps * caps)
+{
+  x264_nal_t *nal;
+  int i_nal;
+  int header_return;
+  gint sps_ni = 0;
+  guint8 *sps;
+
+
+  header_return = x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
+  if (header_return < 0) {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 header failed."),
+        ("x264_encoder_headers return code=%d", header_return));
+    return FALSE;
+  }
+
+  /* old x264 returns SEI, SPS and PPS, newer one has SEI last */
+  if (i_nal == 3 && nal[sps_ni].i_type != 7)
+    sps_ni = 1;
+
+  /* old style API: nal's are not encapsulated, and have no sync/size prefix,
+   * new style API: nal's are encapsulated, and have 4-byte size prefix */
+#ifndef X264_ENC_NALS
+  sps = nal[sps_ni].p_payload;
+#else
+  sps = nal[sps_ni].p_payload + 4;
+  /* skip NAL unit type */
+  sps++;
+#endif
+
+  gst_codec_utils_h264_caps_set_level_and_profile (caps, sps, 3);
+
+  return TRUE;
+}
+
+/*
+ * Returns: Buffer with the stream headers.
+ */
+static GstBuffer *
+gst_x264_enc_header_buf (GstX264Enc * encoder)
+{
+  GstBuffer *buf;
+  x264_nal_t *nal;
+  int i_nal;
+  int header_return;
+  int i_size;
+  int nal_size;
+#ifndef X264_ENC_NALS
+  int i_data;
+#endif
+  guint8 *buffer, *sps;
+  gulong buffer_size;
+  gint sei_ni = 2, sps_ni = 0, pps_ni = 1;
+
+  if (G_UNLIKELY (encoder->x264enc == NULL))
+    return NULL;
+
+  /* Create avcC header. */
+
+  header_return = x264_encoder_headers (encoder->x264enc, &nal, &i_nal);
+  if (header_return < 0) {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 header failed."),
+        ("x264_encoder_headers return code=%d", header_return));
+    return NULL;
+  }
+
+  /* old x264 returns SEI, SPS and PPS, newer one has SEI last */
+  if (i_nal == 3 && nal[sps_ni].i_type != 7) {
+    sei_ni = 0;
+    sps_ni = 1;
+    pps_ni = 2;
+  }
+
+  /* x264 is expected to return an SEI (some identification info),
+   * and SPS and PPS */
+  if (i_nal != 3 || nal[sps_ni].i_type != 7 || nal[pps_ni].i_type != 8 ||
+      nal[sps_ni].i_payload < 4 || nal[pps_ni].i_payload < 1) {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, (NULL),
+        ("Unexpected x264 header."));
+    return NULL;
+  }
+
+  GST_MEMDUMP ("SEI", nal[sei_ni].p_payload, nal[sei_ni].i_payload);
+  GST_MEMDUMP ("SPS", nal[sps_ni].p_payload, nal[sps_ni].i_payload);
+  GST_MEMDUMP ("PPS", nal[pps_ni].p_payload, nal[pps_ni].i_payload);
+
+  /* nal payloads with emulation_prevention_three_byte, and some header data */
+  buffer_size = (nal[sps_ni].i_payload + nal[pps_ni].i_payload) * 4 + 100;
+  buffer = g_malloc (buffer_size);
+
+  /* old style API: nal's are not encapsulated, and have no sync/size prefix,
+   * new style API: nal's are encapsulated, and have 4-byte size prefix */
+#ifndef X264_ENC_NALS
+  sps = nal[sps_ni].p_payload;
+#else
+  sps = nal[sps_ni].p_payload + 4;
+  /* skip NAL unit type */
+  sps++;
+#endif
+
+  buffer[0] = 1;                /* AVC Decoder Configuration Record ver. 1 */
+  buffer[1] = sps[0];           /* profile_idc                             */
+  buffer[2] = sps[1];           /* profile_compability                     */
+  buffer[3] = sps[2];           /* level_idc                               */
+  buffer[4] = 0xfc | (4 - 1);   /* nal_length_size_minus1                  */
+
+  i_size = 5;
+
+  buffer[i_size++] = 0xe0 | 1;  /* number of SPSs */
+
+#ifndef X264_ENC_NALS
+  i_data = buffer_size - i_size - 2;
+  nal_size = x264_nal_encode (buffer + i_size + 2, &i_data, 0, &nal[sps_ni]);
+#else
+  nal_size = nal[sps_ni].i_payload - 4;
+  memcpy (buffer + i_size + 2, nal[sps_ni].p_payload + 4, nal_size);
+#endif
+  GST_WRITE_UINT16_BE (buffer + i_size, nal_size);
+  i_size += nal_size + 2;
+
+  buffer[i_size++] = 1;         /* number of PPSs */
+
+#ifndef X264_ENC_NALS
+  i_data = buffer_size - i_size - 2;
+  nal_size = x264_nal_encode (buffer + i_size + 2, &i_data, 0, &nal[pps_ni]);
+#else
+  nal_size = nal[pps_ni].i_payload - 4;
+  memcpy (buffer + i_size + 2, nal[pps_ni].p_payload + 4, nal_size);
+#endif
+  GST_WRITE_UINT16_BE (buffer + i_size, nal_size);
+  i_size += nal_size + 2;
+
+  buf = gst_buffer_new_and_alloc (i_size);
+  memcpy (GST_BUFFER_DATA (buf), buffer, i_size);
+  g_free (buffer);
+
+  GST_MEMDUMP ("header", GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+
+  return buf;
+}
+
+/* gst_x264_enc_set_src_caps
+ * Returns: TRUE on success.
+ */
+static gboolean
+gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstPad * pad, GstCaps * caps)
+{
+  GstBuffer *buf;
+  GstCaps *outcaps;
+  GstStructure *structure;
+  gboolean res;
+
+  outcaps = gst_caps_new_simple ("video/x-h264",
+      "width", G_TYPE_INT, encoder->width,
+      "height", G_TYPE_INT, encoder->height,
+      "framerate", GST_TYPE_FRACTION, encoder->fps_num, encoder->fps_den,
+      "pixel-aspect-ratio", GST_TYPE_FRACTION, encoder->par_num,
+      encoder->par_den, NULL);
+
+  structure = gst_caps_get_structure (outcaps, 0);
+
+  if (encoder->current_byte_stream == GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY) {
+    if (encoder->byte_stream) {
+      encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_BYTE_STREAM;
+    } else {
+      encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_AVC;
+    }
+  }
+  if (encoder->current_byte_stream == GST_X264_ENC_STREAM_FORMAT_AVC) {
+    buf = gst_x264_enc_header_buf (encoder);
+    if (buf != NULL) {
+      gst_caps_set_simple (outcaps, "codec_data", GST_TYPE_BUFFER, buf, NULL);
+      gst_buffer_unref (buf);
+    }
+    gst_structure_set (structure, "stream-format", G_TYPE_STRING, "avc", NULL);
+  } else {
+    gst_structure_set (structure, "stream-format", G_TYPE_STRING, "byte-stream",
+        NULL);
+  }
+  gst_structure_set (structure, "alignment", G_TYPE_STRING, "au", NULL);
+
+  if (!gst_x264_enc_set_profile_and_level (encoder, outcaps)) {
+    gst_caps_unref (outcaps);
+    return FALSE;
+  }
+
+  res = gst_pad_set_caps (pad, outcaps);
+  gst_caps_unref (outcaps);
+
+  return res;
+}
+
+static gboolean
+gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
+{
+  GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad));
+  GstVideoFormat format;
+  gint width, height;
+  gint fps_num, fps_den;
+  gint par_num, par_den;
+  gint i;
+  GstCaps *peer_caps;
+  const GstCaps *template_caps;
+  GstCaps *allowed_caps = NULL;
+  gboolean level_ok = TRUE;
+
+  /* get info from caps */
+  if (!gst_video_format_parse_caps (caps, &format, &width, &height))
+    return FALSE;
+  if (!gst_video_parse_caps_framerate (caps, &fps_num, &fps_den))
+    return FALSE;
+  if (!gst_video_parse_caps_pixel_aspect_ratio (caps, &par_num, &par_den)) {
+    par_num = 1;
+    par_den = 1;
+  }
+
+  /* If the encoder is initialized, do not reinitialize it again if not
+   * necessary */
+  if (encoder->x264enc) {
+    if (width == encoder->width && height == encoder->height
+        && fps_num == encoder->fps_num && fps_den == encoder->fps_den
+        && par_num == encoder->par_num && par_den == encoder->par_den)
+      return TRUE;
+
+    /* clear out pending frames */
+    gst_x264_enc_flush_frames (encoder, TRUE);
+
+    encoder->sps_id++;
+  }
+
+  /* store input description */
+  encoder->format = format;
+  encoder->width = width;
+  encoder->height = height;
+  encoder->fps_num = fps_num;
+  encoder->fps_den = fps_den;
+  encoder->par_num = par_num;
+  encoder->par_den = par_den;
+
+  /* prepare a cached image description */
+  encoder->image_size = gst_video_format_get_size (encoder->format, width,
+      height);
+  for (i = 0; i < 3; ++i) {
+    /* only offsets now, is shifted later. Offsets will be for Y, U, V so we
+     * can just feed YV12 as I420 to the decoder later */
+    encoder->offset[i] = gst_video_format_get_component_offset (encoder->format,
+        i, width, height);
+    encoder->stride[i] = gst_video_format_get_row_stride (encoder->format,
+        i, width);
+  }
+
+  encoder->peer_profile = NULL;
+  encoder->peer_intra_profile = FALSE;
+  encoder->peer_level = NULL;
+
+  /* FIXME: Remove THIS bit in 0.11 when the profile property is removed */
+  peer_caps = gst_pad_peer_get_caps_reffed (encoder->srcpad);
+  if (peer_caps) {
+    gint i;
+    gboolean has_profile_or_level_or_format = FALSE;
+
+    for (i = 0; i < gst_caps_get_size (peer_caps); i++) {
+      GstStructure *s = gst_caps_get_structure (peer_caps, i);
+
+      if (gst_structure_has_name (s, "video/x-h264") &&
+          (gst_structure_has_field (s, "profile") ||
+              gst_structure_has_field (s, "level") ||
+              gst_structure_has_field (s, "stream-format"))) {
+        has_profile_or_level_or_format = TRUE;
+        break;
+      }
+    }
+
+    if (has_profile_or_level_or_format) {
+      template_caps = gst_pad_get_pad_template_caps (encoder->srcpad);
+
+      allowed_caps = gst_caps_intersect (peer_caps, template_caps);
+    }
+
+    gst_caps_unref (peer_caps);
+  }
+
+  /* Replace the bit since FIXME with this
+   * allowed_caps = gst_pad_get_allowed_caps (encoder->srcpad);
+   */
+
+  if (allowed_caps) {
+    GstStructure *s;
+    const gchar *profile;
+    const gchar *level;
+    const gchar *stream_format;
+
+    if (gst_caps_is_empty (allowed_caps)) {
+      gst_caps_unref (allowed_caps);
+      return FALSE;
+    }
+
+    allowed_caps = gst_caps_make_writable (allowed_caps);
+    gst_pad_fixate_caps (encoder->srcpad, allowed_caps);
+    s = gst_caps_get_structure (allowed_caps, 0);
+
+    profile = gst_structure_get_string (s, "profile");
+    if (profile) {
+      if (!strcmp (profile, "constrained-baseline")) {
+        encoder->peer_profile = "baseline";
+      } else if (!strcmp (profile, "high-10-intra")) {
+        encoder->peer_intra_profile = TRUE;
+        encoder->peer_profile = "high10";
+      } else if (!strcmp (profile, "high-10")) {
+        encoder->peer_profile = "high10";
+      } else if (!strcmp (profile, "high")) {
+        encoder->peer_profile = "high";
+      } else if (!strcmp (profile, "main")) {
+        encoder->peer_profile = "main";
+      } else {
+        g_assert_not_reached ();
+      }
+    }
+
+    level = gst_structure_get_string (s, "level");
+    if (level) {
+      int level_idc = gst_codec_utils_h264_get_level_idc (level);
+
+      if (level_idc) {
+        gint i;
+
+        for (i = 0; x264_levels[i].level_idc; i++) {
+          if (level_idc == x264_levels[i].level_idc) {
+            int mb_width = (width + 15) / 16;
+            int mb_height = (height + 15) / 16;
+            int mbs = mb_width * mb_height;
+
+            if (x264_levels[i].frame_size < mbs ||
+                x264_levels[i].frame_size * 8 < mb_width * mb_width ||
+                x264_levels[i].frame_size * 8 < mb_height * mb_height) {
+              GST_WARNING_OBJECT (encoder,
+                  "Frame size larger than level %s allows", level);
+              level_ok = FALSE;
+              break;
+            }
+
+            if (fps_den &&
+                x264_levels[i].mbps < (gint64) mbs * fps_num / fps_den) {
+              GST_WARNING_OBJECT (encoder,
+                  "Macroblock rate higher than level %s allows", level);
+              level_ok = FALSE;
+              break;
+            }
+
+            encoder->peer_level = &x264_levels[i];
+            break;
+          }
+        }
+      }
+    }
+
+    stream_format = gst_structure_get_string (s, "stream-format");
+    encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
+    if (stream_format) {
+      if (!strcmp (stream_format, "avc")) {
+        encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_AVC;
+        g_string_append_printf (encoder->option_string, ":annexb=0");
+      } else if (!strcmp (stream_format, "byte-stream")) {
+        encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_BYTE_STREAM;
+        g_string_append_printf (encoder->option_string, ":annexb=1");
+      } else {
+        /* means we have both in caps and _FROM_PROPERTY should be the option */
+      }
+    }
+
+    gst_caps_unref (allowed_caps);
+  }
+
+  if (!level_ok)
+    return FALSE;
+
+  if (!gst_x264_enc_init_encoder (encoder))
+    return FALSE;
+
+  if (!gst_x264_enc_set_src_caps (encoder, encoder->srcpad, caps)) {
+    gst_x264_enc_close_encoder (encoder);
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static GstCaps *
+gst_x264_enc_sink_get_caps (GstPad * pad)
+{
+  GstX264Enc *encoder;
+  GstPad *peer;
+  GstCaps *caps;
+
+  encoder = GST_X264_ENC (gst_pad_get_parent (pad));
+  if (!encoder)
+    return gst_caps_new_empty ();
+
+  peer = gst_pad_get_peer (encoder->srcpad);
+  if (peer) {
+    const GstCaps *templcaps;
+    GstCaps *peercaps;
+    guint i, n;
+
+    peercaps = gst_pad_get_caps (peer);
+
+    /* Translate peercaps to YUV */
+    peercaps = gst_caps_make_writable (peercaps);
+    n = gst_caps_get_size (peercaps);
+    for (i = 0; i < n; i++) {
+      GstStructure *s = gst_caps_get_structure (peercaps, i);
+
+      gst_structure_set_name (s, "video/x-raw-yuv");
+      gst_structure_remove_field (s, "stream-format");
+      gst_structure_remove_field (s, "alignment");
+    }
+
+    templcaps = gst_pad_get_pad_template_caps (pad);
+
+    caps = gst_caps_intersect (peercaps, templcaps);
+    gst_caps_unref (peercaps);
+    gst_object_unref (peer);
+    peer = NULL;
+  } else {
+    caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
+  }
+
+  /* If we already have caps return them */
+  if (GST_PAD_CAPS (pad) && gst_caps_can_intersect (GST_PAD_CAPS (pad), caps)) {
+    GstCaps *tmpcaps = gst_caps_copy (GST_PAD_CAPS (pad));
+
+    gst_caps_merge (tmpcaps, caps);
+    caps = tmpcaps;
+  }
+
+  gst_object_unref (encoder);
+
+  return caps;
+}
+
+static gboolean
+gst_x264_enc_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean ret = TRUE;
+  GstX264Enc *encoder;
+  gboolean forward = TRUE;
+
+  encoder = GST_X264_ENC (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CUSTOM_UPSTREAM:{
+      const GstStructure *s;
+      s = gst_event_get_structure (event);
+      if (gst_structure_has_name (s, "GstForceKeyUnit")) {
+        /* Set I frame request */
+        GST_OBJECT_LOCK (encoder);
+        encoder->i_type = X264_TYPE_I;
+        encoder->forcekeyunit_event = gst_event_copy (event);
+        GST_EVENT_TYPE (encoder->forcekeyunit_event) =
+            GST_EVENT_CUSTOM_DOWNSTREAM;
+        GST_OBJECT_UNLOCK (encoder);
+        forward = FALSE;
+        gst_event_unref (event);
+      }
+      break;
+    }
+    default:
+      break;
+  }
+
+  if (forward)
+    ret = gst_pad_push_event (encoder->sinkpad, event);
+
+  gst_object_unref (encoder);
+  return ret;
+}
+
+static gboolean
+gst_x264_enc_sink_event (GstPad * pad, GstEvent * event)
+{
+  gboolean ret;
+  GstX264Enc *encoder;
+
+  encoder = GST_X264_ENC (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_EOS:
+      gst_x264_enc_flush_frames (encoder, TRUE);
+      break;
+    case GST_EVENT_TAG:{
+      GstTagList *tags = NULL;
+
+      event =
+          GST_EVENT (gst_mini_object_make_writable (GST_MINI_OBJECT (event)));
+
+      gst_event_parse_tag (event, &tags);
+      /* drop codec/video-codec and replace encoder/encoder-version */
+      gst_tag_list_remove_tag (tags, GST_TAG_VIDEO_CODEC);
+      gst_tag_list_remove_tag (tags, GST_TAG_CODEC);
+      gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE, GST_TAG_ENCODER, "x264",
+          GST_TAG_ENCODER_VERSION, X264_BUILD, NULL);
+      /* push is done below */
+      break;
+      /* no flushing if flush received,
+       * buffers in encoder are considered (in the) past */
+    }
+    case GST_EVENT_CUSTOM_DOWNSTREAM:{
+      const GstStructure *s;
+      s = gst_event_get_structure (event);
+      if (gst_structure_has_name (s, "GstForceKeyUnit")) {
+        GST_OBJECT_LOCK (encoder);
+        encoder->i_type = X264_TYPE_I;
+        GST_OBJECT_UNLOCK (encoder);
+      }
+      break;
+    }
+    default:
+      break;
+  }
+
+  ret = gst_pad_push_event (encoder->srcpad, event);
+
+  gst_object_unref (encoder);
+  return ret;
+}
+
+/* chain function
+ * this function does the actual processing
+ */
+static GstFlowReturn
+gst_x264_enc_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad));
+  GstFlowReturn ret;
+  x264_picture_t pic_in;
+  gint i_nal, i;
+  if (G_UNLIKELY (encoder->x264enc == NULL))
+    goto not_inited;
+
+  /* create x264_picture_t from the buffer */
+  /* mostly taken from mplayer (file ve_x264.c) */
+  if (G_UNLIKELY (GST_BUFFER_SIZE (buf) < encoder->image_size))
+    goto wrong_buffer_size;
+
+  /* remember the timestamp and duration */
+  g_queue_push_tail (encoder->delay, buf);
+
+  /* set up input picture */
+  memset (&pic_in, 0, sizeof (pic_in));
+
+  pic_in.img.i_csp = X264_CSP_I420;
+  pic_in.img.i_plane = 3;
+  for (i = 0; i < 3; i++) {
+    pic_in.img.plane[i] = GST_BUFFER_DATA (buf) + encoder->offset[i];
+    pic_in.img.i_stride[i] = encoder->stride[i];
+  }
+
+  GST_OBJECT_LOCK (encoder);
+  pic_in.i_type = encoder->i_type;
+
+  /* Reset encoder forced picture type */
+  encoder->i_type = X264_TYPE_AUTO;
+  GST_OBJECT_UNLOCK (encoder);
+
+  pic_in.i_pts = GST_BUFFER_TIMESTAMP (buf);
+
+  ret = gst_x264_enc_encode_frame (encoder, &pic_in, &i_nal, TRUE);
+
+  /* input buffer is released later on */
+  return ret;
+
+/* ERRORS */
+not_inited:
+  {
+    GST_WARNING_OBJECT (encoder, "Got buffer before set_caps was called");
+    gst_buffer_unref (buf);
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+wrong_buffer_size:
+  {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
+        ("Encode x264 frame failed."),
+        ("Wrong buffer size %d (should be %d)",
+            GST_BUFFER_SIZE (buf), encoder->image_size));
+    gst_buffer_unref (buf);
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_x264_enc_encode_frame (GstX264Enc * encoder, x264_picture_t * pic_in,
+    int *i_nal, gboolean send)
+{
+  GstBuffer *out_buf = NULL, *in_buf = NULL;
+  x264_picture_t pic_out;
+  x264_nal_t *nal;
+  int i_size;
+#ifndef X264_ENC_NALS
+  int nal_size;
+  gint i;
+#endif
+  int encoder_return;
+  GstFlowReturn ret;
+  GstClockTime duration;
+  guint8 *data;
+  GstEvent *forcekeyunit_event = NULL;
+
+  if (G_UNLIKELY (encoder->x264enc == NULL))
+    return GST_FLOW_NOT_NEGOTIATED;
+
+  GST_OBJECT_LOCK (encoder);
+  if (encoder->reconfig) {
+    encoder->reconfig = FALSE;
+    if (x264_encoder_reconfig (encoder->x264enc, &encoder->x264param) < 0)
+      GST_WARNING_OBJECT (encoder, "Could not reconfigure");
+  }
+  GST_OBJECT_UNLOCK (encoder);
+
+  encoder_return = x264_encoder_encode (encoder->x264enc,
+      &nal, i_nal, pic_in, &pic_out);
+
+  if (encoder_return < 0) {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 frame failed."),
+        ("x264_encoder_encode return code=%d", encoder_return));
+    return GST_FLOW_ERROR;
+  }
+
+  if (!*i_nal) {
+    return GST_FLOW_OK;
+  }
+#ifndef X264_ENC_NALS
+  i_size = 0;
+  for (i = 0; i < *i_nal; i++) {
+    gint i_data = encoder->buffer_size - i_size - 4;
+
+    if (i_data < nal[i].i_payload * 2) {
+      encoder->buffer_size += 2 * nal[i].i_payload;
+      encoder->buffer = g_realloc (encoder->buffer, encoder->buffer_size);
+      i_data = encoder->buffer_size - i_size - 4;
+    }
+
+    nal_size =
+        x264_nal_encode (encoder->buffer + i_size + 4, &i_data, 0, &nal[i]);
+    g_assert (encoder->current_byte_stream !=
+        GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY);
+    if (encoder->current_byte_stream == GST_X264_ENC_STREAM_FORMAT_BYTE_STREAM)
+      GST_WRITE_UINT32_BE (encoder->buffer + i_size, 1);
+    else
+      GST_WRITE_UINT32_BE (encoder->buffer + i_size, nal_size);
+
+    i_size += nal_size + 4;
+  }
+  data = encoder->buffer;
+#else
+  i_size = encoder_return;
+  data = nal[0].p_payload;
+#endif
+
+  in_buf = g_queue_pop_head (encoder->delay);
+  if (in_buf) {
+    duration = GST_BUFFER_DURATION (in_buf);
+    gst_buffer_unref (in_buf);
+  } else {
+    GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, (NULL),
+        ("Timestamp queue empty."));
+    return GST_FLOW_ERROR;
+  }
+
+  if (!send)
+    return GST_FLOW_OK;
+
+  ret = gst_pad_alloc_buffer (encoder->srcpad, GST_BUFFER_OFFSET_NONE,
+      i_size, GST_PAD_CAPS (encoder->srcpad), &out_buf);
+  if (ret != GST_FLOW_OK)
+    return ret;
+
+  memcpy (GST_BUFFER_DATA (out_buf), data, i_size);
+  GST_BUFFER_SIZE (out_buf) = i_size;
+
+  /* PTS */
+  /* FIXME ??: maybe use DTS here, since:
+   * - it is so practiced by other encoders,
+   * - downstream (e.g. muxers) might not enjoy non-monotone timestamps,
+   *   whereas a decoder can also deal with DTS */
+  GST_BUFFER_TIMESTAMP (out_buf) = pic_out.i_pts;
+  GST_BUFFER_DURATION (out_buf) = duration;
+
+#ifdef X264_INTRA_REFRESH
+  if (pic_out.b_keyframe) {
+#else
+  if (pic_out.i_type == X264_TYPE_IDR) {
+#endif
+    GST_BUFFER_FLAG_UNSET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT);
+  } else {
+    GST_BUFFER_FLAG_SET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT);
+  }
+
+  GST_OBJECT_LOCK (encoder);
+  forcekeyunit_event = encoder->forcekeyunit_event;
+  encoder->forcekeyunit_event = NULL;
+  GST_OBJECT_UNLOCK (encoder);
+  if (forcekeyunit_event) {
+    gst_structure_set (forcekeyunit_event->structure,
+        "timestamp", G_TYPE_UINT64, GST_BUFFER_TIMESTAMP (out_buf), NULL);
+    gst_pad_push_event (encoder->srcpad, forcekeyunit_event);
+  }
+
+  return gst_pad_push (encoder->srcpad, out_buf);
+}
+
+static void
+gst_x264_enc_flush_frames (GstX264Enc * encoder, gboolean send)
+{
+  GstFlowReturn flow_ret;
+  gint i_nal;
+
+  /* first send the remaining frames */
+  if (encoder->x264enc)
+    do {
+      flow_ret = gst_x264_enc_encode_frame (encoder, NULL, &i_nal, send);
+#ifdef X264_DELAYED_FRAMES_API
+    } while (flow_ret == GST_FLOW_OK
+        && x264_encoder_delayed_frames (encoder->x264enc) > 0);
+#else
+      /* note that this doesn't flush all frames for > 1 delayed frame */
+    } while (flow_ret == GST_FLOW_OK && i_nal > 0);
+#endif
+
+  /* in any case, make sure the delay queue is emptied */
+  while (!g_queue_is_empty (encoder->delay))
+    gst_buffer_unref (g_queue_pop_head (encoder->delay));
+}
+
+static GstStateChangeReturn
+gst_x264_enc_change_state (GstElement * element, GstStateChange transition)
+{
+  GstX264Enc *encoder = GST_X264_ENC (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+  ret = parent_class->change_state (element, transition);
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    goto out;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_x264_enc_flush_frames (encoder, FALSE);
+      gst_x264_enc_close_encoder (encoder);
+      gst_x264_enc_reset (encoder);
+      break;
+    default:
+      break;
+  }
+
+out:
+  return ret;
+}
+
+
+
+static void
+gst_x264_enc_reconfig (GstX264Enc * encoder)
+{
+  switch (encoder->pass) {
+    case GST_X264_ENC_PASS_QUAL:
+      encoder->x264param.rc.f_rf_constant = encoder->quantizer;
+      encoder->x264param.rc.i_vbv_max_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_buffer_size
+          = encoder->x264param.rc.i_vbv_max_bitrate
+          * encoder->vbv_buf_capacity / 1000;
+      break;
+    case GST_X264_ENC_PASS_CBR:
+    case GST_X264_ENC_PASS_PASS1:
+    case GST_X264_ENC_PASS_PASS2:
+    case GST_X264_ENC_PASS_PASS3:
+    default:
+      encoder->x264param.rc.i_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_max_bitrate = encoder->bitrate;
+      encoder->x264param.rc.i_vbv_buffer_size
+          = encoder->x264param.rc.i_vbv_max_bitrate
+          * encoder->vbv_buf_capacity / 1000;
+      break;
+  }
+
+  encoder->reconfig = TRUE;
+}
+
+static void
+gst_x264_enc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstX264Enc *encoder;
+  GstState state;
+
+  const gchar *partitions = NULL;
+
+  encoder = GST_X264_ENC (object);
+
+  GST_OBJECT_LOCK (encoder);
+  /* state at least matters for sps, bytestream, pass,
+   * and so by extension ... */
+
+  state = GST_STATE (encoder);
+  if ((state != GST_STATE_READY && state != GST_STATE_NULL) &&
+      !(pspec->flags & GST_PARAM_MUTABLE_PLAYING))
+    goto wrong_state;
+
+  switch (prop_id) {
+    case ARG_PASS:
+      encoder->pass = g_value_get_enum (value);
+      break;
+    case ARG_QUANTIZER:
+      encoder->quantizer = g_value_get_uint (value);
+      gst_x264_enc_reconfig (encoder);
+      break;
+    case ARG_BITRATE:
+      encoder->bitrate = g_value_get_uint (value);
+      gst_x264_enc_reconfig (encoder);
+      break;
+    case ARG_VBV_BUF_CAPACITY:
+      encoder->vbv_buf_capacity = g_value_get_uint (value);
+      gst_x264_enc_reconfig (encoder);
+      break;
+    case ARG_SPEED_PRESET:
+      encoder->speed_preset = g_value_get_enum (value);
+      break;
+    case ARG_PSY_TUNE:
+      encoder->psy_tune = g_value_get_enum (value);
+      break;
+    case ARG_TUNE:
+      encoder->tune = g_value_get_flags (value);
+      break;
+    case ARG_PROFILE:
+      encoder->profile = g_value_get_enum (value);
+      break;
+    case ARG_OPTION_STRING:
+      g_string_assign (encoder->option_string_prop, g_value_get_string (value));
+      break;
+    case ARG_THREADS:
+      encoder->threads = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":threads=%d",
+          encoder->threads);
+      break;
+    case ARG_SLICED_THREADS:
+      encoder->sliced_threads = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":sliced-threads=%d",
+          encoder->sliced_threads);
+      break;
+    case ARG_SYNC_LOOKAHEAD:
+      encoder->sync_lookahead = g_value_get_int (value);
+      g_string_append_printf (encoder->option_string, ":sync-lookahead=%d",
+          encoder->sync_lookahead);
+      break;
+    case ARG_STATS_FILE:
+    case ARG_MULTIPASS_CACHE_FILE:
+      if (encoder->mp_cache_file)
+        g_free (encoder->mp_cache_file);
+      encoder->mp_cache_file = g_value_dup_string (value);
+      g_string_append_printf (encoder->option_string, ":stats=%s",
+          encoder->mp_cache_file);
+      break;
+    case ARG_BYTE_STREAM:
+      encoder->byte_stream = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":annexb=%d",
+          encoder->byte_stream);
+      break;
+    case ARG_INTRA_REFRESH:
+      encoder->intra_refresh = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":intra-refresh=%d",
+          encoder->intra_refresh);
+      break;
+    case ARG_ME:
+      encoder->me = g_value_get_enum (value);
+      g_string_append_printf (encoder->option_string, ":me=%s",
+          x264_motion_est_names[encoder->me]);
+      break;
+    case ARG_SUBME:
+      encoder->subme = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":subme=%d",
+          encoder->subme);
+      break;
+    case ARG_ANALYSE:
+      encoder->analyse = g_value_get_flags (value);
+      partitions = gst_x264_enc_build_partitions (encoder->analyse);
+      if (partitions) {
+        g_string_append_printf (encoder->option_string, ":partitions=%s",
+            partitions);
+        g_free ((gpointer) partitions);
+      }
+      break;
+    case ARG_DCT8x8:
+      encoder->dct8x8 = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":8x8dct=%d",
+          encoder->dct8x8);
+      break;
+    case ARG_REF:
+      encoder->ref = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":ref=%d", encoder->ref);
+      break;
+    case ARG_BFRAMES:
+      encoder->bframes = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":bframes=%d",
+          encoder->bframes);
+      break;
+    case ARG_B_ADAPT:
+      encoder->b_adapt = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":b-adapt=%d",
+          encoder->b_adapt);
+      break;
+    case ARG_B_PYRAMID:
+      encoder->b_pyramid = g_value_get_boolean (value);
+#ifdef X264_B_PYRAMID
+      g_string_append_printf (encoder->option_string, ":b-pyramid=%s",
+          x264_b_pyramid_names[encoder->b_pyramid]);
+#else
+      g_string_append_printf (encoder->option_string, ":b-pyramid=%d",
+          encoder->b_pyramid);
+#endif /* X264_B_PYRAMID */
+      break;
+    case ARG_WEIGHTB:
+      encoder->weightb = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":weightb=%d",
+          encoder->weightb);
+      break;
+    case ARG_SPS_ID:
+      encoder->sps_id = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":sps-id=%d",
+          encoder->sps_id);
+      break;
+    case ARG_AU_NALU:
+      encoder->au_nalu = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":aud=%d",
+          encoder->au_nalu);
+      break;
+    case ARG_TRELLIS:
+      encoder->trellis = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":trellis=%d",
+          encoder->trellis);
+      break;
+    case ARG_KEYINT_MAX:
+      encoder->keyint_max = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":keyint=%d",
+          encoder->keyint_max);
+      break;
+    case ARG_CABAC:
+      encoder->cabac = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":cabac=%d",
+          encoder->cabac);
+      break;
+    case ARG_QP_MIN:
+      encoder->qp_min = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":qpmin=%d",
+          encoder->qp_min);
+      break;
+    case ARG_QP_MAX:
+      encoder->qp_max = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":qpmax=%d",
+          encoder->qp_max);
+      break;
+    case ARG_QP_STEP:
+      encoder->qp_step = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":qpstep=%d",
+          encoder->qp_step);
+      break;
+    case ARG_IP_FACTOR:
+      encoder->ip_factor = g_value_get_float (value);
+      g_string_append_printf (encoder->option_string, ":ip-factor=%f",
+          encoder->ip_factor);
+      break;
+    case ARG_PB_FACTOR:
+      encoder->pb_factor = g_value_get_float (value);
+      g_string_append_printf (encoder->option_string, ":pb-factor=%f",
+          encoder->pb_factor);
+      break;
+    case ARG_RC_MB_TREE:
+      encoder->mb_tree = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":mbtree=%d",
+          encoder->mb_tree);
+      break;
+    case ARG_RC_LOOKAHEAD:
+      encoder->rc_lookahead = g_value_get_int (value);
+      g_string_append_printf (encoder->option_string, ":rc-lookahead=%d",
+          encoder->rc_lookahead);
+      break;
+    case ARG_NR:
+      encoder->noise_reduction = g_value_get_uint (value);
+      g_string_append_printf (encoder->option_string, ":nr=%d",
+          encoder->noise_reduction);
+      break;
+    case ARG_INTERLACED:
+      encoder->interlaced = g_value_get_boolean (value);
+      g_string_append_printf (encoder->option_string, ":interlaced=%d",
+          encoder->interlaced);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  GST_OBJECT_UNLOCK (encoder);
+  return;
+
+  /* ERROR */
+wrong_state:
+  {
+    GST_WARNING_OBJECT (encoder, "setting property in wrong state");
+    GST_OBJECT_UNLOCK (encoder);
+  }
+}
+
+static void
+gst_x264_enc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstX264Enc *encoder;
+
+  encoder = GST_X264_ENC (object);
+
+  GST_OBJECT_LOCK (encoder);
+  switch (prop_id) {
+    case ARG_THREADS:
+      g_value_set_uint (value, encoder->threads);
+      break;
+    case ARG_SLICED_THREADS:
+      g_value_set_boolean (value, encoder->sliced_threads);
+      break;
+    case ARG_SYNC_LOOKAHEAD:
+      g_value_set_int (value, encoder->sync_lookahead);
+      break;
+    case ARG_PASS:
+      g_value_set_enum (value, encoder->pass);
+      break;
+    case ARG_QUANTIZER:
+      g_value_set_uint (value, encoder->quantizer);
+      break;
+    case ARG_STATS_FILE:
+    case ARG_MULTIPASS_CACHE_FILE:
+      g_value_set_string (value, encoder->mp_cache_file);
+      break;
+    case ARG_BYTE_STREAM:
+      g_value_set_boolean (value, encoder->byte_stream);
+      break;
+    case ARG_BITRATE:
+      g_value_set_uint (value, encoder->bitrate);
+      break;
+    case ARG_INTRA_REFRESH:
+      g_value_set_boolean (value, encoder->intra_refresh);
+      break;
+    case ARG_VBV_BUF_CAPACITY:
+      g_value_set_uint (value, encoder->vbv_buf_capacity);
+      break;
+    case ARG_ME:
+      g_value_set_enum (value, encoder->me);
+      break;
+    case ARG_SUBME:
+      g_value_set_uint (value, encoder->subme);
+      break;
+    case ARG_ANALYSE:
+      g_value_set_flags (value, encoder->analyse);
+      break;
+    case ARG_DCT8x8:
+      g_value_set_boolean (value, encoder->dct8x8);
+      break;
+    case ARG_REF:
+      g_value_set_uint (value, encoder->ref);
+      break;
+    case ARG_BFRAMES:
+      g_value_set_uint (value, encoder->bframes);
+      break;
+    case ARG_B_ADAPT:
+      g_value_set_boolean (value, encoder->b_adapt);
+      break;
+    case ARG_B_PYRAMID:
+      g_value_set_boolean (value, encoder->b_pyramid);
+      break;
+    case ARG_WEIGHTB:
+      g_value_set_boolean (value, encoder->weightb);
+      break;
+    case ARG_SPS_ID:
+      g_value_set_uint (value, encoder->sps_id);
+      break;
+    case ARG_AU_NALU:
+      g_value_set_boolean (value, encoder->au_nalu);
+      break;
+    case ARG_TRELLIS:
+      g_value_set_boolean (value, encoder->trellis);
+      break;
+    case ARG_KEYINT_MAX:
+      g_value_set_uint (value, encoder->keyint_max);
+      break;
+    case ARG_QP_MIN:
+      g_value_set_uint (value, encoder->qp_min);
+      break;
+    case ARG_QP_MAX:
+      g_value_set_uint (value, encoder->qp_max);
+      break;
+    case ARG_QP_STEP:
+      g_value_set_uint (value, encoder->qp_step);
+      break;
+    case ARG_CABAC:
+      g_value_set_boolean (value, encoder->cabac);
+      break;
+    case ARG_IP_FACTOR:
+      g_value_set_float (value, encoder->ip_factor);
+      break;
+    case ARG_PB_FACTOR:
+      g_value_set_float (value, encoder->pb_factor);
+      break;
+    case ARG_RC_MB_TREE:
+      g_value_set_boolean (value, encoder->mb_tree);
+      break;
+    case ARG_RC_LOOKAHEAD:
+      g_value_set_int (value, encoder->rc_lookahead);
+      break;
+    case ARG_NR:
+      g_value_set_uint (value, encoder->noise_reduction);
+      break;
+    case ARG_INTERLACED:
+      g_value_set_boolean (value, encoder->interlaced);
+      break;
+    case ARG_SPEED_PRESET:
+      g_value_set_enum (value, encoder->speed_preset);
+      break;
+    case ARG_PSY_TUNE:
+      g_value_set_enum (value, encoder->psy_tune);
+      break;
+    case ARG_TUNE:
+      g_value_set_flags (value, encoder->tune);
+      break;
+    case ARG_PROFILE:
+      g_value_set_enum (value, encoder->profile);
+      break;
+    case ARG_OPTION_STRING:
+      g_value_set_string (value, encoder->option_string_prop->str);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  GST_OBJECT_UNLOCK (encoder);
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (x264_enc_debug, "x264enc", 0,
+      "h264 encoding element");
+
+  return gst_element_register (plugin, "x264enc",
+      GST_RANK_PRIMARY, GST_TYPE_X264_ENC);
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "x264",
+    "libx264-based H264 plugins",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/x264/gstx264enc.h b/ext/x264/gstx264enc.h
new file mode 100644 (file)
index 0000000..a2f1145
--- /dev/null
@@ -0,0 +1,135 @@
+/* GStreamer H264 encoder plugin
+ * Copyright (C) 2005 Michal Benes <michal.benes@itonis.tv>
+ * Copyright (C) 2005 Josef Zlomek <josef.zlomek@itonis.tv>
+ *
+ * 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_X264_ENC_H__
+#define __GST_X264_ENC_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include "_stdint.h"
+#include <x264.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_X264_ENC \
+  (gst_x264_enc_get_type())
+#define GST_X264_ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_X264_ENC,GstX264Enc))
+#define GST_X264_ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_X264_ENC,GstX264EncClass))
+#define GST_IS_X264_ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_X264_ENC))
+#define GST_IS_X264_ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_X264_ENC))
+
+typedef struct _GstX264Enc GstX264Enc;
+typedef struct _GstX264EncClass GstX264EncClass;
+
+struct _GstX264Enc
+{
+  GstElement element;
+
+  /*< private >*/
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  x264_t *x264enc;
+  x264_param_t x264param;
+  gint current_byte_stream;
+
+  /* properties */
+  guint threads;
+  gboolean sliced_threads;
+  gint sync_lookahead;
+  gint pass;
+  guint quantizer;
+  gchar *mp_cache_file;
+  gboolean byte_stream;
+  guint bitrate;
+  gboolean intra_refresh;
+  gint me;
+  guint subme;
+  guint analyse;
+  gboolean dct8x8;
+  guint ref;
+  guint bframes;
+  gboolean b_adapt;
+  gboolean b_pyramid;
+  gboolean weightb;
+  guint sps_id;
+  gboolean au_nalu;
+  gboolean trellis;
+  guint vbv_buf_capacity;
+  guint keyint_max;
+  gboolean cabac;
+  gfloat ip_factor;
+  gfloat pb_factor;
+  guint qp_min;
+  guint qp_max;
+  guint qp_step;
+  gboolean mb_tree;
+  gint rc_lookahead;
+  guint noise_reduction;
+  gboolean interlaced;
+  gint speed_preset;
+  gint psy_tune;
+  guint tune;
+  GString *tunings;
+  gint profile;
+  GString *option_string_prop; /* option-string property */
+  GString *option_string; /* used by set prop */
+
+  /* input description */
+  GstVideoFormat format;
+  gint width, height;
+  gint fps_num, fps_den;
+  gint par_num, par_den;
+  /* cache some format properties */
+  gint stride[4], offset[4];
+  gint image_size;
+
+  /* for b-frame delay handling */
+  GQueue *delay;
+
+  guint8 *buffer;
+  gulong buffer_size;
+
+  gint i_type;
+  GstEvent *forcekeyunit_event;
+
+  /* configuration changed  while playing */
+  gboolean reconfig;
+
+  /* from the downstream caps */
+  const gchar *peer_profile;
+  gboolean peer_intra_profile;
+  const x264_level_t *peer_level;
+};
+
+struct _GstX264EncClass
+{
+  GstElementClass parent_class;
+};
+
+GType gst_x264_enc_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_X264_ENC_H__ */
diff --git a/gst-libs/Makefile.am b/gst-libs/Makefile.am
new file mode 100644 (file)
index 0000000..58ceccf
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = gst 
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
new file mode 100644 (file)
index 0000000..a99a43e
--- /dev/null
@@ -0,0 +1,723 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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-libs
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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 = gst 
+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 gst-libs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst-libs/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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
new file mode 100644 (file)
index 0000000..17887bf
--- /dev/null
@@ -0,0 +1 @@
+noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
new file mode 100644 (file)
index 0000000..b1268b3
--- /dev/null
@@ -0,0 +1,574 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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-libs/gst
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
+all: all-am
+
+.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 gst-libs/gst/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst-libs/gst/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
+
+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 $(HEADERS)
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+       clean-libtool ctags 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 maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags 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 --git a/gst-libs/gst/gettext.h b/gst-libs/gst/gettext.h
new file mode 100644 (file)
index 0000000..59902b3
--- /dev/null
@@ -0,0 +1,69 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+   Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
+
+   This program 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, or (at your option)
+   any later version.
+
+   This program 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 program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option.  */
+#ifdef ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions.  */
+# include <libintl.h>
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+   chokes if dcgettext is defined as a macro.  So include it now, to make
+   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
+   as well because people using "gettext.h" will not include <libintl.h>,
+   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+   is OK.  */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Disabled NLS.
+   The casts to 'const char *' serve the purpose of producing warnings
+   for invalid uses of the value returned from these functions.
+   On pre-ANSI systems without 'const', the config.h file is supposed to
+   contain "#define const".  */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+    ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
+
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+   extraction of messages, but does not call gettext().  The run-time
+   translation is done at a different place in the code.
+   The argument, String, should be a literal string.  Concatenated strings
+   and other string expressions won't work.
+   The macro's expansion is not parenthesized, so that it is suitable as
+   initializer for static 'char[]' or 'const char[]' variables.  */
+#define gettext_noop(String) String
+
+#endif /* _LIBGETTEXT_H */
diff --git a/gst-libs/gst/glib-compat-private.h b/gst-libs/gst/glib-compat-private.h
new file mode 100644 (file)
index 0000000..b9248e6
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * glib-compat.c
+ * Functions copied from glib 2.10
+ *
+ * Copyright 2005 David Schleef <ds@schleef.org>
+ *
+ * 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 __GLIB_COMPAT_PRIVATE_H__
+#define __GLIB_COMPAT_PRIVATE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#if !GLIB_CHECK_VERSION(2,25,0)
+
+#if defined (_MSC_VER) && !defined(_WIN64)
+typedef struct _stat32 GStatBuf;
+#else
+typedef struct stat GStatBuf;
+#endif
+
+#endif
+
+#if GLIB_CHECK_VERSION(2,26,0)
+#define GLIB_HAS_GDATETIME
+#endif
+
+/* See bug #651514 */
+#if GLIB_CHECK_VERSION(2,29,5)
+#define G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE(a,b,c) \
+    g_atomic_pointer_compare_and_exchange ((a),(b),(c))
+#define G_ATOMIC_INT_COMPARE_AND_EXCHANGE(a,b,c) \
+    g_atomic_int_compare_and_exchange ((a),(b),(c))
+#else
+#define G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE(a,b,c) \
+    g_atomic_pointer_compare_and_exchange ((volatile gpointer *)(a),(b),(c))
+#define G_ATOMIC_INT_COMPARE_AND_EXCHANGE(a,b,c) \
+    g_atomic_int_compare_and_exchange ((volatile int *)(a),(b),(c))
+#endif
+
+/* See bug #651514 */
+#if GLIB_CHECK_VERSION(2,29,5)
+#define G_ATOMIC_INT_ADD(a,b) g_atomic_int_add ((a),(b))
+#else
+#define G_ATOMIC_INT_ADD(a,b) g_atomic_int_exchange_and_add ((a),(b))
+#endif
+
+/* copies */
+
+#if GLIB_CHECK_VERSION (2, 31, 0)
+#define g_mutex_new gst_g_mutex_new
+static inline GMutex *
+gst_g_mutex_new (void)
+{
+  GMutex *mutex = g_slice_new (GMutex);
+  g_mutex_init (mutex);
+  return mutex;
+}
+#define g_mutex_free gst_g_mutex_free
+static inline void
+gst_g_mutex_free (GMutex *mutex)
+{
+  g_mutex_clear (mutex);
+  g_slice_free (GMutex, mutex);
+}
+#define g_static_rec_mutex_init gst_g_static_rec_mutex_init
+static inline void
+gst_g_static_rec_mutex_init (GStaticRecMutex *mutex)
+{
+  static const GStaticRecMutex init_mutex = G_STATIC_REC_MUTEX_INIT;
+
+  *mutex = init_mutex;
+}
+#define g_cond_new gst_g_cond_new
+static inline GCond *
+gst_g_cond_new (void)
+{
+  GCond *cond = g_slice_new (GCond);
+  g_cond_init (cond);
+  return cond;
+}
+#define g_cond_free gst_g_cond_free
+static inline void
+gst_g_cond_free (GCond *cond)
+{
+  g_cond_clear (cond);
+  g_slice_free (GCond, cond);
+}
+#define g_cond_timed_wait gst_g_cond_timed_wait
+static inline gboolean
+gst_g_cond_timed_wait (GCond *cond, GMutex *mutex, GTimeVal *abs_time)
+{
+  gint64 end_time;
+
+  if (abs_time == NULL) {
+    g_cond_wait (cond, mutex);
+    return TRUE;
+  }
+
+  end_time = abs_time->tv_sec;
+  end_time *= 1000000;
+  end_time += abs_time->tv_usec;
+
+  /* would be nice if we had clock_rtoffset, but that didn't seem to
+   * make it into the kernel yet...
+   */
+  /* if CLOCK_MONOTONIC is not defined then g_get_montonic_time() and
+   * g_get_real_time() are returning the same clock and we'd add ~0
+   */
+  end_time += g_get_monotonic_time () - g_get_real_time ();
+  return g_cond_wait_until (cond, mutex, end_time);
+}
+#endif /* GLIB_CHECK_VERSION (2, 31, 0) */
+
+/* adaptations */
+
+G_END_DECLS
+
+#endif
diff --git a/gst-libs/gst/gst-i18n-plugin.h b/gst-libs/gst/gst-i18n-plugin.h
new file mode 100644 (file)
index 0000000..2c37a61
--- /dev/null
@@ -0,0 +1,37 @@
+/* GStreamer
+ * Copyright (C) 2004 Thomas Vander Stichele <thomas@apestaart.org>
+ *
+ * gst-i18n-plugins.h: internationalization macros for the GStreamer plugins
+ *
+ * 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_I18N_PLUGIN_H__
+#define __GST_I18N_PLUGIN_H__
+
+#include <locale.h>  /* some people need it and some people don't */
+#include "gettext.h" /* included with gettext distribution and copied */
+
+#ifndef GETTEXT_PACKAGE
+#error You must define GETTEXT_PACKAGE before including this header.
+#endif
+
+/* we want to use shorthand _() for translating and N_() for marking */
+#define _(String) dgettext (GETTEXT_PACKAGE, String)
+#define N_(String) gettext_noop (String)
+/* FIXME: if we need it, we can add Q_ as well, like in glib */
+
+#endif /* __GST_I18N_PLUGIN_H__ */
diff --git a/gst-plugins-ugly.doap b/gst-plugins-ugly.doap
new file mode 100644 (file)
index 0000000..90dfefb
--- /dev/null
@@ -0,0 +1,264 @@
+<Project
+  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+  xmlns="http://usefulinc.com/ns/doap#"
+  xmlns:foaf="http://xmlns.com/foaf/0.1/"
+  xmlns:admin="http://webns.net/mvcb/">
+
+ <name>GStreamer Ugly Plug-ins</name>
+ <shortname>gst-plugins-ugly</shortname>
+ <homepage rdf:resource="http://gstreamer.freedesktop.org/modules/gst-plugins-ugly.html" />
+ <created>2005-09-06</created>
+ <shortdesc xml:lang="en">
+a set of good-quality plug-ins with license or patent problems.
+</shortdesc>
+ <description xml:lang="en">
+GStreamer Ugly Plug-ins is a set of plug-ins that have good quality and correct
+functionality, but distributing them might pose problems. The license on either
+the plug-ins or the supporting libraries might not be how we'd like. The code
+might be widely known to present patent problems.
+ </description>
+ <category></category>
+ <bug-database rdf:resource="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&amp;component=gst-plugins-ugly" />
+ <screenshots></screenshots>
+ <mailing-list rdf:resource="http://lists.sourceforge.net/lists/listinfo/gstreamer-devel/" />
+ <programming-language>C</programming-language>
+ <license rdf:resource="http://usefulinc.com/doap/licenses/lgpl"/>
+ <download-page rdf:resource="http://gstreamer.freedesktop.org/download/" />
+
+ <repository>
+   <GitRepository>
+     <location rdf:resource="git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly"/>
+     <browse rdf:resource="http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly"/>
+   </GitRepository>
+ </repository> 
+
+ <release>
+  <Version>
+   <revision>0.10.19</revision>
+   <branch>0.10</branch>
+   <name>Stronger</name>
+   <created>2012-02-20</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.19.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.19.tar.gz" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.19.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.18</revision>
+   <branch>0.10</branch>
+   <name>Extra Life</name>
+   <created>2011-05-10</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.18.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.18.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.17</revision>
+   <branch>0.10</branch>
+   <name>Raised by Wolves</name>
+   <created>2011-01-21</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.17.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.17.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.16</revision>
+   <branch>0.10</branch>
+   <name>Because He Knows the Time is Short</name>
+   <created>2010-09-02</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.16.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.16.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.15</revision>
+   <branch>0.10</branch>
+   <name>Englishman in a Baseball Cap</name>
+   <created>2010-05-30</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.15.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.15.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.14</revision>
+   <branch>0.10</branch>
+   <name>Run Rabbit</name>
+   <created>2010-03-06</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.14.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.14.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.13</revision>
+   <branch>0.10</branch>
+   <name>Appointed Point</name>
+   <created>2009-10-21</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.13.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.13.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.12</revision>
+   <branch>0.10</branch>
+   <name>Moving Along The Highway</name>
+   <created>2009-06-18</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.12.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.12.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.11</revision>
+   <branch>0.10</branch>
+   <name>Their swords and their knives</name>
+   <created>2009-03-20</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.11.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.11.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.10</revision>
+   <branch>0.10</branch>
+   <name>Under the House</name>
+   <created>2008-11-19</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.10.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.10.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.9</revision>
+   <branch>0.10</branch>
+   <name>Back The Way It Was</name>
+   <created>2008-08-26</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.9.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.9.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.8</revision>
+   <branch>0.10</branch>
+   <name>And yet</name>
+   <created>2008-05-21</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.8.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.8.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.7</revision>
+   <branch>0.10</branch>
+   <name>I Cheated Time</name>
+   <created>2008-01-20</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.7.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.7.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.6</revision>
+   <branch>0.10</branch>
+   <name>The Sacrifice</name>
+   <created>2007-06-19</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.6.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.6.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.5</revision>
+   <branch>0.10</branch>
+   <name>She said</name>
+   <created>2006-12-13</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.5.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.5.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.4</revision>
+   <branch>0.10</branch>
+   <name>Metal Molly</name>
+   <created>2006-08-14</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.4.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.4.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.3</revision>
+   <branch>0.10</branch>
+   <name>Late Plane</name>
+   <created>2006-03-31</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.3.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.3.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.2</revision>
+   <branch>0.10</branch>
+   <name>Season to Taste</name>
+   <created>2006-02-20</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.2.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.2.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.1</revision>
+   <branch>0.10</branch>
+   <name>Peng</name>
+   <created>2006-01-13</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.1.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.1.tar.gz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
+   <revision>0.10.0</revision>
+   <branch>0.10</branch>
+   <name>Brie</name>
+   <created>2005-12-05</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.0.tar.bz2" />
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.0.tar.gz" />
+  </Version>
+ </release>
+
+ <maintainer>
+  <foaf:Person>
+     <foaf:name>Wim Taymans</foaf:name>
+     <foaf:mbox_sha1sum>0d93fde052812d51a05fd86de9bdbf674423daa2</foaf:mbox_sha1sum>
+  </foaf:Person>
+ </maintainer>
+
+</Project>
diff --git a/gst-plugins-ugly.manifest b/gst-plugins-ugly.manifest
new file mode 100755 (executable)
index 0000000..a76fdba
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+       <request>
+               <domain name="_" />
+       </request>
+</manifest>
diff --git a/gst-plugins-ugly.spec.in b/gst-plugins-ugly.spec.in
new file mode 100644 (file)
index 0000000..20a9f53
--- /dev/null
@@ -0,0 +1,129 @@
+%define majorminor  @GST_MAJORMINOR@
+%define gstreamer   gstreamer
+
+%define gst_minver  0.10.0
+
+Name:          %{gstreamer}-plugins-ugly
+Version:       @VERSION@
+Release:       @PACKAGE_VERSION_RELEASE@.gst
+Summary:       GStreamer streaming media framework "ugly" plug-ins
+
+Group:                 Applications/Multimedia
+License:       LGPL
+URL:           http://gstreamer.freedesktop.org/
+Vendor:         GStreamer Backpackers Team <package@gstreamer.freedesktop.org>
+Source:         http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-%{version}.tar.gz
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Requires:      %{gstreamer} >= %{gst_minver}
+BuildRequires:         %{gstreamer}-devel >= %{gst_minver}
+BuildRequires:  gcc-c++
+
+@USE_SIDPLAY_TRUE@BuildRequires:  libsidplay-devel >= 1.36.0
+@USE_A52DEC_TRUE@BuildRequires:  a52dec-devel >= 0.7.3
+@USE_DVDREAD_TRUE@BuildRequires:  libdvdread-devel >= 0.9.0
+@USE_LAME_TRUE@BuildRequires:  lame-devel >= 3.89
+@USE_MAD_TRUE@BuildRequires:  libmad-devel >= 0.15.0
+@USE_MPEG2DEC_TRUE@BuildRequires:  mpeg2dec-devel >= 0.4.0
+
+@USE_SIDPLAY_TRUE@Provides:       gstreamer-sid = %{version}-%{release}
+@USE_LAME_TRUE@Provides:      gstreamer-lame = %{version}-%{release}
+@USE_MAD_TRUE@Provides:       gstreamer-mad = %{version}-%{release}
+@USE_A52DEC_TRUE@Provides:       gstreamer-a52dec = %{version}-%{release}
+@USE_DVDREAD_TRUE@Provides:       gstreamer-dvdread = %{version}-%{release}
+@USE_MPEG2DEC_TRUE@Provides:       gstreamer-mpeg2dec = %{version}-%{release}
+
+@USE_X264_TRUE@Requires: x264-libs
+
+%description
+GStreamer is a streaming media framework, based on graphs of elements which
+operate on media data.
+
+This package contains well-written plug-ins that can't be shipped in
+gstreamer-plugins-good because:
+- the license is not LGPL
+- the license of the library is not LGPL
+- there are possible licensing issues with the code.
+
+# %package devel
+# Summary:        Development files for GStreamer Ugly Plugins
+# Group:          Development/Libraries
+#
+# Requires:       %{name} = %{version}-%{release}
+#
+# %description devel
+# GStreamer is a streaming media framework, based on graphs of elements which
+# operate on media data.
+#
+# This package contains well-written plug-ins that can't be shipped in
+# gstreamer-plugins-good because:
+# - the license is not LGPL
+# - the license of the library is not LGPL
+# - there are possible licensing issues with the code.
+# 
+# This package contains development files and documentation.
+
+%prep
+%setup -q -n gst-plugins-ugly-%{version}
+%build
+%configure \
+  --enable-debug \
+  --enable-gtk-doc 
+
+make %{?_smp_mflags}
+                                                                                
+%install
+rm -rf $RPM_BUILD_ROOT
+
+# Install doc temporarily in order to be included later by rpm
+%makeinstall
+
+# Clean out files that should not be part of the rpm.
+rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/gstreamer-%{majorminor}/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+
+%find_lang gst-plugins-ugly-%{majorminor}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f gst-plugins-ugly-%{majorminor}.lang
+%defattr(-, root, root, -)
+%doc AUTHORS COPYING README REQUIREMENTS gst-plugins-ugly.doap
+%{_libdir}/gstreamer-%{majorminor}/libgstasf.so
+%{_libdir}/gstreamer-%{majorminor}/libgstdvdlpcmdec.so
+%{_libdir}/gstreamer-%{majorminor}/libgstiec958.so
+%{_libdir}/gstreamer-%{majorminor}/libgstmpegaudioparse.so
+%{_libdir}/gstreamer-%{majorminor}/libgstmpegstream.so
+%{_libdir}/gstreamer-%{majorminor}/libgstrmdemux.so
+%{_libdir}/gstreamer-%{majorminor}/libgstdvdsub.so
+
+# plugins with dependencies
+@USE_SIDPLAY_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstsid.so
+@USE_LAME_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstlame.so
+@USE_MAD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmad.so
+@USE_A52DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsta52dec.so
+@USE_DVDREAD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstdvdread.so
+@USE_MPEG2DEC_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmpeg2dec.so
+@USE_TWOLAME_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgsttwolame.so
+%doc %{_datadir}/gtk-doc/html/gst-plugins-ugly-plugins-%{majorminor}/*
+@USE_X264_TRUE@%{_datadir}/gstreamer-%{majorminor}/presets/GstX264Enc.prs
+@USE_X264_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstx264.so
+@USE_AMRNB_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstamrnb.so
+@USE_AMRWB_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstamrwbdec.so
+@USE_AMRNB_TRUE@%{_datadir}/gstreamer-%{majorminor}/presets/GstAmrnbEnc.prs
+@USE_CDIO_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstcdio.so
+
+
+%changelog
+* Fri Jun 5 2009 Jan Schmidt <thaytan at mad dot scientist dot com>
+- Move x264enc plugin from -bad
+
+* Fri Dec 15 2006 Thomas Vander Stichele <thomas at apestaart dot org>
+- further cleanup
+- add .doap file
+
+* Fri Sep 02 2005 Thomas Vander Stichele <thomas at apestaart dot org>
+- clean out for split into ugly
diff --git a/gst/Makefile.am b/gst/Makefile.am
new file mode 100644 (file)
index 0000000..db96293
--- /dev/null
@@ -0,0 +1,4 @@
+SUBDIRS=$(GST_PLUGINS_SELECTED)
+DIST_SUBDIRS=$(GST_PLUGINS_ALL)
+
+include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/gst/Makefile.in b/gst/Makefile.in
new file mode 100644 (file)
index 0000000..69b60ad
--- /dev/null
@@ -0,0 +1,739 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+
+# include this at the end of $MODULE/ext/Makefile.am to force make to
+# build subdirectories in parallel when make -jN is used. We will end up
+# descending into all subdirectories a second time, but only after the first
+# (parallel) run has finished, so it should go right through the second time.
+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@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/common/parallel-subdirs.mak
+subdir = gst
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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 = $(GST_PLUGINS_SELECTED)
+DIST_SUBDIRS = $(GST_PLUGINS_ALL)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/parallel-subdirs.mak $(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/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/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_srcdir)/common/parallel-subdirs.mak:
+
+$(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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+.PHONY: independent-subdirs $(SUBDIRS)
+
+independent-subdirs: $(SUBDIRS)
+
+$(SUBDIRS):
+       $(MAKE) -C $@
+
+all-recursive: independent-subdirs
+
+# 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 --git a/gst/asfdemux/Makefile.am b/gst/asfdemux/Makefile.am
new file mode 100644 (file)
index 0000000..5598ae2
--- /dev/null
@@ -0,0 +1,27 @@
+plugin_LTLIBRARIES = libgstasf.la
+
+libgstasf_la_SOURCES = gstasfdemux.c gstasf.c asfheaders.c asfpacket.c gstrtpasfdepay.c gstrtspwms.c
+libgstasf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(DRM_CLIENT_CFLAGS) $(DRM_TRUSTED_CFLAGS)
+libgstasf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+               -lgstriff-@GST_MAJORMINOR@ -lgstrtsp-@GST_MAJORMINOR@ -lgstsdp-@GST_MAJORMINOR@ \
+               -lgstrtp-@GST_MAJORMINOR@ -lgstaudio-@GST_MAJORMINOR@ -lgsttag-@GST_MAJORMINOR@ \
+               $(GST_BASE_LIBS) $(GST_LIBS) \
+               $(WIN32_LIBS) $(DRM_CLIENT_LIBS) $(DRM_TRUSTED_LIBS)
+libgstasf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstasf_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstasfdemux.h asfheaders.h asfpacket.h gstrtpasfdepay.h gstrtspwms.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstasfdemux -:SHARED libgstasfdemux \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstasfdemux_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstasfdemux_la_CFLAGS) \
+        -:LDFLAGS $(libgstasfdemux_la_LDFLAGS) \
+                  $(libgstasfdemux_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/asfdemux/Makefile.in b/gst/asfdemux/Makefile.in
new file mode 100644 (file)
index 0000000..40d4e8c
--- /dev/null
@@ -0,0 +1,784 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/asfdemux
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstasf_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstasf_la_OBJECTS = libgstasf_la-gstasfdemux.lo \
+       libgstasf_la-gstasf.lo libgstasf_la-asfheaders.lo \
+       libgstasf_la-asfpacket.lo libgstasf_la-gstrtpasfdepay.lo \
+       libgstasf_la-gstrtspwms.lo
+libgstasf_la_OBJECTS = $(am_libgstasf_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstasf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstasf_la_CFLAGS) $(CFLAGS) \
+       $(libgstasf_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstasf_la_SOURCES)
+DIST_SOURCES = $(libgstasf_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstasf.la
+libgstasf_la_SOURCES = gstasfdemux.c gstasf.c asfheaders.c asfpacket.c gstrtpasfdepay.c gstrtspwms.c
+libgstasf_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstasf_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+               -lgstriff-@GST_MAJORMINOR@ -lgstrtsp-@GST_MAJORMINOR@ -lgstsdp-@GST_MAJORMINOR@ \
+               -lgstrtp-@GST_MAJORMINOR@ -lgstaudio-@GST_MAJORMINOR@ -lgsttag-@GST_MAJORMINOR@ \
+               $(GST_BASE_LIBS) $(GST_LIBS) \
+               $(WIN32_LIBS)
+
+libgstasf_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstasf_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstasfdemux.h asfheaders.h asfpacket.h gstrtpasfdepay.h gstrtspwms.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/asfdemux/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/asfdemux/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
+libgstasf.la: $(libgstasf_la_OBJECTS) $(libgstasf_la_DEPENDENCIES) $(EXTRA_libgstasf_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstasf_la_LINK) -rpath $(plugindir) $(libgstasf_la_OBJECTS) $(libgstasf_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-asfheaders.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-asfpacket.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-gstasf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-gstasfdemux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-gstrtpasfdepay.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstasf_la-gstrtspwms.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstasf_la-gstasfdemux.lo: gstasfdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-gstasfdemux.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-gstasfdemux.Tpo -c -o libgstasf_la-gstasfdemux.lo `test -f 'gstasfdemux.c' || echo '$(srcdir)/'`gstasfdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-gstasfdemux.Tpo $(DEPDIR)/libgstasf_la-gstasfdemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstasfdemux.c' object='libgstasf_la-gstasfdemux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-gstasfdemux.lo `test -f 'gstasfdemux.c' || echo '$(srcdir)/'`gstasfdemux.c
+
+libgstasf_la-gstasf.lo: gstasf.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-gstasf.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-gstasf.Tpo -c -o libgstasf_la-gstasf.lo `test -f 'gstasf.c' || echo '$(srcdir)/'`gstasf.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-gstasf.Tpo $(DEPDIR)/libgstasf_la-gstasf.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstasf.c' object='libgstasf_la-gstasf.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-gstasf.lo `test -f 'gstasf.c' || echo '$(srcdir)/'`gstasf.c
+
+libgstasf_la-asfheaders.lo: asfheaders.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-asfheaders.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-asfheaders.Tpo -c -o libgstasf_la-asfheaders.lo `test -f 'asfheaders.c' || echo '$(srcdir)/'`asfheaders.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-asfheaders.Tpo $(DEPDIR)/libgstasf_la-asfheaders.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='asfheaders.c' object='libgstasf_la-asfheaders.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-asfheaders.lo `test -f 'asfheaders.c' || echo '$(srcdir)/'`asfheaders.c
+
+libgstasf_la-asfpacket.lo: asfpacket.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-asfpacket.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-asfpacket.Tpo -c -o libgstasf_la-asfpacket.lo `test -f 'asfpacket.c' || echo '$(srcdir)/'`asfpacket.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-asfpacket.Tpo $(DEPDIR)/libgstasf_la-asfpacket.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='asfpacket.c' object='libgstasf_la-asfpacket.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-asfpacket.lo `test -f 'asfpacket.c' || echo '$(srcdir)/'`asfpacket.c
+
+libgstasf_la-gstrtpasfdepay.lo: gstrtpasfdepay.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-gstrtpasfdepay.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-gstrtpasfdepay.Tpo -c -o libgstasf_la-gstrtpasfdepay.lo `test -f 'gstrtpasfdepay.c' || echo '$(srcdir)/'`gstrtpasfdepay.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-gstrtpasfdepay.Tpo $(DEPDIR)/libgstasf_la-gstrtpasfdepay.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstrtpasfdepay.c' object='libgstasf_la-gstrtpasfdepay.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-gstrtpasfdepay.lo `test -f 'gstrtpasfdepay.c' || echo '$(srcdir)/'`gstrtpasfdepay.c
+
+libgstasf_la-gstrtspwms.lo: gstrtspwms.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -MT libgstasf_la-gstrtspwms.lo -MD -MP -MF $(DEPDIR)/libgstasf_la-gstrtspwms.Tpo -c -o libgstasf_la-gstrtspwms.lo `test -f 'gstrtspwms.c' || echo '$(srcdir)/'`gstrtspwms.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstasf_la-gstrtspwms.Tpo $(DEPDIR)/libgstasf_la-gstrtspwms.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstrtspwms.c' object='libgstasf_la-gstrtspwms.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstasf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstasf_la_CFLAGS) $(CFLAGS) -c -o libgstasf_la-gstrtspwms.lo `test -f 'gstrtspwms.c' || echo '$(srcdir)/'`gstrtspwms.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstasfdemux -:SHARED libgstasfdemux \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstasfdemux_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstasfdemux_la_CFLAGS) \
+        -:LDFLAGS $(libgstasfdemux_la_LDFLAGS) \
+                  $(libgstasfdemux_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/asfdemux/README b/gst/asfdemux/README
new file mode 100644 (file)
index 0000000..d864eb0
--- /dev/null
@@ -0,0 +1,88 @@
+ASF Demuxer Plugin
+==================
+
+Overview
+--------
+
+This plugin is a demuxer for Microsoft's ASF Advanced Streaming Format
+or ASF [1]. This demuxer only supports ASF v1.0 since the vast
+majority of existing ASF files use that version. The specification
+has been derived from a third party source [2] without reference to
+the original.
+
+Design
+------
+
+The ASF format can carry any combination of audio, video or
+'ASF_Command_Media' streams. For simplicity it is assumed that each
+file can carry up to 16 audio streams and 16 video streams. These are
+implemented as dynamic pads and appear as appropriate once the file
+headers have been parsed.
+
+    (-------------------------)
+    ! asfdemux                !
+    !                    (video/raw0)---
+    !                    (video/raw1)---
+    !                    (video/raw...
+  --- src                     !
+    !                    (audio/raw0)---
+    !                    (audio/raw1)---
+    !                    (audio/raw...
+    !                         !
+    (-------------------------)
+
+
+Known stream fourccs are:
+
+Type           Tags            MIME type
+------------------------------------------
+H263           H263 I263       video/x-h263
+MJPEG          MJPG            image/jpeg      
+MPEG4          DIVX divx DX50  video/mpeg
+               XVID xvid mp4s  
+               MP4S M4S2 m4s2
+               0x04000000
+MSMPEG4V1      MPG4            video/mpeg
+MSMPEG4V2      MP42            video/mpeg
+MSMPEG4V3      MP43 DIV3       video/mpeg
+WMV1           WMV1            video/x-wmv, wmvversion = (int) 1
+WMV2           WMV2            video/x-wmv, wmvversion = (int) 2
+WMV3           WMV3            video/x-wmv, wmvversion = (int) 3
+WMA1           WMA1            audio/x-wma, wmaversion = (int) 1
+WMA2           WMA2            audio/x-wma, wmaversion = (int) 2
+                               audio/x-wma, wmaversion = (int) 3
+
+These video stream headers is very similar to that used in the AVI
+format as are the audio stream headers. In addition the content types
+are basically the same also so, for compatibility with existing
+plugins the src pads are set up as video/x-msvideo. This enables
+compatibility with the ffmpeg plugin.
+
+The demuxing process begins with the loop function gst_asf_demux_loop
+and parses the file in a recursive tree as follows:
+
+       gst_asf_demux_loop()
+       +-> gst_asf_demux_process_object()   <----
+           +-> gst_asf_demux_process_stream()    \
+           |-> gst_asf_demux_process_file()      |
+           |-> gst_asf_demux_process_header()  --+
+           |-> gst_asf_demux_process_data()
+               +-> gst_asf_demux_process_segment()
+                   +-> gst_asf_demux_process_chunk()
+
+Todo
+----
+
+- Support for ASF v2.0
+- Support for command media streams
+
+
+
+References
+----------
+
+[1] Microsoft. ASF Specification - Windows Media Technologies. 
+http://www.microsoft.com/windows/windowsmedia/format/asfspec.aspx (v01.20.01e, September 2003)
+
+[2] divx at euro.ru. ASF format version 1.0,
+reconstruction. http://avifile.sourceforge.net/asf-1.0.htm
diff --git a/gst/asfdemux/asfheaders.c b/gst/asfdemux/asfheaders.c
new file mode 100644 (file)
index 0000000..ae07639
--- /dev/null
@@ -0,0 +1,196 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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.
+ */
+
+#include <gst/gst.h>
+
+#include "asfheaders.h"
+
+const ASFGuidHash asf_payload_ext_guids[] = {
+  {ASF_PAYLOAD_EXTENSION_DURATION, "ASF_PAYLOAD_EXTENSION_DURATION",
+        {0xC6BD9450, 0x4907867F, 0x79C7A383, 0xAD33B721}
+      },
+  {ASF_PAYLOAD_EXTENSION_SYSTEM_CONTENT, "ASF_PAYLOAD_EXTENSION_SYSTEM_CONTENT",
+      {0xD590DC20, 0x436C07BC, 0xBBF3f79C, 0xDCA4F1FB}},
+  {ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO,
+        "ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO",
+      {0x1b1ee554, 0x4bc8f9ea, 0x6b371a82, 0xb8c4e474}},
+  {ASF_PAYLOAD_EXTENSION_UNDEFINED, "ASF_PAYLOAD_EXTENSION_UNDEFINED",
+        {0, 0, 0, 0}
+      }
+};
+
+const ASFGuidHash asf_correction_guids[] = {
+  {ASF_CORRECTION_ON, "ASF_CORRECTION_ON",
+        {0xBFC3CD50, 0x11CF618F, 0xAA00B28B, 0x20E2B400}
+      },
+  {ASF_CORRECTION_OFF, "ASF_CORRECTION_OFF",
+        {0x20FB5700, 0x11CF5B55, 0x8000FDA8, 0x2B445C5F}
+      },
+  /* CHECKME: where does this 49F1A440... GUID come from? (tpm) */
+  {ASF_CORRECTION_OFF, "ASF_CORRECTION_OFF",
+        {0x49F1A440, 0x11D04ECE, 0xA000ACA3, 0xF64803C9}
+      },
+  {ASF_CORRECTION_UNDEFINED, "ASF_CORRECTION_UNDEFINED",
+        {0, 0, 0, 0}
+      }
+};
+
+const ASFGuidHash asf_stream_guids[] = {
+  {ASF_STREAM_VIDEO, "ASF_STREAM_VIDEO",
+        {0xBC19EFC0, 0x11CF5B4D, 0x8000FDA8, 0x2B445C5F}
+      },
+  {ASF_STREAM_AUDIO, "ASF_STREAM_AUDIO",
+        {0xF8699E40, 0x11CF5B4D, 0x8000FDA8, 0x2B445C5F}
+      },
+  {ASF_STREAM_UNDEFINED, "ASF_STREAM_UNDEFINED",
+        {0, 0, 0, 0}
+      }
+};
+
+const ASFGuidHash asf_object_guids[] = {
+  {ASF_OBJ_STREAM, "ASF_OBJ_STREAM",
+        {0xB7DC0791, 0x11CFA9B7, 0xC000E68E, 0x6553200C}
+      },
+  {ASF_OBJ_DATA, "ASF_OBJ_DATA",
+        {0x75b22636, 0x11cf668e, 0xAA00D9a6, 0x6Cce6200}
+      },
+  {ASF_OBJ_FILE, "ASF_OBJ_FILE",
+        {0x8CABDCA1, 0x11CFA947, 0xC000E48E, 0x6553200C}
+      },
+  {ASF_OBJ_HEADER, "ASF_OBJ_HEADER",
+        {0x75B22630, 0x11CF668E, 0xAA00D9A6, 0x6CCE6200}
+      },
+  {ASF_OBJ_CONCEAL_NONE, "ASF_OBJ_CONCEAL_NONE",
+        {0x20fb5700, 0x11cf5b55, 0x8000FDa8, 0x2B445C5f}
+      },
+  {ASF_OBJ_COMMENT, "ASF_OBJ_COMMENT",
+        {0x75b22633, 0x11cf668e, 0xAA00D9a6, 0x6Cce6200}
+      },
+  {ASF_OBJ_CODEC_COMMENT, "ASF_OBJ_CODEC_COMMENT",
+        {0x86D15240, 0x11D0311D, 0xA000A4A3, 0xF64803C9}
+      },
+  {ASF_OBJ_CODEC_COMMENT1, "ASF_OBJ_CODEC_COMMENT1",
+        {0x86d15241, 0x11d0311d, 0xA000A4a3, 0xF64803c9}
+      },
+  {ASF_OBJ_SIMPLE_INDEX, "ASF_OBJ_SIMPLE_INDEX",
+        {0x33000890, 0x11cfe5b1, 0xA000F489, 0xCB4903c9}
+      },
+  {ASF_OBJ_INDEX, "ASF_OBJ_INDEX",
+        {0xd6e229d3, 0x11d135da, 0xa0003490, 0xbe4903c9}
+      },
+  {ASF_OBJ_HEAD1, "ASF_OBJ_HEAD1",
+        {0x5fbf03b5, 0x11cfa92e, 0xC000E38e, 0x6553200c}
+      },
+  {ASF_OBJ_HEAD2, "ASF_OBJ_HEAD2",
+        {0xabd3d211, 0x11cfa9ba, 0xC000E68e, 0x6553200c}
+      },
+  {ASF_OBJ_PADDING, "ASF_OBJ_PADDING",
+        {0x1806D474, 0x4509CADF, 0xAB9ABAA4, 0xE8AA96CB}
+      },
+  {ASF_OBJ_BITRATE_PROPS, "ASF_OBJ_BITRATE_PROPS",
+        {0x7bf875ce, 0x11d1468d, 0x6000828d, 0xb2a2c997}
+      },
+  {ASF_OBJ_EXT_CONTENT_DESC, "ASF_OBJ_EXT_CONTENT_DESC",
+        {0xd2d0a440, 0x11d2e307, 0xa000f097, 0x50a85ec9}
+      },
+  {ASF_OBJ_BITRATE_MUTEX, "ASF_OBJ_BITRATE_MUTEX",
+        {0xd6e229dc, 0x11d135da, 0xa0003490, 0xbe4903c9}
+      },
+  {ASF_OBJ_LANGUAGE_LIST, "ASF_OBJ_LANGUAGE_LIST",
+        {0x7c4346a9, 0x4bfcefe0, 0x3e3929b2, 0x855c41de}
+      },
+  {ASF_OBJ_METADATA_OBJECT, "ASF_OBJ_METADATA_OBJECT",
+        {0xc5f8cbea, 0x48775baf, 0x8caa6784, 0xca4cfa44}
+      },
+  {ASF_OBJ_EXTENDED_STREAM_PROPS, "ASF_OBJ_EXTENDED_STREAM_PROPS",
+        {0x14e6a5cb, 0x4332c672, 0x69a99983, 0x5a5b0652}
+      },
+  {ASF_OBJ_COMPATIBILITY, "ASF_OBJ_COMPATIBILITY",
+        {0x26f18b5d, 0x47ec4584, 0x650e5f9f, 0xc952041f}
+      },
+  {ASF_OBJ_INDEX_PLACEHOLDER, "ASF_OBJ_INDEX_PLACEHOLDER",
+        {0xd9aade20, 0x4f9c7c17, 0x558528bc, 0xa2e298dd}
+      },
+  {ASF_OBJ_INDEX_PARAMETERS, "ASF_OBJ_INDEX_PARAMETERS",
+        {0xd6e229df, 0x11d135da, 0xa0003490, 0xbe4903c9}
+      },
+  {ASF_OBJ_ADVANCED_MUTUAL_EXCLUSION, "ASF_OBJ_ADVANCED_MUTUAL_EXCLUSION",
+        {0xa08649cf, 0x46704775, 0x356e168a, 0xcd667535}
+      },
+  {ASF_OBJ_STREAM_PRIORITIZATION, "ASF_OBJ_STREAM_PRIORITIZATION",
+        {0xd4fed15b, 0x454f88d3, 0x5cedf081, 0x249e9945}
+      },
+  {ASF_OBJ_CONTENT_ENCRYPTION, "ASF_OBJ_CONTENT_ENCRYPTION",
+        {0x2211b3fb, 0x11d2bd23, 0xa000b7b4, 0x6efc55c9}
+      },
+  {ASF_OBJ_EXT_CONTENT_ENCRYPTION, "ASF_OBJ_EXT_CONTENT_ENCRYPTION",
+        {0x298ae614, 0x4c172622, 0xe0da35b9, 0x9c28e97e}
+      },
+  {ASF_OBJ_DIGITAL_SIGNATURE_OBJECT, "ASF_OBJ_DIGITAL_SIGNATURE_OBJECT",
+        {0x2211b3fc, 0x11d2bd23, 0xa000b7b4, 0x6efc55c9}
+      },
+  {ASF_OBJ_SCRIPT_COMMAND, "ASF_OBJ_SCRIPT_COMMAND",
+        {0x1efb1a30, 0x11d00b62, 0xa0009ba3, 0xf64803c9}
+      },
+  {ASF_OBJ_MARKER, "ASF_OBJ_MARKER",
+        {0xf487cd01, 0x11cfa951, 0xc000e68e, 0x6553200c}
+      },
+  /* This guid is definitely used for encryption (mentioned in MS smooth
+   * streaming docs) in new PlayReady (c) (tm) (wtf) system, but I haven't
+   * found a proper name for it.
+   * (Edward Jan 11 2011).*/
+  {ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT, "ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT",
+        {0x9a04f079, 0x42869840, 0x5be692ab, 0x955f88e0}
+      },
+  {ASF_OBJ_UNDEFINED, "ASF_OBJ_UNDEFINED",
+        {0, 0, 0, 0}
+      }
+};
+
+guint32
+gst_asf_identify_guid (const ASFGuidHash * guids, ASFGuid * guid)
+{
+  gint i;
+
+  for (i = 0; guids[i].obj_id != ASF_OBJ_UNDEFINED; ++i) {
+    if (guids[i].guid.v1 == guid->v1 &&
+        guids[i].guid.v2 == guid->v2 &&
+        guids[i].guid.v3 == guid->v3 && guids[i].guid.v4 == guid->v4) {
+      return guids[i].obj_id;
+    }
+  }
+
+  /* The base case if none is found */
+  return ASF_OBJ_UNDEFINED;
+}
+
+const gchar *
+gst_asf_get_guid_nick (const ASFGuidHash * guids, guint32 obj_id)
+{
+  gint i;
+
+  for (i = 0; guids[i].obj_id != ASF_OBJ_UNDEFINED; ++i) {
+    if (guids[i].obj_id == obj_id) {
+      return guids[i].obj_id_str;
+    }
+  }
+
+  /* The base case if none is found */
+  return "ASF_OBJ_UNDEFINED";
+}
diff --git a/gst/asfdemux/asfheaders.h b/gst/asfdemux/asfheaders.h
new file mode 100644 (file)
index 0000000..87233a7
--- /dev/null
@@ -0,0 +1,179 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __ASFHEADERS_H__
+#define __ASFHEADERS_H__
+
+G_BEGIN_DECLS
+
+#define ASFDEMUX_ENABLE_PLAYREADY
+typedef struct {
+  guint32 v1;
+  guint32 v2;
+  guint32 v3;
+  guint32 v4;
+} ASFGuid;
+  
+
+
+typedef struct {
+  guint8       obj_id;
+  const gchar *obj_id_str;
+  ASFGuid      guid;
+} ASFGuidHash;
+
+typedef enum {
+  ASF_OBJ_UNDEFINED = 0,
+  ASF_OBJ_STREAM,
+  ASF_OBJ_DATA,
+  ASF_OBJ_FILE,
+  ASF_OBJ_HEADER,
+  ASF_OBJ_CONCEAL_NONE,
+  ASF_OBJ_COMMENT,
+  ASF_OBJ_CODEC_COMMENT,
+  ASF_OBJ_CODEC_COMMENT1,
+  ASF_OBJ_SIMPLE_INDEX,
+  ASF_OBJ_INDEX,
+  ASF_OBJ_HEAD1,
+  ASF_OBJ_HEAD2,
+  ASF_OBJ_PADDING,
+  ASF_OBJ_BITRATE_PROPS,
+  ASF_OBJ_EXT_CONTENT_DESC,
+  ASF_OBJ_BITRATE_MUTEX,
+  ASF_OBJ_LANGUAGE_LIST,
+  ASF_OBJ_METADATA_OBJECT,
+  ASF_OBJ_EXTENDED_STREAM_PROPS,
+  ASF_OBJ_COMPATIBILITY,
+  ASF_OBJ_INDEX_PLACEHOLDER,
+  ASF_OBJ_INDEX_PARAMETERS,
+  ASF_OBJ_ADVANCED_MUTUAL_EXCLUSION,
+  ASF_OBJ_STREAM_PRIORITIZATION,
+  ASF_OBJ_CONTENT_ENCRYPTION,
+  ASF_OBJ_EXT_CONTENT_ENCRYPTION,
+  ASF_OBJ_DIGITAL_SIGNATURE_OBJECT,
+  ASF_OBJ_SCRIPT_COMMAND,
+  ASF_OBJ_MARKER,
+  ASF_OBJ_UNKNOWN_ENCRYPTION_OBJECT
+} AsfObjectID;
+
+typedef enum {
+  ASF_STREAM_UNDEFINED = 0,
+  ASF_STREAM_VIDEO,
+  ASF_STREAM_AUDIO
+} AsfStreamType;
+
+typedef enum {
+  ASF_CORRECTION_UNDEFINED = 0,
+  ASF_CORRECTION_ON,
+  ASF_CORRECTION_OFF
+} AsfCorrectionType;
+
+typedef enum {
+  ASF_PAYLOAD_EXTENSION_UNDEFINED = 0,
+  ASF_PAYLOAD_EXTENSION_DURATION,
+  ASF_PAYLOAD_EXTENSION_SYSTEM_CONTENT,
+  ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO,
+} AsfPayloadExtensionID;
+
+extern const ASFGuidHash asf_payload_ext_guids[];
+
+extern const ASFGuidHash asf_correction_guids[];
+
+extern const ASFGuidHash asf_stream_guids[];
+
+extern const ASFGuidHash asf_object_guids[];
+
+/* GUID utilities */
+guint32        gst_asf_identify_guid (const ASFGuidHash * guids,
+                                      ASFGuid           * guid);
+
+const gchar   *gst_asf_get_guid_nick (const ASFGuidHash * guids,
+                                      guint32             obj_id);
+
+struct _asf_stream_audio {
+  guint16 codec_tag;
+  guint16 channels;
+  guint32 sample_rate;
+  guint32 byte_rate;
+  guint16 block_align;
+  guint16 word_size;
+  guint16 size;
+};
+
+typedef struct _asf_stream_audio asf_stream_audio;
+
+struct _asf_stream_video {
+  guint32 width;
+  guint32 height;
+  guint8  unknown;
+  guint16 size;
+};
+
+typedef struct _asf_stream_video asf_stream_video;
+
+struct _asf_stream_video_format {
+  guint32 size;
+  guint32 width;
+  guint32 height;
+  guint16 planes;
+  guint16 depth;
+  guint32 tag;
+  guint32 image_size;
+  guint32 xpels_meter;
+  guint32 ypels_meter;
+  guint32 num_colors;
+  guint32 imp_colors;
+};
+
+typedef struct _asf_stream_video_format asf_stream_video_format;
+
+struct _asf_obj_data_correction {
+  guint8 type;
+  guint8 cycle;
+};
+
+typedef struct _asf_obj_data_correction asf_obj_data_correction;
+
+struct _asf_packet_info {
+  guint32  padsize;
+  guint8   replicsizetype;
+  guint8   fragoffsettype;
+  guint8   seqtype;
+  guint8   segsizetype;
+  gboolean multiple;
+  guint32  size_left;
+};
+
+typedef struct _asf_packet_info asf_packet_info;
+
+struct _asf_segment_info {
+  guint8   stream_number;
+  guint32  chunk_size;
+  guint32  frag_offset;
+  guint32  segment_size;
+  guint32  sequence;
+  guint32  frag_timestamp;
+  gboolean compressed;
+};
+
+typedef struct _asf_segment_info asf_segment_info;
+
+G_END_DECLS
+
+#endif /* __ASFHEADERS_H__ */
diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c
new file mode 100644 (file)
index 0000000..eeb9848
--- /dev/null
@@ -0,0 +1,598 @@
+/* GStreamer ASF/WMV/WMA demuxer
+ * Copyright (C) 2007 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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.
+ */
+
+/* FIXME:
+ *  file:///home/tpm/samples/video/asf//336370-regis-velo862.wmv
+ *  file:///home/tpm/samples/video/asf//336370-eichhoer.wmv
+ * throw errors (not always necessarily) in this code path
+ * (looks like they carry broken payloads/packets though) */
+
+#include "asfpacket.h"
+
+#include <gst/gstutils.h>
+#include <gst/gstinfo.h>
+#include <string.h>
+
+/* we are unlikely to deal with lengths > 2GB here any time soon, so just
+ * return a signed int and use that for error reporting */
+gint
+asf_packet_read_varlen_int (guint lentype_flags, guint lentype_bit_offset,
+    const guint8 ** p_data, guint * p_size)
+{
+  static const guint lens[4] = { 0, 1, 2, 4 };
+  guint len, val;
+
+  len = lens[(lentype_flags >> lentype_bit_offset) & 0x03];
+
+  /* will make caller bail out with a short read if there's not enough data */
+  if (G_UNLIKELY (*p_size < len)) {
+    GST_WARNING ("need %u bytes, but only %u bytes available", len, *p_size);
+    return -1;
+  }
+
+  switch (len) {
+    case 0:
+      val = 0;
+      break;
+    case 1:
+      val = GST_READ_UINT8 (*p_data);
+      break;
+    case 2:
+      val = GST_READ_UINT16_LE (*p_data);
+      break;
+    case 4:
+      val = GST_READ_UINT32_LE (*p_data);
+      break;
+    default:
+      g_assert_not_reached ();
+  }
+
+  *p_data += len;
+  *p_size -= len;
+
+  return (gint) val;
+}
+
+static GstBuffer *
+asf_packet_create_payload_buffer (AsfPacket * packet, const guint8 ** p_data,
+    guint * p_size, guint payload_len)
+{
+  guint off;
+
+  g_assert (payload_len <= *p_size);
+
+  off = (guint) (*p_data - GST_BUFFER_DATA (packet->buf));
+  g_assert (off < GST_BUFFER_SIZE (packet->buf));
+
+  *p_data += payload_len;
+  *p_size -= payload_len;
+
+  return gst_buffer_create_sub (packet->buf, off, payload_len);
+}
+
+static AsfPayload *
+asf_payload_find_previous_fragment (AsfPayload * payload, AsfStream * stream)
+{
+  AsfPayload *ret;
+
+  if (G_UNLIKELY (stream->payloads->len == 0)) {
+    GST_DEBUG ("No previous fragments to merge with for stream %u", stream->id);
+    return NULL;
+  }
+
+  ret =
+      &g_array_index (stream->payloads, AsfPayload, stream->payloads->len - 1);
+
+  if (G_UNLIKELY (ret->mo_size != payload->mo_size ||
+          ret->mo_number != payload->mo_number || ret->mo_offset != 0)) {
+    if (payload->mo_size != 0) {
+      GST_WARNING ("Previous fragment does not match continued fragment");
+      return NULL;
+    } else {
+      /* Warn about this case, but accept it anyway: files in the wild sometimes
+       * have continued packets where the subsequent fragments say that they're
+       * zero-sized. */
+      GST_WARNING ("Previous fragment found, but current fragment has "
+          "zero size, accepting anyway");
+    }
+  }
+#if 0
+  if (this_fragment->mo_offset + this_payload_len > first_fragment->mo_size) {
+    GST_WARNING ("Merged fragments would be bigger than the media object");
+    return FALSE;
+  }
+#endif
+
+  return ret;
+}
+
+/* TODO: if we have another payload already queued for this stream and that
+ * payload doesn't have a duration, maybe we can calculate a duration for it
+ * (if the previous timestamp is smaller etc. etc.) */
+static void
+gst_asf_payload_queue_for_stream (GstASFDemux * demux, AsfPayload * payload,
+    AsfStream * stream)
+{
+  GST_DEBUG_OBJECT (demux, "Got payload for stream %d ts:%" GST_TIME_FORMAT,
+      stream->id, GST_TIME_ARGS (payload->ts));
+  /* remember the first timestamp in the stream */
+  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (demux->first_ts) &&
+          GST_CLOCK_TIME_IS_VALID (payload->ts))) {
+    GST_DEBUG_OBJECT (demux, "first ts: %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (payload->ts));
+    demux->first_ts = payload->ts;
+  }
+
+  /* make timestamps start from 0 */
+  if (G_LIKELY (demux->first_ts < payload->ts))
+    payload->ts -= demux->first_ts;
+  else
+    payload->ts = 0;
+
+  /* remove any incomplete payloads that will never be completed */
+  while (stream->payloads->len > 0) {
+    AsfPayload *prev;
+    guint idx_last;
+
+    idx_last = stream->payloads->len - 1;
+    prev = &g_array_index (stream->payloads, AsfPayload, idx_last);
+
+    if (G_UNLIKELY (gst_asf_payload_is_complete (prev)))
+      break;
+
+    GST_DEBUG_OBJECT (demux, "Dropping incomplete fragmented media object "
+        "queued for stream %u", stream->id);
+
+    gst_buffer_replace (&prev->buf, NULL);
+    g_array_remove_index (stream->payloads, idx_last);
+
+    /* there's data missing, so there's a discontinuity now */
+    GST_BUFFER_FLAG_SET (payload->buf, GST_BUFFER_FLAG_DISCONT);
+  }
+
+  /* If we're about to queue a key frame that is before the segment start, we
+   * can ditch any previously queued payloads (which would also be before the
+   * segment start). This makes sure the decoder doesn't decode more than
+   * absolutely necessary after a seek (we don't push out payloads that are
+   * before the segment start until we have at least one that falls within the
+   * segment) */
+  if (G_UNLIKELY (GST_CLOCK_TIME_IS_VALID (payload->ts) &&
+          payload->ts < demux->segment.start && payload->keyframe)) {
+    GST_DEBUG_OBJECT (demux, "Queueing keyframe before segment start, removing"
+        " %u previously-queued payloads, which would be out of segment too and"
+        " hence don't have to be decoded", stream->payloads->len);
+    while (stream->payloads->len > 0) {
+      AsfPayload *last;
+      guint idx_last;
+
+      idx_last = stream->payloads->len - 1;
+      last = &g_array_index (stream->payloads, AsfPayload, idx_last);
+      gst_buffer_replace (&last->buf, NULL);
+      g_array_remove_index (stream->payloads, idx_last);
+    }
+
+    /* Mark discontinuity (should be done via stream->discont anyway though) */
+    GST_BUFFER_FLAG_SET (payload->buf, GST_BUFFER_FLAG_DISCONT);
+  }
+
+  /* remember the first queued timestamp for the segment */
+  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (demux->segment_ts) &&
+          GST_CLOCK_TIME_IS_VALID (payload->ts))) {
+    GST_DEBUG_OBJECT (demux, "segment ts: %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (payload->ts));
+    demux->segment_ts = payload->ts;
+    /* always note, but only determines segment when streaming */
+    if (demux->streaming)
+      gst_segment_set_seek (&demux->segment, demux->in_segment.rate,
+          GST_FORMAT_TIME, demux->segment.flags, GST_SEEK_TYPE_SET,
+          demux->segment_ts, GST_SEEK_TYPE_NONE, 0, NULL);
+  }
+
+  g_array_append_vals (stream->payloads, payload, 1);
+}
+
+void
+asf_payload_parse_replicated_data_extensions (AsfStream * stream,
+    AsfPayload * payload)
+{
+  AsfPayloadExtension *ext;
+  guint off;
+
+  if (!stream->ext_props.valid || stream->ext_props.payload_extensions == NULL)
+    return;
+
+  off = 8;
+  for (ext = stream->ext_props.payload_extensions; ext->len > 0; ++ext) {
+    if (G_UNLIKELY (off + ext->len > payload->rep_data_len)) {
+      GST_WARNING ("not enough replicated data for defined extensions");
+      return;
+    }
+    switch (ext->id) {
+      case ASF_PAYLOAD_EXTENSION_DURATION:
+        if (G_LIKELY (ext->len == 2)) {
+          payload->duration =
+              GST_READ_UINT16_LE (payload->rep_data + off) * GST_MSECOND;
+        } else {
+          GST_WARNING ("unexpected DURATION extensions len %u", ext->len);
+        }
+        break;
+      case ASF_PAYLOAD_EXTENSION_SYSTEM_CONTENT:
+        if (G_LIKELY (ext->len == 1)) {
+          guint8 data = payload->rep_data[off];
+
+          payload->interlaced = data & 0x1;
+          payload->rff = data & 0x8;
+          payload->tff = (data & 0x2) || !(data & 0x4);
+          GST_DEBUG ("SYSTEM_CONTENT: interlaced:%d, rff:%d, tff:%d",
+              payload->interlaced, payload->rff, payload->tff);
+        } else {
+          GST_WARNING ("unexpected SYSTEM_CONTE extensions len %u", ext->len);
+        }
+        break;
+      case ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO:
+        if (G_LIKELY (ext->len == 2)) {
+          payload->par_x = payload->rep_data[off];
+          payload->par_y = payload->rep_data[off + 1];
+          GST_DEBUG ("PAR %d / %d", payload->par_x, payload->par_y);
+        } else {
+          GST_WARNING ("unexpected SYSTEM_PIXEL_ASPECT_RATIO extensions len %u",
+              ext->len);
+        }
+        break;
+
+      default:
+        GST_WARNING ("UNKNOWN PAYLOAD EXTENSION !");
+        break;
+    }
+    off += ext->len;
+  }
+}
+
+static gboolean
+gst_asf_demux_parse_payload (GstASFDemux * demux, AsfPacket * packet,
+    gint lentype, const guint8 ** p_data, guint * p_size)
+{
+  AsfPayload payload = { 0, };
+  AsfStream *stream;
+  gboolean is_compressed;
+  guint payload_len;
+  guint stream_num;
+
+  if (G_UNLIKELY (*p_size < 1)) {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    return FALSE;
+  }
+
+  stream_num = GST_READ_UINT8 (*p_data) & 0x7f;
+  payload.keyframe = ((GST_READ_UINT8 (*p_data) & 0x80) != 0);
+
+  *p_data += 1;
+  *p_size -= 1;
+
+  payload.ts = GST_CLOCK_TIME_NONE;
+  payload.duration = GST_CLOCK_TIME_NONE;
+  payload.par_x = 0;
+  payload.par_y = 0;
+  payload.interlaced = FALSE;
+  payload.tff = FALSE;
+  payload.rff = FALSE;
+
+  payload.mo_number =
+      asf_packet_read_varlen_int (packet->prop_flags, 4, p_data, p_size);
+  payload.mo_offset =
+      asf_packet_read_varlen_int (packet->prop_flags, 2, p_data, p_size);
+  payload.rep_data_len =
+      asf_packet_read_varlen_int (packet->prop_flags, 0, p_data, p_size);
+
+  is_compressed = (payload.rep_data_len == 1);
+
+  GST_LOG_OBJECT (demux, "payload for stream %u", stream_num);
+  GST_LOG_OBJECT (demux, "keyframe   : %s", (payload.keyframe) ? "yes" : "no");
+  GST_LOG_OBJECT (demux, "compressed : %s", (is_compressed) ? "yes" : "no");
+
+  if (G_UNLIKELY (*p_size < payload.rep_data_len)) {
+    GST_WARNING_OBJECT (demux, "Short packet! rep_data_len=%u, size=%u",
+        payload.rep_data_len, *p_size);
+    return FALSE;
+  }
+
+  memcpy (payload.rep_data, *p_data,
+      MIN (sizeof (payload.rep_data), payload.rep_data_len));
+
+  *p_data += payload.rep_data_len;
+  *p_size -= payload.rep_data_len;
+
+  if (G_UNLIKELY (*p_size == 0)) {
+    GST_WARNING_OBJECT (demux, "payload without data!?");
+    return FALSE;
+  }
+
+  /* we use -1 as lentype for a single payload that's the size of the packet */
+  if (G_UNLIKELY ((lentype >= 0 && lentype <= 3))) {
+    payload_len = asf_packet_read_varlen_int (lentype, 0, p_data, p_size);
+    if (*p_size < payload_len) {
+      GST_WARNING_OBJECT (demux, "Short packet! payload_len=%u, size=%u",
+          payload_len, *p_size);
+      return FALSE;
+    }
+  } else {
+    payload_len = *p_size;
+  }
+
+  GST_LOG_OBJECT (demux, "payload length: %u", payload_len);
+
+  stream = gst_asf_demux_get_stream (demux, stream_num);
+
+  if (G_UNLIKELY (stream == NULL)) {
+    GST_WARNING_OBJECT (demux, "Payload for unknown stream %u, skipping",
+        stream_num);
+    if (*p_size < payload_len) {
+      *p_data += *p_size;
+      *p_size = 0;
+    } else {
+      *p_data += payload_len;
+      *p_size -= payload_len;
+    }
+    return TRUE;
+  }
+
+  if (G_UNLIKELY (!is_compressed)) {
+    GST_LOG_OBJECT (demux, "replicated data length: %u", payload.rep_data_len);
+
+    if (payload.rep_data_len >= 8) {
+      payload.mo_size = GST_READ_UINT32_LE (payload.rep_data);
+      payload.ts = GST_READ_UINT32_LE (payload.rep_data + 4) * GST_MSECOND;
+      if (G_UNLIKELY (payload.ts < demux->preroll))
+        payload.ts = 0;
+      else
+        payload.ts -= demux->preroll;
+      asf_payload_parse_replicated_data_extensions (stream, &payload);
+
+      GST_LOG_OBJECT (demux, "media object size   : %u", payload.mo_size);
+      GST_LOG_OBJECT (demux, "media object ts     : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload.ts));
+      GST_LOG_OBJECT (demux, "media object dur    : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload.duration));
+    } else if (payload.rep_data_len != 0) {
+      GST_WARNING_OBJECT (demux, "invalid replicated data length, very bad");
+      *p_data += payload_len;
+      *p_size -= payload_len;
+      return FALSE;
+    }
+
+    GST_LOG_OBJECT (demux, "media object offset : %u", payload.mo_offset);
+
+    GST_LOG_OBJECT (demux, "payload length: %u", payload_len);
+
+    if ((stream = gst_asf_demux_get_stream (demux, stream_num))
+        && payload_len) {
+      payload.buf = asf_packet_create_payload_buffer (packet, p_data, p_size,
+          payload_len);
+      /* n-th fragment of a fragmented media object? */
+      if (payload.mo_offset != 0) {
+        AsfPayload *prev;
+
+        if ((prev = asf_payload_find_previous_fragment (&payload, stream))) {
+          if (payload.mo_offset != GST_BUFFER_SIZE (prev->buf)) {
+            GST_WARNING_OBJECT (demux, "Offset doesn't match previous data?!");
+          }
+          /* note: buffer join/merge might not preserve buffer flags */
+          prev->buf = gst_buffer_join (prev->buf, payload.buf);
+          GST_LOG_OBJECT (demux, "Merged fragments, merged size: %u",
+              GST_BUFFER_SIZE (prev->buf));
+        } else {
+          gst_buffer_unref (payload.buf);
+        }
+        payload.buf = NULL;
+      } else {
+        gst_asf_payload_queue_for_stream (demux, &payload, stream);
+      }
+    }
+  } else {
+    const guint8 *payload_data;
+    GstClockTime ts, ts_delta;
+    guint num;
+
+    GST_LOG_OBJECT (demux, "Compressed payload, length=%u", payload_len);
+
+    payload_data = *p_data;
+
+    *p_data += payload_len;
+    *p_size -= payload_len;
+
+    ts = payload.mo_offset * GST_MSECOND;
+    if (G_UNLIKELY (ts < demux->preroll))
+      ts = 0;
+    else
+      ts -= demux->preroll;
+    ts_delta = payload.rep_data[0] * GST_MSECOND;
+
+    for (num = 0; payload_len > 0; ++num) {
+      guint sub_payload_len;
+
+      sub_payload_len = GST_READ_UINT8 (payload_data);
+
+      GST_LOG_OBJECT (demux, "subpayload #%u: len=%u, ts=%" GST_TIME_FORMAT,
+          num, sub_payload_len, GST_TIME_ARGS (ts));
+
+      ++payload_data;
+      --payload_len;
+
+      if (G_UNLIKELY (payload_len < sub_payload_len)) {
+        GST_WARNING_OBJECT (demux, "Short payload! %u bytes left", payload_len);
+        return FALSE;
+      }
+
+      if (G_LIKELY (sub_payload_len > 0)) {
+        payload.buf = asf_packet_create_payload_buffer (packet,
+            &payload_data, &payload_len, sub_payload_len);
+
+        payload.ts = ts;
+        if (G_LIKELY (ts_delta))
+          payload.duration = ts_delta;
+        else
+          payload.duration = GST_CLOCK_TIME_NONE;
+
+        gst_asf_payload_queue_for_stream (demux, &payload, stream);
+      }
+
+      ts += ts_delta;
+    }
+  }
+
+  return TRUE;
+}
+
+gboolean
+gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
+{
+  AsfPacket packet = { 0, };
+  const guint8 *data;
+  gboolean has_multiple_payloads;
+  gboolean ret = TRUE;
+  guint8 ec_flags, flags1;
+  guint size;
+
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+  GST_LOG_OBJECT (demux, "Buffer size: %u", size);
+
+  /* need at least two payload flag bytes, send time, and duration */
+  if (G_UNLIKELY (size < 2 + 4 + 2))
+    goto short_packet;
+
+  packet.buf = buf;
+
+  ec_flags = GST_READ_UINT8 (data);
+
+  /* skip optional error correction stuff */
+  if ((ec_flags & 0x80) != 0) {
+    guint ec_len_type, ec_len;
+
+    ec_len_type = (ec_flags & 0x60) >> 5;
+    if (ec_len_type == 0) {
+      ec_len = ec_flags & 0x0f;
+    } else {
+      GST_WARNING_OBJECT (demux, "unexpected error correction length type %u",
+          ec_len_type);
+      ec_len = 2;
+    }
+    GST_LOG_OBJECT (demux, "packet has error correction (%u bytes)", ec_len);
+
+    /* still need at least two payload flag bytes, send time, and duration */
+    if (size <= (1 + ec_len) + 2 + 4 + 2)
+      goto short_packet;
+
+    data += 1 + ec_len;
+    size -= 1 + ec_len;
+  }
+
+  /* parse payload info */
+  flags1 = GST_READ_UINT8 (data);
+  packet.prop_flags = GST_READ_UINT8 (data + 1);
+
+  data += 2;
+  size -= 2;
+
+  has_multiple_payloads = (flags1 & 0x01) != 0;
+
+  packet.length = asf_packet_read_varlen_int (flags1, 5, &data, &size);
+
+  packet.sequence = asf_packet_read_varlen_int (flags1, 1, &data, &size);
+
+  packet.padding = asf_packet_read_varlen_int (flags1, 3, &data, &size);
+
+  if (G_UNLIKELY (size < 6))
+    goto short_packet;
+
+  packet.send_time = GST_READ_UINT32_LE (data) * GST_MSECOND;
+  packet.duration = GST_READ_UINT16_LE (data + 4) * GST_MSECOND;
+
+  data += 4 + 2;
+  size -= 4 + 2;
+
+  GST_LOG_OBJECT (demux, "flags            : 0x%x", flags1);
+  GST_LOG_OBJECT (demux, "multiple payloads: %u", has_multiple_payloads);
+  GST_LOG_OBJECT (demux, "packet length    : %u", packet.length);
+  GST_LOG_OBJECT (demux, "sequence         : %u", packet.sequence);
+  GST_LOG_OBJECT (demux, "padding          : %u", packet.padding);
+  GST_LOG_OBJECT (demux, "send time        : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.send_time));
+  GST_LOG_OBJECT (demux, "duration         : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.duration));
+
+  if (G_UNLIKELY (packet.padding == (guint) - 1 || size < packet.padding))
+    goto short_packet;
+
+  size -= packet.padding;
+
+  /* adjust available size for parsing if there's less actual packet data for
+   * parsing than there is data in bytes (for sample see bug 431318) */
+  if (G_UNLIKELY (packet.length != 0 && packet.padding == 0
+          && packet.length < demux->packet_size)) {
+    GST_LOG_OBJECT (demux, "shortened packet with implicit padding, "
+        "adjusting available data size");
+    if (size < demux->packet_size - packet.length) {
+      /* the buffer is smaller than the implicit padding */
+      goto short_packet;
+    } else {
+      /* subtract the implicit padding */
+      size -= (demux->packet_size - packet.length);
+    }
+  }
+
+  if (has_multiple_payloads) {
+    guint i, num, lentype;
+
+    if (G_UNLIKELY (size < 1))
+      goto short_packet;
+
+    num = (GST_READ_UINT8 (data) & 0x3F) >> 0;
+    lentype = (GST_READ_UINT8 (data) & 0xC0) >> 6;
+
+    ++data;
+    --size;
+
+    GST_LOG_OBJECT (demux, "num payloads     : %u", num);
+
+    for (i = 0; i < num; ++i) {
+      GST_LOG_OBJECT (demux, "Parsing payload %u/%u, size left: %u", i + 1, num,
+          size);
+
+      ret = gst_asf_demux_parse_payload (demux, &packet, lentype, &data, &size);
+
+      if (G_UNLIKELY (!ret)) {
+        GST_WARNING_OBJECT (demux, "Failed to parse payload %u/%u", i + 1, num);
+        break;
+      }
+    }
+  } else {
+    GST_LOG_OBJECT (demux, "Parsing single payload");
+    ret = gst_asf_demux_parse_payload (demux, &packet, -1, &data, &size);
+  }
+
+  return ret;
+
+/* ERRORS */
+short_packet:
+  {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    return FALSE;
+  }
+}
diff --git a/gst/asfdemux/asfpacket.h b/gst/asfdemux/asfpacket.h
new file mode 100644 (file)
index 0000000..0b91f16
--- /dev/null
@@ -0,0 +1,69 @@
+/* GStreamer ASF/WMV/WMA demuxer
+ * Copyright (C) 2007 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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 __ASF_PACKET_H__
+#define __ASF_PACKET_H__
+
+#include <gst/gstbuffer.h>
+#include <gst/gstclock.h>
+
+#include "gstasfdemux.h"
+
+G_BEGIN_DECLS
+
+typedef struct {
+  gboolean      keyframe;          /* buffer flags might not survive merge.. */
+  guint         mo_number;         /* media object number (unused)           */
+  guint         mo_offset;         /* offset (timestamp for compressed data) */
+  guint         mo_size;           /* size of media-object-to-be, or 0       */
+  guint         rep_data_len;      /* should never be more than 256, since   */
+  guint8        rep_data[256];     /* the length should be stored in a byte  */
+  GstClockTime  ts;
+  GstClockTime  duration;          /* is not always available                */
+  guint8        par_x;             /* not always available (0:deactivated)   */
+  guint8        par_y;             /* not always available (0:deactivated)   */
+  gboolean      interlaced;        /* default: FALSE */
+  gboolean      tff;
+  gboolean      rff;
+  GstBuffer    *buf;
+} AsfPayload;
+
+typedef struct {
+  GstBuffer    *buf;
+  guint         length;            /* packet length (unused)               */
+  guint         padding;           /* length of padding at end of packet   */
+  guint         sequence;          /* sequence (unused)                    */
+  GstClockTime  send_time;
+  GstClockTime  duration;
+
+  guint8        prop_flags;        /* payload length types                 */
+} AsfPacket;
+
+gboolean   gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf);
+gint asf_packet_read_varlen_int (guint lentype_flags, guint lentype_bit_offset, const guint8 ** p_data, guint * p_size);
+void asf_payload_parse_replicated_data_extensions (AsfStream * stream, AsfPayload * payload);
+
+
+#define gst_asf_payload_is_complete(payload) \
+    (GST_BUFFER_SIZE ((payload)->buf) >= (payload)->mo_size)
+
+G_END_DECLS
+
+#endif /* __ASF_PACKET_H__ */
+
diff --git a/gst/asfdemux/gstasf.c b/gst/asfdemux/gstasf.c
new file mode 100644 (file)
index 0000000..830e832
--- /dev/null
@@ -0,0 +1,72 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 <gst/gst.h>
+#include <gst/riff/riff-read.h>
+#include "gst/gst-i18n-plugin.h"
+
+#include "gstasfdemux.h"
+#include "gstrtspwms.h"
+#include "gstrtpasfdepay.h"
+
+/* #include "gstasfmux.h" */
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (asfdemux_dbg, "asfdemux", 0, "asf demuxer element");
+
+#ifdef ENABLE_NLS
+  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
+      LOCALEDIR);
+  bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+#endif /* ENABLE_NLS */
+
+  gst_riff_init ();
+
+  if (!gst_element_register (plugin, "asfdemux", GST_RANK_SECONDARY,
+          GST_TYPE_ASF_DEMUX)) {
+    return FALSE;
+  }
+  if (!gst_element_register (plugin, "rtspwms", GST_RANK_SECONDARY,
+          GST_TYPE_RTSP_WMS)) {
+    return FALSE;
+  }
+  if (!gst_element_register (plugin, "rtpasfdepay", GST_RANK_MARGINAL,
+          GST_TYPE_RTP_ASF_DEPAY)) {
+    return FALSE;
+  }
+/*
+  if (!gst_element_register (plugin, "asfmux", GST_RANK_NONE, GST_TYPE_ASFMUX))
+    return FALSE;
+*/
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "asf",
+    "Demuxes and muxes audio and video in Microsofts ASF format",
+    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c
new file mode 100644 (file)
index 0000000..8c602b7
--- /dev/null
@@ -0,0 +1,5874 @@
+/* GStreamer ASF/WMV/WMA demuxer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) 2006-2009 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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.
+ */
+
+/* TODO:
+ *
+ * - _loop():
+ *   stop if at end of segment if != end of file, ie. demux->segment.stop
+ *
+ * - fix packet parsing:
+ *   there's something wrong with timestamps for packets with keyframes,
+ *   and durations too.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <gst/gstutils.h>
+#include <gst/base/gstbytereader.h>
+#include <gst/riff/riff-media.h>
+#include <gst/tag/tag.h>
+#include <gst/gst-i18n-plugin.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "gstasfdemux.h"
+#include "asfheaders.h"
+#include "asfpacket.h"
+
+static GstStaticPadTemplate gst_asf_demux_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-ms-asf")
+    );
+
+static GstStaticPadTemplate audio_src_template =
+GST_STATIC_PAD_TEMPLATE ("audio_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate video_src_template =
+GST_STATIC_PAD_TEMPLATE ("video_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+/* size of an ASF object header, ie. GUID (16 bytes) + object size (8 bytes) */
+#define ASF_OBJECT_HEADER_SIZE  (16+8)
+
+/* FIXME: get rid of this */
+/* abuse this GstFlowReturn enum for internal usage */
+#define ASF_FLOW_NEED_MORE_DATA  99
+
+#define gst_asf_get_flow_name(flow)    \
+  (flow == ASF_FLOW_NEED_MORE_DATA) ?  \
+  "need-more-data" : gst_flow_get_name (flow)
+
+GST_DEBUG_CATEGORY (asfdemux_dbg);
+
+static GstStateChangeReturn gst_asf_demux_change_state (GstElement * element,
+    GstStateChange transition);
+static gboolean gst_asf_demux_element_send_event (GstElement * element,
+    GstEvent * event);
+static gboolean gst_asf_demux_send_event_unlocked (GstASFDemux * demux,
+    GstEvent * event);
+static gboolean gst_asf_demux_handle_src_query (GstPad * pad, GstQuery * query);
+static const GstQueryType *gst_asf_demux_get_src_query_types (GstPad * pad);
+static GstFlowReturn gst_asf_demux_chain (GstPad * pad, GstBuffer * buf);
+static gboolean gst_asf_demux_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_asf_demux_process_object (GstASFDemux * demux,
+    guint8 ** p_data, guint64 * p_size);
+static gboolean gst_asf_demux_activate (GstPad * sinkpad);
+static gboolean gst_asf_demux_activate_push (GstPad * sinkpad, gboolean active);
+static gboolean gst_asf_demux_activate_pull (GstPad * sinkpad, gboolean active);
+static void gst_asf_demux_loop (GstASFDemux * demux);
+static void
+gst_asf_demux_process_queued_extended_stream_objects (GstASFDemux * demux);
+static gboolean gst_asf_demux_pull_headers (GstASFDemux * demux);
+static void gst_asf_demux_pull_indices (GstASFDemux * demux);
+static void gst_asf_demux_reset_stream_state_after_discont (GstASFDemux * asf);
+static gboolean
+gst_asf_demux_parse_data_object_start (GstASFDemux * demux, guint8 * data);
+static void gst_asf_demux_descramble_buffer (GstASFDemux * demux,
+    AsfStream * stream, GstBuffer ** p_buffer);
+static void gst_asf_demux_activate_stream (GstASFDemux * demux,
+    AsfStream * stream);
+static GstStructure *gst_asf_demux_get_metadata_for_stream (GstASFDemux * d,
+    guint stream_num);
+static GstFlowReturn gst_asf_demux_push_complete_payloads (GstASFDemux * demux,
+    gboolean force);
+#ifdef ASFDEMUX_MODIFICATION
+
+static gboolean gst_asf_demux_forward_trickplay (GstASFDemux * demux, AsfStream *stream, AsfPayload *payload);
+static gboolean gst_asf_demux_backward_trickplay(GstASFDemux * demux, AsfStream *stream, AsfPayload *payload);
+static gboolean gst_asf_demux_parse_payload_custom (GstASFDemux * demux, AsfPacket * packet, gint lentype, const guint8 ** p_data, 
+    guint * p_size, AsfPayload *next_kpayload, gboolean *is_video);
+static gboolean gst_asf_demux_find_next_keypacket (GstASFDemux * demux);
+static gboolean gst_asf_demux_find_prev_keypacket (GstASFDemux * demux);
+static guint32
+gst_asf_demux_find_num_samples_bw_kpayloads (GstASFDemux * demux, AsfPayload *start_kpayload, AsfPayload *end_kpayload);
+static gboolean 
+gst_asf_demux_find_keypayload_from_packet (GstASFDemux * demux, AsfPayload **next_kpayload);
+static gboolean gst_asf_demux_create_simple_index_table (GstASFDemux *demux);
+static gboolean gst_asf_demux_index_table_parse_packet (GstASFDemux * demux, GstBuffer * buf, GQueue *sidx_queue, gint *packet_num);
+static gboolean gst_asf_demux_index_table_parse_payload (GstASFDemux * demux, AsfPacket * packet,
+    gint lentype, const guint8 ** p_data, guint * p_size, AsfKeyPacketInfo *keyinfo);
+static gboolean gst_asf_demux_push_sidx_queue(GstASFDemux * demux, GQueue *sidx_queue, gint *packet_num, AsfKeyPacketInfo *keyinfo);
+#endif
+#ifdef CODEC_ENTRY
+static GstFlowReturn
+gst_asf_demux_process_codec_list (GstASFDemux * demux, guint8 * data, guint64 size);
+#endif
+
+GST_BOILERPLATE (GstASFDemux, gst_asf_demux, GstElement, GST_TYPE_ELEMENT);
+
+static void
+gst_asf_demux_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_asf_demux_sink_template);
+
+  gst_element_class_set_details_simple (element_class, "ASF Demuxer",
+      "Codec/Demuxer",
+      "Demultiplexes ASF Streams", "Owen Fraser-Green <owen@discobabe.net>");
+}
+
+static void
+gst_asf_demux_class_init (GstASFDemuxClass * klass)
+{
+  GstElementClass *gstelement_class;
+
+  gstelement_class = (GstElementClass *) klass;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_asf_demux_change_state);
+  gstelement_class->send_event =
+      GST_DEBUG_FUNCPTR (gst_asf_demux_element_send_event);
+}
+
+static void
+gst_asf_demux_free_stream (GstASFDemux * demux, AsfStream * stream)
+{
+  gst_caps_replace (&stream->caps, NULL);
+  if (stream->pending_tags) {
+    gst_tag_list_free (stream->pending_tags);
+    stream->pending_tags = NULL;
+  }
+  if (stream->pad) {
+    if (stream->active)
+      gst_element_remove_pad (GST_ELEMENT_CAST (demux), stream->pad);
+    else
+      gst_object_unref (stream->pad);
+    stream->pad = NULL;
+  }
+
+  while (stream->payloads && stream->payloads->len > 0) {
+    AsfPayload *payload;
+    guint last;
+
+    last = stream->payloads->len - 1;
+    payload = &g_array_index (stream->payloads, AsfPayload, last);
+    gst_buffer_replace (&payload->buf, NULL);
+    g_array_remove_index (stream->payloads, last);
+  }
+  if (stream->payloads) {
+    g_array_free (stream->payloads, TRUE);
+    stream->payloads = NULL;
+  }
+  if (stream->ext_props.valid) {
+    g_free (stream->ext_props.payload_extensions);
+    stream->ext_props.payload_extensions = NULL;
+  }
+}
+
+static void
+gst_asf_demux_reset (GstASFDemux * demux, gboolean chain_reset)
+{
+  GST_LOG_OBJECT (demux, "resetting");
+
+  gst_segment_init (&demux->segment, GST_FORMAT_UNDEFINED);
+  demux->segment_running = FALSE;
+  if (demux->adapter && !chain_reset) {
+    gst_adapter_clear (demux->adapter);
+    g_object_unref (demux->adapter);
+    demux->adapter = NULL;
+  }
+  if (demux->taglist) {
+    gst_tag_list_free (demux->taglist);
+    demux->taglist = NULL;
+  }
+  if (demux->metadata) {
+    gst_caps_unref (demux->metadata);
+    demux->metadata = NULL;
+  }
+  if (demux->global_metadata) {
+    gst_structure_free (demux->global_metadata);
+    demux->global_metadata = NULL;
+  }
+
+  demux->state = GST_ASF_DEMUX_STATE_HEADER;
+  g_free (demux->objpath);
+  demux->objpath = NULL;
+  g_strfreev (demux->languages);
+  demux->languages = NULL;
+  demux->num_languages = 0;
+  g_slist_foreach (demux->ext_stream_props, (GFunc) gst_mini_object_unref,
+      NULL);
+  g_slist_free (demux->ext_stream_props);
+  demux->ext_stream_props = NULL;
+
+  while (demux->old_num_streams > 0) {
+    gst_asf_demux_free_stream (demux,
+        &demux->old_stream[demux->old_num_streams - 1]);
+    --demux->old_num_streams;
+  }
+  memset (demux->old_stream, 0, sizeof (demux->old_stream));
+  demux->old_num_streams = 0;
+
+  /* when resetting for a new chained asf, we don't want to remove the pads
+   * before adding the new ones */
+  if (chain_reset) {
+    memcpy (demux->old_stream, demux->stream, sizeof (demux->stream));
+    demux->old_num_streams = demux->num_streams;
+    demux->num_streams = 0;
+  }
+
+  while (demux->num_streams > 0) {
+    gst_asf_demux_free_stream (demux, &demux->stream[demux->num_streams - 1]);
+    --demux->num_streams;
+  }
+  memset (demux->stream, 0, sizeof (demux->stream));
+  if (!chain_reset) {
+    /* do not remove those for not adding pads with same name */
+    demux->num_audio_streams = 0;
+    demux->num_video_streams = 0;
+  }
+  demux->num_streams = 0;
+  demux->activated_streams = FALSE;
+  demux->first_ts = GST_CLOCK_TIME_NONE;
+  demux->segment_ts = GST_CLOCK_TIME_NONE;
+  demux->in_gap = 0;
+  if (!chain_reset)
+    gst_segment_init (&demux->in_segment, GST_FORMAT_UNDEFINED);
+  demux->state = GST_ASF_DEMUX_STATE_HEADER;
+  demux->seekable = FALSE;
+  demux->broadcast = FALSE;
+  demux->sidx_interval = 0;
+  demux->sidx_num_entries = 0;
+  g_free (demux->sidx_entries);
+  demux->sidx_entries = NULL;
+
+  demux->speed_packets = 1;
+
+  if (chain_reset) {
+    GST_LOG_OBJECT (demux, "Restarting");
+    gst_segment_init (&demux->segment, GST_FORMAT_TIME);
+    demux->need_newsegment = TRUE;
+    demux->segment_running = FALSE;
+    demux->accurate = FALSE;
+    demux->metadata = gst_caps_new_empty ();
+    demux->global_metadata = gst_structure_empty_new ("metadata");
+    demux->data_size = 0;
+    demux->data_offset = 0;
+    demux->index_offset = 0;
+  } else {
+    demux->base_offset = 0;
+  }
+#ifdef CODEC_ENTRY
+  if (demux->codec_entry) {
+    int i=0;
+    for (i<0; i<demux->codec_entry_count; i++) {
+      GST_LOG_OBJECT (demux, "Trying to free codec entry [%d]", i);
+      if (demux->codec_entry[i].name) {
+        g_free (demux->codec_entry[i].name);
+        demux->codec_entry[i].name = NULL;
+      }
+      if (demux->codec_entry[i].description) {
+        g_free (demux->codec_entry[i].description);
+        demux->codec_entry[i].description = NULL;
+      }
+      if (demux->codec_entry[i].information) {
+        g_free (demux->codec_entry[i].information);
+        demux->codec_entry[i].information = NULL;
+      }
+    }
+    g_free (demux->codec_entry);
+    demux->codec_entry = NULL;
+    demux->codec_entry_count = 0;
+  }
+#endif
+}
+
+static void
+gst_asf_demux_init (GstASFDemux * demux, GstASFDemuxClass * klass)
+{
+  demux->sinkpad =
+      gst_pad_new_from_static_template (&gst_asf_demux_sink_template, "sink");
+  gst_pad_set_chain_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_chain));
+  gst_pad_set_event_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_sink_event));
+  gst_pad_set_activate_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_activate));
+  gst_pad_set_activatepull_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_activate_pull));
+  gst_pad_set_activatepush_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_activate_push));
+  gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
+
+#ifdef ASFDEMUX_MODIFICATION
+  demux->num_audio_streams = 0;
+  demux->num_video_streams = 0;
+  demux->num_streams = 0;
+  demux->vidStrmId = -1;
+  demux->audStrmId = -1;
+  demux->firstAudBufSent = FALSE;
+  demux->firstVidBufSent = FALSE;
+  demux->trickplay_info.first_video_push = FALSE;
+  demux->trickplay_info.resume_nrl_play = FALSE;
+  demux->trickplay_info.first_payload = FALSE;
+  demux->taglist = NULL;
+  demux->first_ts = GST_CLOCK_TIME_NONE;
+  demux->state = GST_ASF_DEMUX_STATE_HEADER;
+  demux->current_ts = 0;
+  demux->stop_ts = -1;
+#endif
+#ifdef LAST_STOP_SEGMENT
+  demux->packet_to_stop = 0;
+#endif
+  /* set initial state */
+  gst_asf_demux_reset (demux, FALSE);
+}
+
+static gboolean
+gst_asf_demux_activate (GstPad * sinkpad)
+{
+  if (gst_pad_check_pull_range (sinkpad)) {
+    return gst_pad_activate_pull (sinkpad, TRUE);
+  } else {
+    return gst_pad_activate_push (sinkpad, TRUE);
+  }
+}
+
+static gboolean
+gst_asf_demux_activate_push (GstPad * sinkpad, gboolean active)
+{
+  GstASFDemux *demux;
+
+  demux = GST_ASF_DEMUX (GST_OBJECT_PARENT (sinkpad));
+
+  demux->state = GST_ASF_DEMUX_STATE_HEADER;
+  demux->streaming = TRUE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_activate_pull (GstPad * pad, gboolean active)
+{
+  GstASFDemux *demux;
+
+  demux = GST_ASF_DEMUX (GST_OBJECT_PARENT (pad));
+
+  if (active) {
+    demux->state = GST_ASF_DEMUX_STATE_HEADER;
+    demux->streaming = FALSE;
+
+    return gst_pad_start_task (pad, (GstTaskFunction) gst_asf_demux_loop,
+        demux);
+  } else {
+    return gst_pad_stop_task (pad);
+  }
+}
+
+
+static gboolean
+gst_asf_demux_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstASFDemux *demux;
+  gboolean ret = TRUE;
+
+  demux = GST_ASF_DEMUX (gst_pad_get_parent (pad));
+
+  GST_LOG_OBJECT (demux, "handling %s event", GST_EVENT_TYPE_NAME (event));
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:{
+      GstFormat newsegment_format;
+      gint64 newsegment_start, stop, time;
+      gdouble rate, arate;
+      gboolean update;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &arate,
+          &newsegment_format, &newsegment_start, &stop, &time);
+
+      if (newsegment_format == GST_FORMAT_BYTES) {
+        if (demux->packet_size && newsegment_start > demux->data_offset)
+          demux->packet = (newsegment_start - demux->data_offset) /
+              demux->packet_size;
+        else
+          demux->packet = 0;
+      } else if (newsegment_format == GST_FORMAT_TIME) {
+        /* do not know packet position, not really a problem */
+        demux->packet = -1;
+      } else {
+        GST_WARNING_OBJECT (demux, "unsupported newsegment format, ignoring");
+        gst_event_unref (event);
+        break;
+      }
+
+      /* record upstream segment for interpolation */
+      if (newsegment_format != demux->in_segment.format)
+        gst_segment_init (&demux->in_segment, GST_FORMAT_UNDEFINED);
+      gst_segment_set_newsegment_full (&demux->in_segment, update, rate, arate,
+          newsegment_format, newsegment_start, stop, time);
+
+      /* in either case, clear some state and generate newsegment later on */
+      GST_OBJECT_LOCK (demux);
+      demux->segment_ts = GST_CLOCK_TIME_NONE;
+      demux->in_gap = GST_CLOCK_TIME_NONE;
+      demux->need_newsegment = TRUE;
+      gst_asf_demux_reset_stream_state_after_discont (demux);
+      GST_OBJECT_UNLOCK (demux);
+
+      gst_event_unref (event);
+      break;
+    }
+    case GST_EVENT_EOS:{
+      GstFlowReturn flow;
+
+      if (demux->state == GST_ASF_DEMUX_STATE_HEADER) {
+        GST_ELEMENT_ERROR (demux, STREAM, DEMUX,
+            (_("This stream contains no data.")),
+            ("got eos and didn't receive a complete header object"));
+        break;
+      }
+      flow = gst_asf_demux_push_complete_payloads (demux, TRUE);
+      if (flow < GST_FLOW_UNEXPECTED || flow == GST_FLOW_NOT_LINKED) {
+        GST_ELEMENT_ERROR (demux, STREAM, FAILED,
+            (_("Internal data stream error.")),
+            ("streaming stopped, reason %s", gst_flow_get_name (flow)));
+        break;
+      }
+
+      GST_OBJECT_LOCK (demux);
+      gst_adapter_clear (demux->adapter);
+      GST_OBJECT_UNLOCK (demux);
+      gst_asf_demux_send_event_unlocked (demux, event);
+      break;
+    }
+
+    case GST_EVENT_FLUSH_STOP:
+      GST_OBJECT_LOCK (demux);
+      gst_asf_demux_reset_stream_state_after_discont (demux);
+      GST_OBJECT_UNLOCK (demux);
+      gst_asf_demux_send_event_unlocked (demux, event);
+      /* upon activation, latency is no longer introduced, e.g. after seek */
+      if (demux->activated_streams)
+        demux->latency = 0;
+      break;
+
+    default:
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return ret;
+}
+
+static gboolean
+gst_asf_demux_seek_index_lookup (GstASFDemux * demux, guint * packet,
+    GstClockTime seek_time, GstClockTime * p_idx_time, guint * speed)
+{
+  GstClockTime idx_time;
+  guint idx;
+
+  if (G_UNLIKELY (demux->sidx_num_entries == 0 || demux->sidx_interval == 0))
+    return FALSE;
+
+  idx = (guint) ((seek_time + demux->preroll) / demux->sidx_interval);
+
+#ifdef ASFDEMUX_MODIFICATION
+  demux->seek_idx = idx;  
+  GST_DEBUG_OBJECT (demux, "seek_time = %"GST_TIME_FORMAT", seek index  = %d",
+    GST_TIME_ARGS(seek_time), demux->seek_idx);
+#endif
+
+  /* FIXME: seek beyond end of file should result in immediate EOS from
+   * streaming thread instead of a failed seek */
+  if (G_UNLIKELY (idx >= demux->sidx_num_entries)) {
+    GST_WARNING ("Seek beyond Simple idx entires...");
+    return FALSE;
+  }
+
+  *packet = demux->sidx_entries[idx].packet;
+  if (speed)
+    *speed = demux->sidx_entries[idx].count;
+
+  /* so we get closer to the actual time of the packet ... actually, let's not
+   * do this, since we throw away superfluous payloads before the seek position
+   * anyway; this way, our key unit seek 'snap resolution' is a bit better
+   * (ie. same as index resolution) */
+  /*
+     while (idx > 0 && demux->sidx_entries[idx-1] == demux->sidx_entries[idx])
+     --idx;
+   */
+
+  idx_time = demux->sidx_interval * idx;
+  if (G_LIKELY (idx_time >= demux->preroll))
+    idx_time -= demux->preroll;
+
+  GST_DEBUG_OBJECT (demux, "%" GST_TIME_FORMAT " => packet %u at %"
+      GST_TIME_FORMAT, GST_TIME_ARGS (seek_time), *packet,
+      GST_TIME_ARGS (idx_time));
+
+  if (G_LIKELY (p_idx_time))
+    *p_idx_time = idx_time;
+
+  return TRUE;
+}
+
+static void
+gst_asf_demux_reset_stream_state_after_discont (GstASFDemux * demux)
+{
+  guint n;
+
+  gst_adapter_clear (demux->adapter);
+
+  GST_DEBUG_OBJECT (demux, "reset stream state");
+
+  for (n = 0; n < demux->num_streams; n++) {
+    demux->stream[n].discont = TRUE;
+    demux->stream[n].last_flow = GST_FLOW_OK;
+
+    while (demux->stream[n].payloads->len > 0) {
+      AsfPayload *payload;
+      guint last;
+
+      last = demux->stream[n].payloads->len - 1;
+      payload = &g_array_index (demux->stream[n].payloads, AsfPayload, last);
+      gst_buffer_replace (&payload->buf, NULL);
+      g_array_remove_index (demux->stream[n].payloads, last);
+    }
+  }
+}
+
+static void
+gst_asf_demux_mark_discont (GstASFDemux * demux)
+{
+  guint n;
+
+  GST_DEBUG_OBJECT (demux, "Mark stream discont");
+
+  for (n = 0; n < demux->num_streams; n++)
+    demux->stream[n].discont = TRUE;
+}
+
+/* do a seek in push based mode */
+static gboolean
+gst_asf_demux_handle_seek_push (GstASFDemux * demux, GstEvent * event)
+{
+  gdouble rate;
+  GstFormat format;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  guint packet;
+  gboolean res;
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur,
+      &stop_type, &stop);
+
+  stop_type = GST_SEEK_TYPE_NONE;
+  stop = -1;
+
+  GST_DEBUG_OBJECT (demux, "seeking to %" GST_TIME_FORMAT, GST_TIME_ARGS (cur));
+
+  /* determine packet, by index or by estimation */
+  if (!gst_asf_demux_seek_index_lookup (demux, &packet, cur, NULL, NULL)) {
+    packet = (guint) gst_util_uint64_scale (demux->num_packets,
+        cur, demux->play_time);
+  }
+
+  if (packet > demux->num_packets) {
+    GST_DEBUG_OBJECT (demux, "could not determine packet to seek to, "
+        "seek aborted.");
+    return FALSE;
+  }
+
+  GST_DEBUG_OBJECT (demux, "seeking to packet %d", packet);
+
+  cur = demux->data_offset + (packet * demux->packet_size);
+
+  GST_DEBUG_OBJECT (demux, "Pushing BYTE seek rate %g, "
+      "start %" G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT, rate, cur, stop);
+  /* BYTE seek event */
+  event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, cur_type, cur,
+      stop_type, stop);
+  res = gst_pad_push_event (demux->sinkpad, event);
+
+  return res;
+}
+
+static gboolean
+gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
+{
+  GstClockTime idx_time;
+  GstSegment segment;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  GstFormat format;
+  gboolean only_need_update;
+  gboolean keyunit_sync;
+  gboolean flush;
+  gdouble rate;
+  gint64 cur, stop;
+  gint64 seek_time;
+  guint packet, speed_count = 1;
+#ifdef LAST_STOP_SEGMENT
+  gint64 seek_end_time = 0;
+  guint packet_to_stop = 0;
+#endif
+
+  if (G_UNLIKELY (demux->seekable == FALSE || demux->packet_size == 0 ||
+          demux->num_packets == 0 || demux->play_time == 0)) {
+    GST_LOG_OBJECT (demux, "stream is not seekable");
+    return FALSE;
+  }
+
+  if (G_UNLIKELY (!demux->activated_streams)) {
+    GST_LOG_OBJECT (demux, "streams not yet activated, ignoring seek");
+    return FALSE;
+  }
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur,
+      &stop_type, &stop);
+
+#ifdef ASFDEMUX_MODIFICATION
+  GST_INFO_OBJECT (demux, "Going to seek to %"GST_TIME_FORMAT" with rate=%f",
+    GST_TIME_ARGS(cur), rate);
+  GST_INFO("stop is %"GST_TIME_FORMAT, GST_TIME_ARGS(stop));
+  demux->stop_ts = stop;
+#endif
+
+  if (G_UNLIKELY (format != GST_FORMAT_TIME)) {
+    GST_LOG_OBJECT (demux, "seeking is only supported in TIME format");
+    return FALSE;
+  }
+
+#ifndef ASFDEMUX_MODIFICATION
+  if (G_UNLIKELY (rate <= 0.0)) {
+    GST_LOG_OBJECT (demux, "backward playback is not supported yet");
+    return FALSE;
+  }
+#endif
+
+  flush = ((flags & GST_SEEK_FLAG_FLUSH) == GST_SEEK_FLAG_FLUSH);
+  demux->accurate =
+      ((flags & GST_SEEK_FLAG_ACCURATE) == GST_SEEK_FLAG_ACCURATE);
+  keyunit_sync = ((flags & GST_SEEK_FLAG_KEY_UNIT) == GST_SEEK_FLAG_KEY_UNIT);
+
+  if (G_UNLIKELY (demux->streaming)) {
+    /* support it safely needs more segment handling, e.g. closing etc */
+    if (!flush) {
+      GST_LOG_OBJECT (demux, "streaming; non-flushing seek not supported");
+      return FALSE;
+    }
+    /* we can (re)construct the start later on, but not the end */
+    if (stop_type != GST_SEEK_TYPE_NONE) {
+      GST_LOG_OBJECT (demux, "streaming; end type must be NONE");
+      return FALSE;
+    }
+    gst_event_ref (event);
+    /* upstream might handle TIME seek, e.g. mms or rtsp,
+     * or not, e.g. http, then we give it a hand */
+    if (!gst_pad_push_event (demux->sinkpad, event))
+      return gst_asf_demux_handle_seek_push (demux, event);
+    else
+      return TRUE;
+  }
+
+  /* unlock the streaming thread */
+  if (G_LIKELY (flush)) {
+    gst_pad_push_event (demux->sinkpad, gst_event_new_flush_start ());
+    gst_asf_demux_send_event_unlocked (demux, gst_event_new_flush_start ());
+  } else {
+    gst_pad_pause_task (demux->sinkpad);
+  }
+
+  /* grab the stream lock so that streaming cannot continue, for
+   * non flushing seeks when the element is in PAUSED this could block
+   * forever */
+  GST_PAD_STREAM_LOCK (demux->sinkpad);
+
+  /* we now can stop flushing, since we have the stream lock now */
+  gst_pad_push_event (demux->sinkpad, gst_event_new_flush_stop ());
+
+  if (G_LIKELY (flush))
+    gst_asf_demux_send_event_unlocked (demux, gst_event_new_flush_stop ());
+
+  /* operating on copy of segment until we know the seek worked */
+  segment = demux->segment;
+#ifdef ASFDEMUX_MODIFICATION
+  segment.stop = stop;
+#endif
+
+  if (G_UNLIKELY (demux->segment_running && !flush)) {
+    GstEvent *newseg;
+
+    /* create the segment event to close the current segment */
+#ifdef ASFDEMUX_MODIFICATION
+    newseg = gst_event_new_new_segment (TRUE, segment.rate,
+        GST_FORMAT_TIME, segment.start, stop, segment.time);
+#else
+    newseg = gst_event_new_new_segment (TRUE, segment.rate,
+        GST_FORMAT_TIME, segment.start, segment.last_stop, segment.time);
+#endif
+
+    gst_asf_demux_send_event_unlocked (demux, newseg);
+  }
+
+  gst_segment_set_seek (&segment, rate, format, flags, cur_type,
+      cur, stop_type, stop, &only_need_update);
+
+#ifdef ASFDEMUX_MODIFICATION
+  gst_segment_set_last_stop (&segment, GST_FORMAT_TIME, cur);
+  demux->trickplay_info.next_keyframe_ts = cur;
+  demux->trickplay_info.first_video_push = FALSE;
+  demux->trickplay_info.first_payload = FALSE;
+#endif
+
+  GST_DEBUG_OBJECT (demux, "seeking to time %" GST_TIME_FORMAT ", segment: "
+      "%" GST_SEGMENT_FORMAT, GST_TIME_ARGS (segment.start), &segment);
+
+#ifdef ASFDEMUX_MODIFICATION
+  /*Modification: Trickplay support added*/
+  if (segment.rate > 0.0) {
+    if (segment.rate == 1.0) {
+      seek_time = segment.start;
+      #ifdef LAST_STOP_SEGMENT
+      seek_end_time = segment.stop;
+      #endif
+      segment.stop = GST_CLOCK_TIME_NONE;
+    } else {
+      seek_time = segment.start = segment.last_stop;
+      segment.stop=GST_CLOCK_TIME_NONE;
+    }
+  } else {
+    // TODO:  last_stop to cur time
+    seek_time = segment.last_stop;
+    segment.start = 0;
+    segment.stop = segment.last_stop; // TODO: I think stop would be last_stop ??
+  }
+#else
+  seek_time = segment.start;
+#endif
+
+  /* FIXME: should check the KEY_UNIT flag; need to adjust last_stop to
+   * real start of data and segment_start to indexed time for key unit seek*/
+  if (G_UNLIKELY (!gst_asf_demux_seek_index_lookup (demux, &packet, seek_time,
+              &idx_time, &speed_count))) {
+    /* First try to query our source to see if it can convert for us. This is
+       the case when our source is an mms stream, notice that in this case
+       gstmms will do a time based seek to get the byte offset, this is not a
+       problem as the seek to this offset needs to happen anway. */
+    gint64 offset;
+    GstFormat dest_format = GST_FORMAT_BYTES;
+
+    if (gst_pad_query_peer_convert (demux->sinkpad, GST_FORMAT_TIME, seek_time,
+            &dest_format, &offset) && dest_format == GST_FORMAT_BYTES) {
+      packet = (offset - demux->data_offset) / demux->packet_size;
+      GST_LOG_OBJECT (demux, "convert %" GST_TIME_FORMAT
+          " to bytes query result: %" G_GINT64_FORMAT ", data_ofset: %"
+          G_GINT64_FORMAT ", packet_size: %u," " resulting packet: %u\n",
+          GST_TIME_ARGS (seek_time), offset, demux->data_offset,
+          demux->packet_size, packet);
+    } else {
+      /* FIXME: For streams containing video, seek to an earlier position in
+       * the hope of hitting a keyframe and let the sinks throw away the stuff
+       * before the segment start. For audio-only this is unnecessary as every
+       * frame is 'key'. */
+      if (flush && (demux->accurate || keyunit_sync)
+          && demux->num_video_streams > 0) {
+        seek_time -= 5 * GST_SECOND;
+        if (seek_time < 0)
+          seek_time = 0;
+      }
+
+      packet = (guint) gst_util_uint64_scale (demux->num_packets,
+          seek_time, demux->play_time);
+
+      if (packet > demux->num_packets)
+        packet = demux->num_packets;
+
+#ifdef LAST_STOP_SEGMENT
+      if (segment.stop != segment.duration) {
+        //seek_end_time += 1 * GST_SECOND; /*FIXME : demuxer can't find exact stop packet currently. */
+        packet_to_stop = (guint)gst_util_uint64_scale (demux->num_packets, seek_end_time, demux->play_time); /* here, play_time is total duration */
+
+        GST_INFO_OBJECT(demux, " packet to start = %u, total packets = %u, packet to stop = %u\n",
+        (guint)packet, (guint)demux->num_packets, (guint)packet_to_stop);
+
+        if (packet_to_stop > demux->num_packets)
+          packet_to_stop = demux->num_packets;
+      }
+#endif
+    }
+  } else {
+    if (G_LIKELY (keyunit_sync)) {
+      GST_DEBUG_OBJECT (demux, "key unit seek, adjust seek_time = %"
+          GST_TIME_FORMAT " to index_time = %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (seek_time), GST_TIME_ARGS (idx_time));
+#ifdef ASFDEMUX_MODIFICATION
+      if (segment.rate < 0.0) {
+        segment.last_stop = idx_time;
+        segment.time = idx_time;
+      } else {
+ #endif
+        segment.start = idx_time;
+        segment.last_stop = idx_time;
+        segment.time = idx_time;
+#ifdef ASFDEMUX_MODIFICATION
+      }
+ #endif
+    }
+  }
+
+  GST_DEBUG_OBJECT (demux, "seeking to packet %u (%d)", packet, speed_count);
+
+  GST_OBJECT_LOCK (demux);
+  demux->segment = segment;
+  demux->packet = packet;
+#ifdef LAST_STOP_SEGMENT
+  if (packet_to_stop)
+    demux->packet_to_stop = packet_to_stop;
+#endif
+  demux->need_newsegment = TRUE;
+  demux->speed_packets = speed_count;
+  gst_asf_demux_reset_stream_state_after_discont (demux);
+#ifdef ASFDEMUX_MODIFICATION
+  if (demux->segment.rate != 1.0) {
+    demux->trickplay_info.kpacket_dur_diff = 0;
+    demux->trickplay_info.prev_kpacket = 0;
+    if (demux->segment.rate  < 0.0)
+      demux->trickplay_info.prev_kpacket = -1;
+    demux->trickplay_info.next_kpacket = 0;
+    demux->trickplay_info.show_samples = 0;
+    demux->trickplay_info.start_ts = GST_CLOCK_TIME_NONE;
+    demux->trickplay_info.is_eos = FALSE;
+    demux->trickplay_info.cur_kpacket = 0;
+  }
+  demux->firstAudBufSent = FALSE;
+  demux->firstVidBufSent = FALSE;
+#endif
+  GST_OBJECT_UNLOCK (demux);
+
+  /* restart our task since it might have been stopped when we did the flush */
+  gst_pad_start_task (demux->sinkpad, (GstTaskFunction) gst_asf_demux_loop,
+      demux);
+
+  /* streaming can continue now */
+  GST_PAD_STREAM_UNLOCK (demux->sinkpad);
+
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_handle_src_event (GstPad * pad, GstEvent * event)
+{
+  GstASFDemux *demux;
+  gboolean ret;
+
+  demux = GST_ASF_DEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+      GST_LOG_OBJECT (pad, "seek event");
+      ret = gst_asf_demux_handle_seek_event (demux, event);
+      gst_event_unref (event);
+      break;
+    case GST_EVENT_QOS:
+    case GST_EVENT_NAVIGATION:
+      /* just drop these two silently */
+      gst_event_unref (event);
+      ret = FALSE;
+      break;
+    default:
+      GST_LOG_OBJECT (pad, "%s event", GST_EVENT_TYPE_NAME (event));
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return ret;
+}
+
+static inline guint32
+gst_asf_demux_identify_guid (const ASFGuidHash * guids, ASFGuid * guid)
+{
+  guint32 ret;
+
+  ret = gst_asf_identify_guid (guids, guid);
+
+  GST_LOG ("%s  0x%08x-0x%08x-0x%08x-0x%08x",
+      gst_asf_get_guid_nick (guids, ret),
+      guid->v1, guid->v2, guid->v3, guid->v4);
+
+  return ret;
+}
+
+typedef struct
+{
+  AsfObjectID id;
+  guint64 size;
+} AsfObject;
+
+
+/* expect is true when the user is expeting an object,
+ * when false, it will give no warnings if the object
+ * is not identified
+ */
+static gboolean
+asf_demux_peek_object (GstASFDemux * demux, const guint8 * data,
+    guint data_len, AsfObject * object, gboolean expect)
+{
+  ASFGuid guid;
+
+  if (data_len < ASF_OBJECT_HEADER_SIZE)
+    return FALSE;
+
+  guid.v1 = GST_READ_UINT32_LE (data + 0);
+  guid.v2 = GST_READ_UINT32_LE (data + 4);
+  guid.v3 = GST_READ_UINT32_LE (data + 8);
+  guid.v4 = GST_READ_UINT32_LE (data + 12);
+
+  object->size = GST_READ_UINT64_LE (data + 16);
+
+  /* FIXME: make asf_demux_identify_object_guid() */
+  object->id = gst_asf_demux_identify_guid (asf_object_guids, &guid);
+  if (object->id == ASF_OBJ_UNDEFINED && expect) {
+    GST_WARNING_OBJECT (demux, "Unknown object %08x-%08x-%08x-%08x",
+        guid.v1, guid.v2, guid.v3, guid.v4);
+  }
+
+  return TRUE;
+}
+
+static void
+gst_asf_demux_release_old_pads (GstASFDemux * demux)
+{
+  GST_DEBUG_OBJECT (demux, "Releasing old pads");
+
+  while (demux->old_num_streams > 0) {
+    gst_pad_push_event (demux->old_stream[demux->old_num_streams - 1].pad,
+        gst_event_new_eos ());
+    gst_asf_demux_free_stream (demux,
+        &demux->old_stream[demux->old_num_streams - 1]);
+    --demux->old_num_streams;
+  }
+  memset (demux->old_stream, 0, sizeof (demux->old_stream));
+  demux->old_num_streams = 0;
+}
+
+static GstFlowReturn
+gst_asf_demux_chain_headers (GstASFDemux * demux)
+{
+  GstFlowReturn flow;
+  AsfObject obj;
+  guint8 *header_data, *data = NULL;
+  const guint8 *cdata = NULL;
+  guint64 header_size;
+
+  cdata = (guint8 *) gst_adapter_peek (demux->adapter, ASF_OBJECT_HEADER_SIZE);
+  if (cdata == NULL)
+    goto need_more_data;
+
+  asf_demux_peek_object (demux, cdata, ASF_OBJECT_HEADER_SIZE, &obj, TRUE);
+  if (obj.id != ASF_OBJ_HEADER)
+    goto wrong_type;
+
+  GST_LOG_OBJECT (demux, "header size = %u", (guint) obj.size);
+
+  /* + 50 for non-packet data at beginning of ASF_OBJ_DATA */
+  if (gst_adapter_available (demux->adapter) < obj.size + 50)
+    goto need_more_data;
+
+  data = gst_adapter_take (demux->adapter, obj.size + 50);
+
+  header_data = data;
+  header_size = obj.size;
+  flow = gst_asf_demux_process_object (demux, &header_data, &header_size);
+  if (flow != GST_FLOW_OK)
+    goto parse_failed;
+
+  /* calculate where the packet data starts */
+  demux->data_offset = obj.size + 50;
+
+  /* now parse the beginning of the ASF_OBJ_DATA object */
+  if (!gst_asf_demux_parse_data_object_start (demux, data + obj.size))
+    goto wrong_type;
+
+  if (demux->num_streams == 0)
+    goto no_streams;
+
+  g_free (data);
+  return GST_FLOW_OK;
+
+/* NON-FATAL */
+need_more_data:
+  {
+    GST_LOG_OBJECT (demux, "not enough data in adapter yet");
+    return GST_FLOW_OK;
+  }
+
+/* ERRORS */
+wrong_type:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, (NULL),
+        ("This doesn't seem to be an ASF file"));
+    g_free (data);
+    return GST_FLOW_ERROR;
+  }
+no_streams:
+parse_failed:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("header parsing failed, or no streams found, flow = %s",
+            gst_flow_get_name (flow)));
+    g_free (data);
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_aggregate_flow_return (GstASFDemux * demux, AsfStream * stream,
+    GstFlowReturn flow)
+{
+  int i;
+
+  GST_DEBUG_OBJECT (demux, "Aggregating");
+
+  /* Store the value */
+  stream->last_flow = flow;
+
+  /* any other error that is not not-linked can be returned right away */
+  if (flow != GST_FLOW_NOT_LINKED)
+    goto done;
+
+  for (i = 0; i < demux->num_streams; i++) {
+    if (demux->stream[i].active) {
+      flow = demux->stream[i].last_flow;
+      GST_DEBUG_OBJECT (demux, "Aggregating: flow %i return %s", i,
+          gst_flow_get_name (flow));
+      if (flow != GST_FLOW_NOT_LINKED)
+        goto done;
+    }
+  }
+
+  /* If we got here, then all our active streams are not linked */
+done:
+  return flow;
+}
+
+static gboolean
+gst_asf_demux_pull_data (GstASFDemux * demux, guint64 offset, guint size,
+    GstBuffer ** p_buf, GstFlowReturn * p_flow)
+{
+  GstFlowReturn flow;
+
+  GST_LOG_OBJECT (demux, "pulling buffer at %" G_GUINT64_FORMAT "+%u",
+      offset, size);
+
+  flow = gst_pad_pull_range (demux->sinkpad, offset, size, p_buf);
+
+  if (G_LIKELY (p_flow))
+    *p_flow = flow;
+
+  if (G_UNLIKELY (flow != GST_FLOW_OK)) {
+    GST_DEBUG_OBJECT (demux, "flow %s pulling buffer at %" G_GUINT64_FORMAT
+        "+%u", gst_flow_get_name (flow), offset, size);
+    *p_buf = NULL;
+    return FALSE;
+  }
+
+  g_assert (*p_buf != NULL);
+
+  if (G_UNLIKELY (GST_BUFFER_SIZE (*p_buf) < size)) {
+    GST_DEBUG_OBJECT (demux, "short read pulling buffer at %" G_GUINT64_FORMAT
+        "+%u (got only %u bytes)", offset, size, GST_BUFFER_SIZE (*p_buf));
+    gst_buffer_unref (*p_buf);
+    if (G_LIKELY (p_flow))
+      *p_flow = GST_FLOW_UNEXPECTED;
+    *p_buf = NULL;
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static void
+gst_asf_demux_pull_indices (GstASFDemux * demux)
+{
+  GstBuffer *buf = NULL;
+  guint64 offset;
+  guint num_read = 0;
+
+  offset = demux->index_offset;
+
+  if (G_UNLIKELY (offset == 0)) {
+    GST_DEBUG_OBJECT (demux, "can't read indices, don't know index offset");
+    return;
+  }
+
+  while (gst_asf_demux_pull_data (demux, offset, 16 + 8, &buf, NULL)) {
+    GstFlowReturn flow;
+    AsfObject obj;
+
+    asf_demux_peek_object (demux, GST_BUFFER_DATA (buf), 16 + 8, &obj, TRUE);
+    gst_buffer_replace (&buf, NULL);
+
+    /* check for sanity */
+    if (G_UNLIKELY (obj.size > (5 * 1024 * 1024))) {
+      GST_DEBUG_OBJECT (demux, "implausible index object size, bailing out");
+      break;
+    }
+
+    if (G_UNLIKELY (!gst_asf_demux_pull_data (demux, offset, obj.size, &buf,
+                NULL)))
+      break;
+
+    GST_LOG_OBJECT (demux, "index object at offset 0x%" G_GINT64_MODIFIER "X"
+        ", size %u", offset, (guint) obj.size);
+
+    offset += obj.size;         /* increase before _process_object changes it */
+
+    flow = gst_asf_demux_process_object (demux, &buf->data, &obj.size);
+    gst_buffer_replace (&buf, NULL);
+
+    if (G_UNLIKELY (flow != GST_FLOW_OK))
+      break;
+
+    ++num_read;
+  }
+  GST_DEBUG_OBJECT (demux, "read %u index objects", num_read);
+}
+
+static gboolean
+gst_asf_demux_parse_data_object_start (GstASFDemux * demux, guint8 * data)
+{
+  AsfObject obj;
+
+  asf_demux_peek_object (demux, data, 50, &obj, TRUE);
+  if (obj.id != ASF_OBJ_DATA) {
+    GST_WARNING_OBJECT (demux, "headers not followed by a DATA object");
+    return FALSE;
+  }
+
+  demux->state = GST_ASF_DEMUX_STATE_DATA;
+
+  if (!demux->broadcast && obj.size > 50) {
+    demux->data_size = obj.size - 50;
+    /* CHECKME: for at least one file this is off by +158 bytes?! */
+    demux->index_offset = demux->data_offset + demux->data_size;
+  } else {
+    demux->data_size = 0;
+    demux->index_offset = 0;
+  }
+
+  demux->packet = 0;
+
+  if (!demux->broadcast) {
+    /* skip object header (24 bytes) and file GUID (16 bytes) */
+    demux->num_packets = GST_READ_UINT64_LE (data + (16 + 8) + 16);
+  } else {
+    demux->num_packets = 0;
+  }
+
+  if (demux->num_packets == 0)
+    demux->seekable = FALSE;
+
+  /* fallback in the unlikely case that headers are inconsistent, can't hurt */
+  if (demux->data_size == 0 && demux->num_packets > 0) {
+    demux->data_size = demux->num_packets * demux->packet_size;
+    demux->index_offset = demux->data_offset + demux->data_size;
+  }
+
+  /* process pending stream objects and create pads for those */
+  gst_asf_demux_process_queued_extended_stream_objects (demux);
+
+  GST_INFO_OBJECT (demux, "Stream has %" G_GUINT64_FORMAT " packets, "
+      "data_offset=%" G_GINT64_FORMAT ", data_size=%" G_GINT64_FORMAT
+      ", index_offset=%" G_GUINT64_FORMAT, demux->num_packets,
+      demux->data_offset, demux->data_size, demux->index_offset);
+
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_pull_headers (GstASFDemux * demux)
+{
+  GstFlowReturn flow;
+  AsfObject obj;
+  GstBuffer *buf = NULL;
+  guint64 size;
+
+  GST_LOG_OBJECT (demux, "reading headers");
+
+  /* pull HEADER object header, so we know its size */
+  if (!gst_asf_demux_pull_data (demux, demux->base_offset, 16 + 8, &buf, NULL))
+    goto read_failed;
+
+  asf_demux_peek_object (demux, GST_BUFFER_DATA (buf), 16 + 8, &obj, TRUE);
+  gst_buffer_replace (&buf, NULL);
+
+  if (obj.id != ASF_OBJ_HEADER)
+    goto wrong_type;
+
+  GST_LOG_OBJECT (demux, "header size = %u", (guint) obj.size);
+
+  /* pull HEADER object */
+  if (!gst_asf_demux_pull_data (demux, demux->base_offset, obj.size, &buf,
+          NULL))
+    goto read_failed;
+
+  size = obj.size;              /* don't want obj.size changed */
+  flow = gst_asf_demux_process_object (demux, &buf->data, &size);
+  gst_buffer_replace (&buf, NULL);
+
+  if (flow != GST_FLOW_OK) {
+    GST_WARNING_OBJECT (demux, "process_object: %s", gst_flow_get_name (flow));
+    goto parse_failed;
+  }
+
+  /* calculate where the packet data starts */
+  demux->data_offset = demux->base_offset + obj.size + 50;
+
+  /* now pull beginning of DATA object before packet data */
+  if (!gst_asf_demux_pull_data (demux, demux->base_offset + obj.size, 50, &buf,
+          NULL))
+    goto read_failed;
+
+  if (!gst_asf_demux_parse_data_object_start (demux, GST_BUFFER_DATA (buf)))
+    goto wrong_type;
+
+  if (demux->num_streams == 0)
+    goto no_streams;
+
+  gst_buffer_replace (&buf, NULL);
+  return TRUE;
+
+/* ERRORS */
+wrong_type:
+  {
+    gst_buffer_replace (&buf, NULL);
+    GST_ELEMENT_ERROR (demux, STREAM, WRONG_TYPE, (NULL),
+        ("This doesn't seem to be an ASF file"));
+    return FALSE;
+  }
+no_streams:
+read_failed:
+parse_failed:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL), (NULL));
+    return FALSE;
+  }
+}
+
+static gboolean
+all_streams_prerolled (GstASFDemux * demux)
+{
+  GstClockTime preroll_time;
+  guint i, num_no_data = 0;
+
+  /* Allow at least 500ms of preroll_time  */
+  preroll_time = MAX (demux->preroll, 500 * GST_MSECOND);
+
+  /* returns TRUE as long as there isn't a stream which (a) has data queued
+   * and (b) the timestamp of last piece of data queued is < demux->preroll
+   * AND there is at least one other stream with data queued */
+  for (i = 0; i < demux->num_streams; ++i) {
+    AsfPayload *last_payload;
+    AsfStream *stream;
+    guint last_idx;
+
+    stream = &demux->stream[i];
+    if (G_UNLIKELY (stream->payloads->len == 0)) {
+      ++num_no_data;
+      GST_LOG_OBJECT (stream->pad, "no data queued");
+      continue;
+    }
+
+    last_idx = stream->payloads->len - 1;
+    last_payload = &g_array_index (stream->payloads, AsfPayload, last_idx);
+
+    GST_LOG_OBJECT (stream->pad, "checking if %" GST_TIME_FORMAT " > %"
+        GST_TIME_FORMAT, GST_TIME_ARGS (last_payload->ts),
+        GST_TIME_ARGS (preroll_time));
+
+#ifndef ASFDEMUX_MODIFICATION
+    if (G_UNLIKELY (last_payload->ts <= preroll_time)) {
+      GST_LOG_OBJECT (stream->pad, "not beyond preroll point yet");
+      return FALSE;
+    }
+#endif
+  }
+
+#ifdef ASFDEMUX_MODIFICATION
+  /* Previously demuxer is Buffering until the Preroll Time Before Play Statr,
+   * Now Only waiting for the at lest one payalod for all streams
+   */
+  if (num_no_data)
+    return FALSE;
+  else
+    return TRUE;
+#else
+  if (G_UNLIKELY (num_no_data == demux->num_streams))
+    return FALSE;
+
+  return TRUE;
+#endif
+}
+
+#if 0
+static gboolean
+gst_asf_demux_have_mutually_exclusive_active_stream (GstASFDemux * demux,
+    AsfStream * stream)
+{
+  GSList *l;
+
+  for (l = demux->mut_ex_streams; l != NULL; l = l->next) {
+    guint8 *mes;
+
+    /* check for each mutual exclusion group whether it affects this stream */
+    for (mes = (guint8 *) l->data; mes != NULL && *mes != 0xff; ++mes) {
+      if (*mes == stream->id) {
+        /* we are in this group; let's check if we've already activated streams
+         * that are in the same group (and hence mutually exclusive to this
+         * one) */
+        for (mes = (guint8 *) l->data; mes != NULL && *mes != 0xff; ++mes) {
+          guint i;
+
+          for (i = 0; i < demux->num_streams; ++i) {
+            if (demux->stream[i].id == *mes && demux->stream[i].active) {
+              GST_LOG_OBJECT (demux, "stream with ID %d is mutually exclusive "
+                  "to already active stream with ID %d", stream->id,
+                  demux->stream[i].id);
+              return TRUE;
+            }
+          }
+        }
+        /* we can only be in this group once, let's break out and move on to
+         * the next mutual exclusion group */
+        break;
+      }
+    }
+  }
+
+  return FALSE;
+}
+#endif
+
+static gboolean
+gst_asf_demux_check_activate_streams (GstASFDemux * demux, gboolean force)
+{
+  guint i;
+
+  if (demux->activated_streams)
+    return TRUE;
+
+  if (!all_streams_prerolled (demux) && !force) {
+    GST_DEBUG_OBJECT (demux, "not all streams with data beyond preroll yet");
+    return FALSE;
+  }
+
+  for (i = 0; i < demux->num_streams; ++i) {
+    AsfStream *stream = &demux->stream[i];
+
+    if (stream->payloads->len > 0) {
+      /* we don't check mutual exclusion stuff here; either we have data for
+       * a stream, then we active it, or we don't, then we'll ignore it */
+      GST_LOG_OBJECT (stream->pad, "is prerolled - activate!");
+      gst_asf_demux_activate_stream (demux, stream);
+    } else {
+      GST_LOG_OBJECT (stream->pad, "no data, ignoring stream");
+#ifdef ASFDEMUX_MODIFICATION
+      if(demux->audStrmId == i) {
+        demux->audStrmId = -1;
+        GST_LOG_OBJECT(demux, "Forced the audio stream id to -1\n");
+      }
+      if(demux->vidStrmId == i) {
+        demux->vidStrmId = -1;
+        GST_LOG_OBJECT(demux, "Forced the video stream id to -1\n");
+      }
+#endif
+    }
+  }
+
+  gst_asf_demux_release_old_pads (demux);
+
+  demux->activated_streams = TRUE;
+  GST_LOG_OBJECT (demux, "signalling no more pads");
+  gst_element_no_more_pads (GST_ELEMENT (demux));
+  return TRUE;
+}
+
+#ifndef ASFDEMUX_MODIFICATION
+/* returns the stream that has a complete payload with the lowest timestamp
+ * queued, or NULL (we push things by timestamp because during the internal
+ * prerolling we might accumulate more data then the external queues can take,
+ * so we'd lock up if we pushed all accumulated data for stream N in one go) */
+static AsfStream *
+gst_asf_demux_find_stream_with_complete_payload (GstASFDemux * demux)
+{
+  AsfPayload *best_payload = NULL;
+  AsfStream *best_stream = NULL;
+  guint i;
+
+  for (i = 0; i < demux->num_streams; ++i) {
+    AsfStream *stream;
+
+    stream = &demux->stream[i];
+
+    /* Don't push any data until we have at least one payload that falls within
+     * the current segment. This way we can remove out-of-segment payloads that
+     * don't need to be decoded after a seek, sending only data from the
+     * keyframe directly before our segment start */
+    if (stream->payloads->len > 0) {
+      AsfPayload *payload;
+      guint last_idx;
+
+      last_idx = stream->payloads->len - 1;
+      payload = &g_array_index (stream->payloads, AsfPayload, last_idx);
+      if (G_UNLIKELY (GST_CLOCK_TIME_IS_VALID (payload->ts) &&
+              (payload->ts < demux->segment.start))) {
+        if (G_UNLIKELY ((!demux->accurate) && payload->keyframe)) {
+          GST_DEBUG_OBJECT (stream->pad,
+              "Found keyframe, updating segment start to %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (payload->ts));
+          demux->segment.start = payload->ts;
+          demux->segment.time = payload->ts;
+        } else {
+          GST_DEBUG_OBJECT (stream->pad, "Last queued payload has timestamp %"
+              GST_TIME_FORMAT " which is before our segment start %"
+              GST_TIME_FORMAT ", not pushing yet", GST_TIME_ARGS (payload->ts),
+              GST_TIME_ARGS (demux->segment.start));
+          continue;
+        }
+      }
+
+      /* Now see if there's a complete payload queued for this stream */
+
+      payload = &g_array_index (stream->payloads, AsfPayload, 0);
+      if (!gst_asf_payload_is_complete (payload))
+        continue;
+
+      /* ... and whether its timestamp is lower than the current best */
+      if (best_stream == NULL || best_payload->ts > payload->ts) {
+        best_stream = stream;
+        best_payload = payload;
+      }
+    }
+  }
+
+  return best_stream;
+}
+#else
+/* Writes TRUE If any complete Complete payloads in the Stream */
+static gboolean
+gst_asf_demux_check_payload (GstASFDemux * demux,AsfStream *stream,gint64 *payTS)
+{
+  AsfPayload *payload;
+
+  /* Don't push any data until we have at least one payload that falls within
+  * the current segment. This way we can remove out-of-segment payloads that
+  * don't need to be decoded after a seek, sending only data from the
+  * keyframe directly before our segment start */
+
+  if (stream->payloads->len > 0) {
+    payload = &g_array_index (stream->payloads, AsfPayload, stream->payloads->len - 1);
+       
+    if (GST_CLOCK_TIME_IS_VALID (payload->ts) &&
+        payload->ts < demux->segment.start) {
+      GST_DEBUG_OBJECT (stream->pad, "Last queued payload has timestamp %"
+        GST_TIME_FORMAT " which is before our segment start %"
+        GST_TIME_FORMAT ", not pushing yet", GST_TIME_ARGS (payload->ts),
+        GST_TIME_ARGS (demux->segment.start));
+      return FALSE;
+    }
+       
+    /* Now see if there's a complete payload queued for this stream */
+    payload = &g_array_index (stream->payloads, AsfPayload, 0);
+    if (!gst_asf_payload_is_complete (payload)) {
+      return FALSE;
+    }
+       
+    *payTS = payload->ts;
+    GST_DEBUG_OBJECT (stream->pad, "Last queued payload has timestamp %"
+      GST_TIME_FORMAT"", GST_TIME_ARGS (payload->ts));
+    return TRUE;
+  }
+  return FALSE;
+}
+
+static AsfStream *
+gst_asf_demux_find_stream_with_complete_payload (GstASFDemux * demux)
+{
+  AsfStream *streama = NULL,*streamv=NULL;
+  guint strmCnt=0;
+  gint64 audTS=-1,vidTS=-1;
+
+  /* If the Audio Stream Id  is Valied Check for the Complete Paylods in the Audio stream*/
+  
+  if(demux->audStrmId >= 0) {
+    streama = &demux->stream[demux->audStrmId];
+    if(gst_asf_demux_check_payload(demux,streama,&audTS)) {
+      GST_DEBUG_OBJECT (demux, " Pending Audio stream Payload with Time Stamp : %"GST_TIME_FORMAT , GST_TIME_ARGS(audTS));
+      strmCnt++;
+    } else {
+      GST_DEBUG_OBJECT (demux, " No Pending Payloads in the Audio stream ");
+    }
+  }
+
+  /* If the Video Stream Id  is Valied Check for the Complete Paylods in the Video stream*/
+  if(demux->vidStrmId >= 0) {
+    streamv = &demux->stream[demux->vidStrmId];
+    if(gst_asf_demux_check_payload(demux,streamv,&vidTS)) {
+      GST_DEBUG_OBJECT (demux, " Pending Video stream Payload with Time Stamp : %"GST_TIME_FORMAT, GST_TIME_ARGS(vidTS));
+      strmCnt++;
+    } else {
+      GST_DEBUG_OBJECT (demux, " No Pending Payloads in the Video stream ");
+    }
+  }
+
+  if(strmCnt == 1) {
+    GST_DEBUG_OBJECT (demux, "Only One Stream has pending payload  Audio TS : %"GST_TIME_FORMAT" /video TS : %"GST_TIME_FORMAT,
+      GST_TIME_ARGS(audTS),GST_TIME_ARGS(vidTS));
+
+    /* Check the validity of the audio stream & its Time Stamp*/
+    if(audTS >= 0 && streama != NULL && demux->vidStrmId == -1) {
+        return streama;
+    }
+       
+    /* Check the validity of the video stream & its Time Stamp*/
+    if(vidTS >= 0 && streamv != NULL && demux->audStrmId  == -1) {
+      return streamv;
+    }
+  } else if(strmCnt > 1) {
+    GST_DEBUG_OBJECT (demux, "Multiple Streams has pending payload     Audio TS : %"GST_TIME_FORMAT" /video TS : %"GST_TIME_FORMAT,
+    GST_TIME_ARGS(audTS),GST_TIME_ARGS(vidTS));
+
+    if(!demux->firstVidBufSent) {
+      GST_INFO_OBJECT (demux, " Sending Initial Video Buffers with TS : %"GST_TIME_FORMAT,GST_TIME_ARGS(vidTS));
+      demux->firstVidBufSent = TRUE;
+      return streamv;
+    }
+
+    if(!demux->firstAudBufSent) {
+      GST_INFO_OBJECT (demux, " Sending Initial Audio Buffers with TS : %"GST_TIME_FORMAT,GST_TIME_ARGS(audTS));
+      demux->firstAudBufSent = TRUE;
+      return streama;
+    }
+       
+    /* In case of video + audio, Audio always lead video by 10 ms*/
+    if(audTS <= vidTS + 10000000){
+      return streama;
+    } else {
+      return streamv;
+    }
+  }
+
+  GST_DEBUG_OBJECT (demux, " Not Sending any Payload to decoders");
+  
+  return NULL;
+}
+#endif
+
+
+static GstFlowReturn
+gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
+{
+  AsfStream *stream;
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  if (G_UNLIKELY (!demux->activated_streams)) {
+    if (!gst_asf_demux_check_activate_streams (demux, force))
+      return GST_FLOW_OK;
+    /* streams are now activated */
+  }
+
+  /* wait until we had a chance to "lock on" some payload's timestamp */
+  if (G_UNLIKELY (demux->need_newsegment
+          && !GST_CLOCK_TIME_IS_VALID (demux->segment_ts)))
+    return GST_FLOW_OK;
+
+  while ((stream = gst_asf_demux_find_stream_with_complete_payload (demux))) {
+    AsfPayload *payload;
+
+    payload = &g_array_index (stream->payloads, AsfPayload, 0);
+
+#ifdef ASFDEMUX_MODIFICATION
+    if(stream->is_video) {
+      demux->current_ts = payload->ts;
+    }
+    if ((demux->segment.rate > 1.0) && (stream->is_video) && (payload->ts > demux->segment.start)) {
+      if (!gst_asf_demux_forward_trickplay (demux, stream, payload)) {
+        gst_buffer_replace (&payload->buf, NULL);
+        if (stream->payloads->len > 0) {
+          g_array_remove_index (stream->payloads, 0);
+        }
+        GST_WARNING_OBJECT (demux, "returning from foward trick play with %s", gst_flow_get_name (stream->last_flow));
+        break;
+      }
+    } else if(demux->segment.rate<0.0 && stream->is_video) {
+      if (!gst_asf_demux_backward_trickplay(demux, stream, payload)) {
+        gst_buffer_replace (&payload->buf, NULL);
+
+        if (stream->payloads->len > 0) {
+          g_array_remove_index (stream->payloads, 0);
+        }
+        GST_WARNING_OBJECT (demux, "returning from backward trick play with %s", gst_flow_get_name (stream->last_flow));
+
+        if (stream->last_flow == GST_FLOW_ERROR)
+          break;
+        else
+          continue;
+      }
+    }
+#endif
+
+    /* do we need to send a newsegment event */
+    if ((G_UNLIKELY (demux->need_newsegment))) {
+
+      /* safe default if insufficient upstream info */
+      if (!GST_CLOCK_TIME_IS_VALID (demux->in_gap))
+        demux->in_gap = 0;
+
+      if (demux->segment.stop == GST_CLOCK_TIME_NONE &&
+          demux->segment.duration > 0) {
+        /* slight HACK; prevent clipping of last bit */
+        demux->segment.stop = demux->segment.duration + demux->in_gap;
+      }
+
+      /* FIXME : only if ACCURATE ! */
+      if (G_LIKELY (!demux->accurate
+              && (GST_CLOCK_TIME_IS_VALID (payload->ts)))) {
+        GST_DEBUG ("Adjusting newsegment start to %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (payload->ts));
+        demux->segment.start = payload->ts;
+        demux->segment.time = payload->ts;
+      }
+
+      GST_DEBUG_OBJECT (demux, "sending new-segment event %" GST_SEGMENT_FORMAT,
+          &demux->segment);
+#ifdef ASFDEMUX_MODIFICATION
+      if (demux->segment.rate > 0.0) {
+        /* note: we fix up all timestamps to start from 0, so this should be ok */
+           gst_asf_demux_send_event_unlocked (demux,
+                         gst_event_new_new_segment (FALSE, demux->segment.rate,
+                                 GST_FORMAT_TIME, demux->segment.start, demux->segment.stop,
+                                 demux->segment.start));
+      } else if (demux->segment.rate < 0.0) {
+        demux->segment.stop = demux->segment.last_stop;
+        demux->segment.start = 0.0;
+        demux->segment.time = 0.0;
+               
+        if(demux->segment.stop < payload->ts) {
+          GST_WARNING ("Adjusting newsegment stop to %" GST_TIME_FORMAT, GST_TIME_ARGS (payload->ts));
+          demux->segment.stop=payload->ts+GST_SECOND;
+        }
+        /* note: we fix up all timestamps to start from 0, so this should be ok */
+           gst_asf_demux_send_event_unlocked (demux,
+                         gst_event_new_new_segment (FALSE, demux->segment.rate,
+                                 GST_FORMAT_TIME, demux->segment.start, demux->segment.stop,
+                                 demux->segment.start));
+      }
+#endif
+      /* now post any global tags we may have found */
+      if (demux->taglist == NULL)
+        demux->taglist = gst_tag_list_new ();
+
+      gst_tag_list_add (demux->taglist, GST_TAG_MERGE_REPLACE,
+          GST_TAG_CONTAINER_FORMAT, "ASF", NULL);
+
+      GST_DEBUG_OBJECT (demux, "global tags: %" GST_PTR_FORMAT, demux->taglist);
+      gst_element_found_tags (GST_ELEMENT (demux), demux->taglist);
+      demux->taglist = NULL;
+
+      demux->need_newsegment = FALSE;
+      demux->segment_running = TRUE;
+    }
+
+    /* Do we have tags pending for this stream? */
+    if (G_UNLIKELY (stream->pending_tags)) {
+      GST_LOG_OBJECT (stream->pad, "%" GST_PTR_FORMAT, stream->pending_tags);
+      gst_element_found_tags_for_pad (GST_ELEMENT (demux), stream->pad,
+          stream->pending_tags);
+      stream->pending_tags = NULL;
+    }
+
+    /* We have the whole packet now so we should push the packet to
+     * the src pad now. First though we should check if we need to do
+     * descrambling */
+    if (G_UNLIKELY (demux->span > 1)) {
+      gst_asf_demux_descramble_buffer (demux, stream, &payload->buf);
+    }
+
+    if ((payload->buf)->mini_object.refcount == 0) {
+        GST_ERROR_OBJECT (stream->pad, "before metadata buffer : payload =  %p, writable = %d & cnt = %d",
+                                       payload, gst_buffer_is_metadata_writable(payload->buf), (payload->buf)->mini_object.refcount);
+        GST_ERROR_OBJECT (demux, "PUSH : media object ts     : %" GST_TIME_FORMAT, GST_TIME_ARGS (payload->ts));
+    }
+    payload->buf = gst_buffer_make_metadata_writable (payload->buf);
+
+    if (G_LIKELY (!payload->keyframe)) {
+      GST_BUFFER_FLAG_SET (payload->buf, GST_BUFFER_FLAG_DELTA_UNIT);
+    }
+
+    if (G_UNLIKELY (stream->discont)) {
+      GST_DEBUG_OBJECT (stream->pad, "marking DISCONT on stream");
+      GST_BUFFER_FLAG_SET (payload->buf, GST_BUFFER_FLAG_DISCONT);
+      stream->discont = FALSE;
+    }
+
+    if (G_UNLIKELY (stream->is_video && payload->par_x && payload->par_y &&
+            (payload->par_x != stream->par_x) &&
+            (payload->par_y != stream->par_y))) {
+      GST_DEBUG ("Updating PAR (%d/%d => %d/%d)",
+          stream->par_x, stream->par_y, payload->par_x, payload->par_y);
+      stream->par_x = payload->par_x;
+      stream->par_y = payload->par_y;
+      gst_caps_set_simple (stream->caps, "pixel-aspect-ratio",
+          GST_TYPE_FRACTION, stream->par_x, stream->par_y, NULL);
+      gst_pad_set_caps (stream->pad, stream->caps);
+    }
+
+    if (G_UNLIKELY (stream->interlaced != payload->interlaced)) {
+      GST_DEBUG ("Updating interlaced status (%d => %d)", stream->interlaced,
+          payload->interlaced);
+      stream->interlaced = payload->interlaced;
+      gst_caps_set_simple (stream->caps, "interlaced", G_TYPE_BOOLEAN,
+          stream->interlaced, NULL);
+    }
+
+    gst_buffer_set_caps (payload->buf, stream->caps);
+
+    /* (sort of) interpolate timestamps using upstream "frame of reference",
+     * typically useful for live src, but might (unavoidably) mess with
+     * position reporting if a live src is playing not so live content
+     * (e.g. rtspsrc taking some time to fall back to tcp) */
+    GST_BUFFER_TIMESTAMP (payload->buf) = payload->ts + demux->in_gap;
+    if (payload->duration == GST_CLOCK_TIME_NONE
+        && stream->ext_props.avg_time_per_frame != 0)
+      GST_BUFFER_DURATION (payload->buf) =
+          stream->ext_props.avg_time_per_frame * 100;
+    else
+      GST_BUFFER_DURATION (payload->buf) = payload->duration;
+
+    /* FIXME: we should really set durations on buffers if we can */
+
+    GST_INFO_OBJECT (stream->pad, "pushing buffer [%p], ts=%" GST_TIME_FORMAT
+        ", dur=%" GST_TIME_FORMAT " size=%u", payload,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (payload->buf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (payload->buf)),
+        GST_BUFFER_SIZE (payload->buf));
+
+#ifdef ASFDEMUX_MODIFICATION
+    /* Set last_stop with the keyframe timestamp we pushed of that stream */  
+    gst_segment_set_last_stop (&demux->segment, GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (payload->buf));
+#endif
+    ret = gst_pad_push (stream->pad, payload->buf);
+    ret = gst_asf_demux_aggregate_flow_return (demux, stream, ret);
+    payload->buf = NULL;
+    g_array_remove_index (stream->payloads, 0);
+
+    /* Break out as soon as we have an issue */
+    if (G_UNLIKELY (ret != GST_FLOW_OK))
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_asf_demux_check_buffer_is_header (GstASFDemux * demux, GstBuffer * buf)
+{
+  AsfObject obj;
+  g_assert (buf != NULL);
+
+  GST_LOG_OBJECT (demux, "Checking if buffer is a header");
+
+  /* we return false on buffer too small */
+  if (GST_BUFFER_SIZE (buf) < ASF_OBJECT_HEADER_SIZE)
+    return FALSE;
+
+  /* check if it is a header */
+  asf_demux_peek_object (demux, GST_BUFFER_DATA (buf),
+      ASF_OBJECT_HEADER_SIZE, &obj, TRUE);
+  if (obj.id == ASF_OBJ_HEADER) {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+static gboolean
+gst_asf_demux_check_chained_asf (GstASFDemux * demux)
+{
+  guint64 off = demux->data_offset + (demux->packet * demux->packet_size);
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstBuffer *buf = NULL;
+  gboolean header = FALSE;
+
+  /* TODO maybe we should skip index objects after the data and look
+   * further for a new header */
+  if (gst_asf_demux_pull_data (demux, off, ASF_OBJECT_HEADER_SIZE, &buf, &ret)) {
+    g_assert (buf != NULL);
+    /* check if it is a header */
+    if (gst_asf_demux_check_buffer_is_header (demux, buf)) {
+      GST_DEBUG_OBJECT (demux, "new base offset: %" G_GUINT64_FORMAT, off);
+      demux->base_offset = off;
+      header = TRUE;
+    }
+
+    gst_buffer_unref (buf);
+  }
+
+  return header;
+}
+
+static void
+gst_asf_demux_loop (GstASFDemux * demux)
+{
+  GstFlowReturn flow = GST_FLOW_OK;
+  GstBuffer *buf = NULL;
+  guint64 off;
+  gboolean sent_eos = FALSE;
+
+  if (G_UNLIKELY (demux->state == GST_ASF_DEMUX_STATE_HEADER)) {
+#ifdef ASFDEMUX_MODIFICATION
+    gint i;
+    gboolean bret = FALSE;
+#endif
+    if (!gst_asf_demux_pull_headers (demux)) {
+      flow = GST_FLOW_ERROR;
+      goto pause;
+    }
+
+    gst_asf_demux_pull_indices (demux);
+
+#ifdef ASFDEMUX_MODIFICATION
+    for(i=0;i<demux->num_streams;++i) {
+      if(demux->stream[i].is_video) {
+        guint idx_entries = 0;
+        guint entries_offset = 2;
+
+        GST_DEBUG ("sidx interval = %"GST_TIME_FORMAT, GST_TIME_ARGS (demux->sidx_interval));
+        if (demux->sidx_interval)
+          idx_entries = gst_util_uint64_scale (demux->play_time, 1, demux->sidx_interval);
+        else
+          idx_entries = gst_util_uint64_scale (demux->play_time, 1, GST_SECOND);
+
+        if ((idx_entries - entries_offset) > demux->sidx_num_entries) {
+          GST_INFO_OBJECT (demux, "Index table is not complete.. need to rebuild");
+          demux->sidx_num_entries = 0;
+        }
+
+        if (G_UNLIKELY (demux->sidx_num_entries == 0 || demux->sidx_interval == 0)) {
+          GstClockTime ts = gst_util_get_timestamp ();
+
+          /* File does not index table for seeking and trickplay, build it */
+          GST_INFO_OBJECT (demux, "Video Stream does not have index table..Creating it");
+
+          bret = gst_asf_demux_create_simple_index_table (demux);
+          if (FALSE == bret) {
+            GST_ERROR_OBJECT (demux, "Failed to create index table...");
+            goto parse_error;
+          }
+          ts = gst_util_get_timestamp () - ts;
+          GST_INFO_OBJECT (demux, "Time taken to prepare index table is %" GST_TIME_FORMAT, GST_TIME_ARGS (ts));
+        }
+        demux->vidStrmId = i;
+        GST_INFO_OBJECT (demux, "ASF VIDEO STREAM ID %d", demux->vidStrmId);
+      } else {
+        demux->audStrmId = i;
+        GST_INFO_OBJECT (demux, "ASF AUDIO STREAM ID %d", demux->audStrmId);
+      }
+    }
+#endif
+  }
+
+  g_assert (demux->state == GST_ASF_DEMUX_STATE_DATA);
+
+  if (G_UNLIKELY (demux->num_packets != 0
+          && demux->packet >= demux->num_packets))
+    goto eos;
+
+  GST_LOG_OBJECT (demux, "packet %u/%u", (guint) demux->packet + 1,
+      (guint) demux->num_packets);
+
+  off = demux->data_offset + (demux->packet * demux->packet_size);
+
+  if (G_UNLIKELY (!gst_asf_demux_pull_data (demux, off,
+              demux->packet_size * demux->speed_packets, &buf, &flow))) {
+    GST_DEBUG_OBJECT (demux, "got flow %s", gst_flow_get_name (flow));
+    if (flow == GST_FLOW_UNEXPECTED)
+      goto eos;
+    else if (flow == GST_FLOW_WRONG_STATE) {
+      GST_DEBUG_OBJECT (demux, "Not fatal");
+      goto pause;
+    } else
+      goto read_failed;
+  }
+
+  if (G_LIKELY (demux->speed_packets == 1)) {
+    /* FIXME: maybe we should just skip broken packets and error out only
+     * after a few broken packets in a row? */
+    GST_OBJECT_LOCK (demux);
+    if (G_UNLIKELY (!gst_asf_demux_parse_packet (demux, buf))) {
+      /* when we don't know when the data object ends, we should check
+       * for a chained asf */
+      GST_OBJECT_UNLOCK (demux);
+      if (demux->num_packets == 0) {
+        if (gst_asf_demux_check_buffer_is_header (demux, buf)) {
+          GST_INFO_OBJECT (demux, "Chained asf found");
+          demux->base_offset = off;
+          gst_asf_demux_reset (demux, TRUE);
+          gst_buffer_unref (buf);
+          return;
+        }
+      }
+      goto parse_error;
+    }
+    GST_OBJECT_UNLOCK (demux);
+    flow = gst_asf_demux_push_complete_payloads (demux, FALSE);
+
+    ++demux->packet;
+
+  } else {
+    guint n;
+    for (n = 0; n < demux->speed_packets; n++) {
+      GstBuffer *sub;
+    GST_OBJECT_LOCK (demux);
+
+      sub =
+          gst_buffer_create_sub (buf, n * demux->packet_size,
+          demux->packet_size);
+      /* FIXME: maybe we should just skip broken packets and error out only
+       * after a few broken packets in a row? */
+      if (G_UNLIKELY (!gst_asf_demux_parse_packet (demux, sub))) {
+      GST_OBJECT_UNLOCK (demux);
+
+        /* when we don't know when the data object ends, we should check
+         * for a chained asf */
+        if (demux->num_packets == 0) {
+          if (gst_asf_demux_check_buffer_is_header (demux, sub)) {
+            GST_INFO_OBJECT (demux, "Chained asf found");
+            demux->base_offset = off + n * demux->packet_size;
+            gst_asf_demux_reset (demux, TRUE);
+            gst_buffer_unref (sub);
+            gst_buffer_unref (buf);
+            return;
+          }
+        }
+        goto parse_error;
+      }
+      GST_OBJECT_UNLOCK (demux);
+
+      gst_buffer_unref (sub);
+
+      flow = gst_asf_demux_push_complete_payloads (demux, FALSE);
+
+      ++demux->packet;
+
+    }
+
+    /* reset speed pull */
+    demux->speed_packets = 1;
+  }
+
+  gst_buffer_unref (buf);
+
+#ifdef LAST_STOP_SEGMENT
+  GST_LOG_OBJECT(demux, "checking eos... stop packet  = %d, cur packet = %d",
+    (guint)demux->packet_to_stop, (guint)demux->packet);
+
+  if (G_UNLIKELY ( demux->packet_to_stop > 0
+    && demux->num_packets > 0
+       && demux->packet_to_stop <= demux->packet)) {
+       demux->packet_to_stop = 0;
+       GST_INFO_OBJECT (demux, "reached EOS");
+       demux->packet_to_stop = 0;
+       goto eos;
+  }
+
+  if(G_LIKELY (demux->trickplay_info.resume_nrl_play)) {
+    GST_LOG_OBJECT (demux, "reached EOS by backward Trickplay");
+       demux->trickplay_info.resume_nrl_play = FALSE;
+       goto eos;
+  }
+#endif
+
+#ifdef ASFDEMUX_MODIFICATION
+  if (G_UNLIKELY (demux->num_packets > 0
+          && demux->packet >= demux->num_packets) || demux->current_ts >= demux->stop_ts) {
+#else
+  if (G_UNLIKELY (demux->num_packets > 0
+          && demux->packet >= demux->num_packets)) {
+#endif
+    GST_LOG_OBJECT (demux, "reached EOS");
+    goto eos;
+  }
+
+  if (G_UNLIKELY (flow != GST_FLOW_OK)) {
+    GST_DEBUG_OBJECT (demux, "pushing complete payloads failed");
+    goto pause;
+  }
+
+  /* check if we're at the end of the configured segment */
+  /* FIXME: check if segment end reached etc. */
+
+  return;
+
+eos:
+  {
+    /* if we haven't activated our streams yet, this might be because we have
+     * less data queued than required for preroll; force stream activation and
+     * send any pending payloads before sending EOS */
+    if (!demux->activated_streams)
+      gst_asf_demux_push_complete_payloads (demux, TRUE);
+
+    /* we want to push an eos or post a segment-done in any case */
+    if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
+      gint64 stop;
+
+      /* for segment playback we need to post when (in stream time)
+       * we stopped, this is either stop (when set) or the duration. */
+      if ((stop = demux->segment.stop) == -1)
+        stop = demux->segment.duration;
+
+      GST_INFO_OBJECT (demux, "Posting segment-done, at end of segment");
+      gst_element_post_message (GST_ELEMENT_CAST (demux),
+          gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
+              stop));
+    } else if (flow != GST_FLOW_UNEXPECTED) {
+      /* check if we have a chained asf, in case, we don't eos yet */
+      if (gst_asf_demux_check_chained_asf (demux)) {
+        GST_INFO_OBJECT (demux, "Chained ASF starting");
+        gst_asf_demux_reset (demux, TRUE);
+        return;
+      }
+    }
+    /* normal playback, send EOS to all linked pads */
+    GST_INFO_OBJECT (demux, "Sending EOS, at end of stream");
+    gst_asf_demux_send_event_unlocked (demux, gst_event_new_eos ());
+    sent_eos = TRUE;
+    /* ... and fall through to pause */
+  }
+pause:
+  {
+    GST_DEBUG_OBJECT (demux, "pausing task, flow return: %s",
+        gst_flow_get_name (flow));
+    demux->segment_running = FALSE;
+    gst_pad_pause_task (demux->sinkpad);
+
+    /* For the error cases (not EOS) */
+    if (!sent_eos) {
+      if (flow == GST_FLOW_UNEXPECTED)
+        gst_asf_demux_send_event_unlocked (demux, gst_event_new_eos ());
+      else if (flow < GST_FLOW_UNEXPECTED || flow == GST_FLOW_NOT_LINKED) {
+        /* Post an error. Hopefully something else already has, but if not... */
+        GST_ELEMENT_ERROR (demux, STREAM, FAILED,
+            (_("Internal data stream error.")),
+            ("streaming stopped, reason %s", gst_flow_get_name (flow)));
+      }
+    }
+    return;
+  }
+
+/* ERRORS */
+read_failed:
+  {
+    GST_DEBUG_OBJECT (demux, "Read failed, doh");
+    gst_asf_demux_send_event_unlocked (demux, gst_event_new_eos ());
+    flow = GST_FLOW_UNEXPECTED;
+    goto pause;
+  }
+parse_error:
+  {
+    gst_buffer_unref (buf);
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("Error parsing ASF packet %u", (guint) demux->packet));
+    gst_asf_demux_send_event_unlocked (demux, gst_event_new_eos ());
+    flow = GST_FLOW_ERROR;
+    goto pause;
+  }
+}
+
+#define GST_ASF_DEMUX_CHECK_HEADER_YES       0
+#define GST_ASF_DEMUX_CHECK_HEADER_NO        1
+#define GST_ASF_DEMUX_CHECK_HEADER_NEED_DATA 2
+
+static gint
+gst_asf_demux_check_header (GstASFDemux * demux)
+{
+  AsfObject obj;
+  guint8 *cdata = (guint8 *) gst_adapter_peek (demux->adapter,
+      ASF_OBJECT_HEADER_SIZE);
+  if (cdata == NULL)            /* need more data */
+    return GST_ASF_DEMUX_CHECK_HEADER_NEED_DATA;
+
+  asf_demux_peek_object (demux, cdata, ASF_OBJECT_HEADER_SIZE, &obj, FALSE);
+  if (obj.id != ASF_OBJ_HEADER) {
+    return GST_ASF_DEMUX_CHECK_HEADER_NO;
+  } else {
+    return GST_ASF_DEMUX_CHECK_HEADER_YES;
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstASFDemux *demux;
+
+  demux = GST_ASF_DEMUX (GST_PAD_PARENT (pad));
+
+  GST_LOG_OBJECT (demux, "buffer: size=%u, offset=%" G_GINT64_FORMAT ", time=%"
+      GST_TIME_FORMAT, GST_BUFFER_SIZE (buf), GST_BUFFER_OFFSET (buf),
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+  if (G_UNLIKELY (GST_BUFFER_IS_DISCONT (buf))) {
+    GST_DEBUG_OBJECT (demux, "received DISCONT");
+    gst_asf_demux_mark_discont (demux);
+  }
+
+  if (G_UNLIKELY ((!GST_CLOCK_TIME_IS_VALID (demux->in_gap) &&
+              GST_BUFFER_TIMESTAMP_IS_VALID (buf)))) {
+    demux->in_gap = GST_BUFFER_TIMESTAMP (buf) - demux->in_segment.start;
+    GST_DEBUG_OBJECT (demux, "upstream segment start %" GST_TIME_FORMAT
+        ", interpolation gap: %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (demux->in_segment.start), GST_TIME_ARGS (demux->in_gap));
+  }
+
+  gst_adapter_push (demux->adapter, buf);
+
+  switch (demux->state) {
+    case GST_ASF_DEMUX_STATE_INDEX:{
+      gint result = gst_asf_demux_check_header (demux);
+      if (result == GST_ASF_DEMUX_CHECK_HEADER_NEED_DATA)       /* need more data */
+        break;
+
+      if (result == GST_ASF_DEMUX_CHECK_HEADER_NO) {
+        /* we don't care about this, probably an index */
+        /* TODO maybe would be smarter to skip all the indices
+         * until we got a new header or EOS to decide */
+        GST_LOG_OBJECT (demux, "Received index object, its EOS");
+        goto eos;
+      } else {
+        GST_INFO_OBJECT (demux, "Chained asf starting");
+        /* cleanup and get ready for a chained asf */
+        gst_asf_demux_reset (demux, TRUE);
+        /* fall through */
+      }
+    }
+    case GST_ASF_DEMUX_STATE_HEADER:{
+      ret = gst_asf_demux_chain_headers (demux);
+      if (demux->state != GST_ASF_DEMUX_STATE_DATA)
+        break;
+      /* otherwise fall through */
+    }
+    case GST_ASF_DEMUX_STATE_DATA:
+    {
+      guint64 data_size;
+
+      data_size = demux->packet_size;
+
+      while (gst_adapter_available (demux->adapter) >= data_size) {
+        GstBuffer *buf;
+
+        /* we don't know the length of the stream
+         * check for a chained asf everytime */
+        if (demux->num_packets == 0) {
+          gint result = gst_asf_demux_check_header (demux);
+
+          if (result == GST_ASF_DEMUX_CHECK_HEADER_YES) {
+            GST_INFO_OBJECT (demux, "Chained asf starting");
+            /* cleanup and get ready for a chained asf */
+            gst_asf_demux_reset (demux, TRUE);
+            break;
+          }
+        } else if (G_UNLIKELY (demux->num_packets != 0 && demux->packet >= 0
+                && demux->packet >= demux->num_packets)) {
+          /* do not overshoot data section when streaming */
+          break;
+        }
+
+        buf = gst_adapter_take_buffer (demux->adapter, data_size);
+
+        /* FIXME: maybe we should just skip broken packets and error out only
+         * after a few broken packets in a row? */
+        if (G_UNLIKELY (!gst_asf_demux_parse_packet (demux, buf))) {
+          GST_WARNING_OBJECT (demux, "Parse error");
+        }
+
+        gst_buffer_unref (buf);
+
+        ret = gst_asf_demux_push_complete_payloads (demux, FALSE);
+
+        if (demux->packet >= 0)
+          ++demux->packet;
+      }
+      if (G_UNLIKELY (demux->num_packets != 0 && demux->packet >= 0
+              && demux->packet >= demux->num_packets)) {
+        demux->state = GST_ASF_DEMUX_STATE_INDEX;
+      }
+      break;
+    }
+    default:
+      g_assert_not_reached ();
+  }
+
+done:
+  if (ret != GST_FLOW_OK)
+    GST_DEBUG_OBJECT (demux, "flow: %s", gst_flow_get_name (ret));
+
+  return ret;
+
+eos:
+  {
+    GST_DEBUG_OBJECT (demux, "Handled last packet, setting EOS");
+    ret = GST_FLOW_UNEXPECTED;
+    goto done;
+  }
+}
+
+static inline gboolean
+gst_asf_demux_skip_bytes (guint num_bytes, guint8 ** p_data, guint64 * p_size)
+{
+  if (*p_size < num_bytes)
+    return FALSE;
+
+  *p_data += num_bytes;
+  *p_size -= num_bytes;
+  return TRUE;
+}
+
+static inline guint8
+gst_asf_demux_get_uint8 (guint8 ** p_data, guint64 * p_size)
+{
+  guint8 ret;
+
+  g_assert (*p_size >= 1);
+  ret = GST_READ_UINT8 (*p_data);
+  *p_data += sizeof (guint8);
+  *p_size -= sizeof (guint8);
+  return ret;
+}
+
+static inline guint16
+gst_asf_demux_get_uint16 (guint8 ** p_data, guint64 * p_size)
+{
+  guint16 ret;
+
+  g_assert (*p_size >= 2);
+  ret = GST_READ_UINT16_LE (*p_data);
+  *p_data += sizeof (guint16);
+  *p_size -= sizeof (guint16);
+  return ret;
+}
+
+static inline guint32
+gst_asf_demux_get_uint32 (guint8 ** p_data, guint64 * p_size)
+{
+  guint32 ret;
+
+  g_assert (*p_size >= 4);
+  ret = GST_READ_UINT32_LE (*p_data);
+  *p_data += sizeof (guint32);
+  *p_size -= sizeof (guint32);
+  return ret;
+}
+
+static inline guint64
+gst_asf_demux_get_uint64 (guint8 ** p_data, guint64 * p_size)
+{
+  guint64 ret;
+
+  g_assert (*p_size >= 8);
+  ret = GST_READ_UINT64_LE (*p_data);
+  *p_data += sizeof (guint64);
+  *p_size -= sizeof (guint64);
+  return ret;
+}
+
+static inline guint32
+gst_asf_demux_get_var_length (guint8 type, guint8 ** p_data, guint64 * p_size)
+{
+  switch (type) {
+    case 0:
+      return 0;
+
+    case 1:
+      g_assert (*p_size >= 1);
+      return gst_asf_demux_get_uint8 (p_data, p_size);
+
+    case 2:
+      g_assert (*p_size >= 2);
+      return gst_asf_demux_get_uint16 (p_data, p_size);
+
+    case 3:
+      g_assert (*p_size >= 4);
+      return gst_asf_demux_get_uint32 (p_data, p_size);
+
+    default:
+      g_assert_not_reached ();
+      break;
+  }
+  return 0;
+}
+
+static gboolean
+gst_asf_demux_get_buffer (GstBuffer ** p_buf, guint num_bytes_to_read,
+    guint8 ** p_data, guint64 * p_size)
+{
+  *p_buf = NULL;
+
+  if (*p_size < num_bytes_to_read)
+    return FALSE;
+
+  *p_buf = gst_buffer_new_and_alloc (num_bytes_to_read);
+  memcpy (GST_BUFFER_DATA (*p_buf), *p_data, num_bytes_to_read);
+  *p_data += num_bytes_to_read;
+  *p_size -= num_bytes_to_read;
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_get_bytes (guint8 ** p_buf, guint num_bytes_to_read,
+    guint8 ** p_data, guint64 * p_size)
+{
+  *p_buf = NULL;
+
+  if (*p_size < num_bytes_to_read)
+    return FALSE;
+
+  *p_buf = g_memdup (*p_data, num_bytes_to_read);
+  *p_data += num_bytes_to_read;
+  *p_size -= num_bytes_to_read;
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_get_string (gchar ** p_str, guint16 * p_strlen,
+    guint8 ** p_data, guint64 * p_size)
+{
+  guint16 s_length;
+  guint8 *s;
+
+  *p_str = NULL;
+
+  if (*p_size < 2)
+    return FALSE;
+
+  s_length = gst_asf_demux_get_uint16 (p_data, p_size);
+
+  if (p_strlen)
+    *p_strlen = s_length;
+
+  if (s_length == 0) {
+    GST_WARNING ("zero-length string");
+    *p_str = g_strdup ("");
+    return TRUE;
+  }
+
+  if (!gst_asf_demux_get_bytes (&s, s_length, p_data, p_size))
+    return FALSE;
+
+  g_assert (s != NULL);
+
+  /* just because They don't exist doesn't
+   * mean They are not out to get you ... */
+  if (s[s_length - 1] != '\0') {
+    s = g_realloc (s, s_length + 1);
+    s[s_length] = '\0';
+  }
+
+  *p_str = (gchar *) s;
+  return TRUE;
+}
+
+
+static void
+gst_asf_demux_get_guid (ASFGuid * guid, guint8 ** p_data, guint64 * p_size)
+{
+  g_assert (*p_size >= 4 * sizeof (guint32));
+
+  guid->v1 = gst_asf_demux_get_uint32 (p_data, p_size);
+  guid->v2 = gst_asf_demux_get_uint32 (p_data, p_size);
+  guid->v3 = gst_asf_demux_get_uint32 (p_data, p_size);
+  guid->v4 = gst_asf_demux_get_uint32 (p_data, p_size);
+}
+
+static gboolean
+gst_asf_demux_get_stream_audio (asf_stream_audio * audio, guint8 ** p_data,
+    guint64 * p_size)
+{
+  if (*p_size < (2 + 2 + 4 + 4 + 2 + 2 + 2))
+    return FALSE;
+
+  /* WAVEFORMATEX Structure */
+  audio->codec_tag = gst_asf_demux_get_uint16 (p_data, p_size);
+  audio->channels = gst_asf_demux_get_uint16 (p_data, p_size);
+  audio->sample_rate = gst_asf_demux_get_uint32 (p_data, p_size);
+  audio->byte_rate = gst_asf_demux_get_uint32 (p_data, p_size);
+  audio->block_align = gst_asf_demux_get_uint16 (p_data, p_size);
+  audio->word_size = gst_asf_demux_get_uint16 (p_data, p_size);
+  /* Codec specific data size */
+  audio->size = gst_asf_demux_get_uint16 (p_data, p_size);
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_get_stream_video (asf_stream_video * video, guint8 ** p_data,
+    guint64 * p_size)
+{
+  if (*p_size < (4 + 4 + 1 + 2))
+    return FALSE;
+
+  video->width = gst_asf_demux_get_uint32 (p_data, p_size);
+  video->height = gst_asf_demux_get_uint32 (p_data, p_size);
+  video->unknown = gst_asf_demux_get_uint8 (p_data, p_size);
+  video->size = gst_asf_demux_get_uint16 (p_data, p_size);
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_get_stream_video_format (asf_stream_video_format * fmt,
+    guint8 ** p_data, guint64 * p_size)
+{
+  if (*p_size < (4 + 4 + 4 + 2 + 2 + 4 + 4 + 4 + 4 + 4 + 4))
+    return FALSE;
+
+  fmt->size = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->width = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->height = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->planes = gst_asf_demux_get_uint16 (p_data, p_size);
+  fmt->depth = gst_asf_demux_get_uint16 (p_data, p_size);
+  fmt->tag = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->image_size = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->xpels_meter = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->ypels_meter = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->num_colors = gst_asf_demux_get_uint32 (p_data, p_size);
+  fmt->imp_colors = gst_asf_demux_get_uint32 (p_data, p_size);
+  return TRUE;
+}
+
+AsfStream *
+gst_asf_demux_get_stream (GstASFDemux * demux, guint16 id)
+{
+  guint i;
+
+  for (i = 0; i < demux->num_streams; i++) {
+    if (demux->stream[i].id == id)
+      return &demux->stream[i];
+  }
+
+  GST_WARNING ("Segment found for undefined stream: (%d)", id);
+  return NULL;
+}
+
+static void
+gst_asf_demux_setup_pad (GstASFDemux * demux, GstPad * src_pad,
+    GstCaps * caps, guint16 id, gboolean is_video, GstTagList * tags)
+{
+  AsfStream *stream;
+
+  gst_pad_use_fixed_caps (src_pad);
+  gst_pad_set_caps (src_pad, caps);
+
+  gst_pad_set_event_function (src_pad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_handle_src_event));
+  gst_pad_set_query_type_function (src_pad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_get_src_query_types));
+  gst_pad_set_query_function (src_pad,
+      GST_DEBUG_FUNCPTR (gst_asf_demux_handle_src_query));
+
+  stream = &demux->stream[demux->num_streams];
+  stream->caps = caps;
+  stream->pad = src_pad;
+  stream->id = id;
+  stream->fps_known = !is_video;        /* bit hacky for audio */
+  stream->is_video = is_video;
+  stream->pending_tags = tags;
+  stream->discont = TRUE;
+  if (is_video) {
+    GstStructure *st;
+    gint par_x, par_y;
+    st = gst_caps_get_structure (caps, 0);
+    if (gst_structure_get_fraction (st, "pixel-aspect-ratio", &par_x, &par_y) &&
+        par_x > 0 && par_y > 0) {
+      GST_DEBUG ("PAR %d/%d", par_x, par_y);
+      stream->par_x = par_x;
+      stream->par_y = par_y;
+    }
+  }
+
+  stream->payloads = g_array_new (FALSE, FALSE, sizeof (AsfPayload));
+
+  GST_INFO ("Created pad %s for stream %u with caps %" GST_PTR_FORMAT,
+      GST_PAD_NAME (src_pad), demux->num_streams, caps);
+
+  ++demux->num_streams;
+
+  stream->active = FALSE;
+}
+
+static void
+gst_asf_demux_add_audio_stream (GstASFDemux * demux,
+    asf_stream_audio * audio, guint16 id, guint8 ** p_data, guint64 * p_size)
+{
+  GstTagList *tags = NULL;
+  GstBuffer *extradata = NULL;
+  GstPad *src_pad;
+  GstCaps *caps;
+  guint16 size_left = 0;
+  gchar *codec_name = NULL;
+  gchar *name = NULL;
+
+  size_left = audio->size;
+
+  /* Create the audio pad */
+  name = g_strdup_printf ("audio_%02d", demux->num_audio_streams);
+
+  src_pad = gst_pad_new_from_static_template (&audio_src_template, name);
+  g_free (name);
+
+  /* Swallow up any left over data and set up the 
+   * standard properties from the header info */
+  if (size_left) {
+    GST_INFO_OBJECT (demux, "Audio header contains %d bytes of "
+        "codec specific data", size_left);
+
+    g_assert (size_left <= *p_size);
+    gst_asf_demux_get_buffer (&extradata, size_left, p_data, p_size);
+  }
+
+  /* asf_stream_audio is the same as gst_riff_strf_auds, but with an
+   * additional two bytes indicating extradata. */
+    caps = gst_riff_create_audio_caps (audio->codec_tag, NULL,
+        (gst_riff_strf_auds *) audio, extradata, NULL, &codec_name);
+
+  if (caps == NULL) {
+    caps = gst_caps_new_simple ("audio/x-asf-unknown", "codec_id",
+        G_TYPE_INT, (gint) audio->codec_tag, NULL);
+  }
+
+  /* Informing about that audio format we just added */
+  if (codec_name) {
+    tags = gst_tag_list_new ();
+    gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC,
+        codec_name, NULL);
+    g_free (codec_name);
+  }
+
+  if (extradata)
+    gst_buffer_unref (extradata);
+
+  GST_INFO ("Adding audio stream #%u, id %u codec %u (0x%04x), tags=%"
+      GST_PTR_FORMAT, demux->num_audio_streams, id, audio->codec_tag,
+      audio->codec_tag, tags);
+
+  ++demux->num_audio_streams;
+
+  gst_asf_demux_setup_pad (demux, src_pad, caps, id, FALSE, tags);
+}
+
+static void
+gst_asf_demux_add_video_stream (GstASFDemux * demux,
+    asf_stream_video_format * video, guint16 id,
+    guint8 ** p_data, guint64 * p_size)
+{
+  GstTagList *tags = NULL;
+  GstBuffer *extradata = NULL;
+  GstPad *src_pad;
+  GstCaps *caps;
+  gchar *name = NULL;
+  gchar *codec_name = NULL;
+  gint size_left = video->size - 40;
+
+  /* Create the video pad */
+  name = g_strdup_printf ("video_%02d", demux->num_video_streams);
+  src_pad = gst_pad_new_from_static_template (&video_src_template, name);
+  g_free (name);
+
+  /* Now try some gstreamer formatted MIME types (from gst_avi_demux_strf_vids) */
+  if (size_left) {
+    GST_LOG ("Video header has %d bytes of codec specific data", size_left);
+    //g_assert (size_left <= *p_size); //commented to avoid SIGABORT
+    gst_asf_demux_get_buffer (&extradata, size_left, p_data, p_size);
+  }
+
+  GST_DEBUG ("video codec %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (video->tag));
+
+    /* yes, asf_stream_video_format and gst_riff_strf_vids are the same */
+    caps = gst_riff_create_video_caps (video->tag, NULL,
+                  (gst_riff_strf_vids *) video, extradata, NULL, &codec_name);
+
+  if (caps == NULL) {
+    caps = gst_caps_new_simple ("video/x-asf-unknown", "fourcc",
+        GST_TYPE_FOURCC, video->tag, NULL);
+  } else {
+    GstStructure *s;
+    gint ax, ay;
+
+    s = gst_asf_demux_get_metadata_for_stream (demux, id);
+    if (gst_structure_get_int (s, "AspectRatioX", &ax) &&
+        gst_structure_get_int (s, "AspectRatioY", &ay) && (ax > 0 && ay > 0)) {
+      gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+          ax, ay, NULL);
+
+    } else {
+      guint ax, ay;
+      /* retry with the global metadata */
+      GST_DEBUG ("Retrying with global metadata %" GST_PTR_FORMAT,
+          demux->global_metadata);
+      s = demux->global_metadata;
+      if (gst_structure_get_uint (s, "AspectRatioX", &ax) &&
+          gst_structure_get_uint (s, "AspectRatioY", &ay)) {
+        GST_DEBUG ("ax:%d, ay:%d", ax, ay);
+        if (ax > 0 && ay > 0)
+          gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+              ax, ay, NULL);
+      }
+    }
+    s = gst_caps_get_structure (caps, 0);
+    gst_structure_remove_field (s, "framerate");
+  }
+
+  /* add fourcc format to caps, some proprietary decoders seem to need it */
+  gst_caps_set_simple (caps, "format", GST_TYPE_FOURCC, video->tag, NULL);
+
+  if (codec_name) {
+    tags = gst_tag_list_new ();
+    gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
+        codec_name, NULL);
+    g_free (codec_name);
+  }
+
+  if (extradata)
+    gst_buffer_unref (extradata);
+
+  GST_INFO ("Adding video stream #%u, id %u, codec %"
+      GST_FOURCC_FORMAT " (0x%08x)", demux->num_video_streams, id,
+      GST_FOURCC_ARGS (video->tag), video->tag);
+
+  ++demux->num_video_streams;
+
+  gst_asf_demux_setup_pad (demux, src_pad, caps, id, TRUE, tags);
+}
+
+static void
+gst_asf_demux_activate_stream (GstASFDemux * demux, AsfStream * stream)
+{
+  if (!stream->active) {
+    GST_INFO_OBJECT (demux, "Activating stream %2u, pad %s, caps %"
+        GST_PTR_FORMAT, stream->id, GST_PAD_NAME (stream->pad), stream->caps);
+    gst_pad_set_active (stream->pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT_CAST (demux), stream->pad);
+    stream->active = TRUE;
+  }
+}
+
+static AsfStream *
+gst_asf_demux_parse_stream_object (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  AsfCorrectionType correction_type;
+  AsfStreamType stream_type;
+  GstClockTime time_offset;
+  gboolean is_encrypted;
+  guint16 stream_id;
+  guint16 flags;
+  ASFGuid guid;
+  guint stream_specific_size;
+  guint type_specific_size;
+  guint unknown;
+
+  /* Get the rest of the header's header */
+  if (size < (16 + 16 + 8 + 4 + 4 + 2 + 4))
+    goto not_enough_data;
+
+  gst_asf_demux_get_guid (&guid, &data, &size);
+  stream_type = gst_asf_demux_identify_guid (asf_stream_guids, &guid);
+
+  gst_asf_demux_get_guid (&guid, &data, &size);
+  correction_type = gst_asf_demux_identify_guid (asf_correction_guids, &guid);
+
+  time_offset = gst_asf_demux_get_uint64 (&data, &size) * 100;
+
+  type_specific_size = gst_asf_demux_get_uint32 (&data, &size);
+  stream_specific_size = gst_asf_demux_get_uint32 (&data, &size);
+
+  flags = gst_asf_demux_get_uint16 (&data, &size);
+  stream_id = flags & 0x7f;
+  is_encrypted = ! !((flags & 0x8000) << 15);
+  unknown = gst_asf_demux_get_uint32 (&data, &size);
+
+  GST_DEBUG_OBJECT (demux, "Found stream %u, time_offset=%" GST_TIME_FORMAT,
+      stream_id, GST_TIME_ARGS (time_offset));
+
+  switch (stream_type) {
+    case ASF_STREAM_AUDIO:{
+      asf_stream_audio audio_object;
+#ifdef ASFDEMUX_MODIFICATION
+      if(demux->num_audio_streams)
+        goto not_supported;
+#endif
+
+      if (!gst_asf_demux_get_stream_audio (&audio_object, &data, &size))
+        goto not_enough_data;
+
+      GST_INFO ("Object is an audio stream with %u bytes of additional data",
+          audio_object.size);
+
+      gst_asf_demux_add_audio_stream (demux, &audio_object, stream_id,
+          &data, &size);
+#ifdef ASFDEMUX_MODIFICATION
+      demux->audStrmId = stream_id-1;
+      GST_INFO_OBJECT (demux, "Asf Audio Stream Id Is %u",demux->audStrmId);
+#endif
+
+      switch (correction_type) {
+        case ASF_CORRECTION_ON:{
+          guint span, packet_size, chunk_size, data_size, silence_data;
+
+          GST_INFO ("Using error correction");
+
+          if (size < (1 + 2 + 2 + 2 + 1))
+            goto not_enough_data;
+
+          span = gst_asf_demux_get_uint8 (&data, &size);
+          packet_size = gst_asf_demux_get_uint16 (&data, &size);
+          chunk_size = gst_asf_demux_get_uint16 (&data, &size);
+          data_size = gst_asf_demux_get_uint16 (&data, &size);
+          silence_data = gst_asf_demux_get_uint8 (&data, &size);
+
+          /* FIXME: shouldn't this be per-stream? */
+          demux->span = span;
+
+          GST_DEBUG_OBJECT (demux, "Descrambling ps:%u cs:%u ds:%u s:%u sd:%u",
+              packet_size, chunk_size, data_size, span, silence_data);
+
+          if (demux->span > 1) {
+            if (chunk_size == 0 || ((packet_size / chunk_size) <= 1)) {
+              /* Disable descrambling */
+              demux->span = 0;
+            } else {
+              /* FIXME: this else branch was added for
+               * weird_al_yankovic - the saga begins.asf */
+              demux->ds_packet_size = packet_size;
+              demux->ds_chunk_size = chunk_size;
+            }
+          } else {
+            /* Descambling is enabled */
+            demux->ds_packet_size = packet_size;
+            demux->ds_chunk_size = chunk_size;
+          }
+#if 0
+          /* Now skip the rest of the silence data */
+          if (data_size > 1)
+            gst_bytestream_flush (demux->bs, data_size - 1);
+#else
+          /* FIXME: CHECKME. And why -1? */
+          if (data_size > 1) {
+            if (!gst_asf_demux_skip_bytes (data_size - 1, &data, &size)) {
+              goto not_enough_data;
+            }
+          }
+#endif
+          break;
+        }
+        case ASF_CORRECTION_OFF:{
+          GST_INFO ("Error correction off");
+          if (!gst_asf_demux_skip_bytes (stream_specific_size, &data, &size))
+            goto not_enough_data;
+          break;
+        }
+        default:
+          GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+              ("Audio stream using unknown error correction"));
+          return NULL;
+      }
+
+      break;
+    }
+
+    case ASF_STREAM_VIDEO:{
+      asf_stream_video_format video_format_object;
+      asf_stream_video video_object;
+      guint16 vsize;
+#ifdef ASFDEMUX_MODIFICATION
+      if(demux->num_video_streams)
+        goto not_supported;
+#endif
+
+      if (!gst_asf_demux_get_stream_video (&video_object, &data, &size))
+        goto not_enough_data;
+
+      vsize = video_object.size - 40;   /* Byte order gets offset by single byte */
+
+      GST_INFO ("object is a video stream with %u bytes of "
+          "additional data", vsize);
+
+      if (!gst_asf_demux_get_stream_video_format (&video_format_object,
+              &data, &size)) {
+        goto not_enough_data;
+      }
+
+      gst_asf_demux_add_video_stream (demux, &video_format_object, stream_id,
+          &data, &size);
+#ifdef ASFDEMUX_MODIFICATION
+      demux->vidStrmId = stream_id-1;
+      GST_INFO_OBJECT (demux, "Asf Video Stream Id Is %u",demux->vidStrmId);
+#endif
+
+      break;
+    }
+
+    default:
+      GST_WARNING_OBJECT (demux, "Unknown stream type for stream %u",
+          stream_id);
+      break;
+  }
+
+  return gst_asf_demux_get_stream (demux, stream_id);
+
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "Unexpected end of data parsing stream object");
+    /* we'll error out later if we found no streams */
+    return NULL;
+  }
+#ifdef ASFDEMUX_MODIFICATION
+not_supported:
+  {
+    GST_WARNING_OBJECT (demux, "Only One stream is supported per stream type");
+    /* we'll error out later if we found no streams */
+    return NULL;
+  }
+#endif
+}
+
+static const gchar *
+gst_asf_demux_get_gst_tag_from_tag_name (const gchar * name_utf8)
+{
+  const struct
+  {
+    const gchar *asf_name;
+    const gchar *gst_name;
+  } tags[] = {
+    {
+    "WM/Genre", GST_TAG_GENRE}, {
+    "WM/AlbumTitle", GST_TAG_ALBUM}, {
+    "WM/AlbumArtist", GST_TAG_ARTIST}, {
+    "WM/Picture", GST_TAG_IMAGE}, {
+    "WM/Track", GST_TAG_TRACK_NUMBER}, {
+    "WM/TrackNumber", GST_TAG_TRACK_NUMBER}, {
+    "WM/Year", GST_TAG_DATE}
+    /* { "WM/Composer", GST_TAG_COMPOSER } */
+  };
+  gsize out;
+  guint i;
+
+  if (name_utf8 == NULL) {
+    GST_WARNING ("Failed to convert name to UTF8, skipping");
+    return NULL;
+  }
+
+  out = strlen (name_utf8);
+
+  for (i = 0; i < G_N_ELEMENTS (tags); ++i) {
+    if (strncmp (tags[i].asf_name, name_utf8, out) == 0) {
+      GST_LOG ("map tagname '%s' -> '%s'", name_utf8, tags[i].gst_name);
+      return tags[i].gst_name;
+    }
+  }
+
+  return NULL;
+}
+
+/* gst_asf_demux_add_global_tags() takes ownership of taglist! */
+static void
+gst_asf_demux_add_global_tags (GstASFDemux * demux, GstTagList * taglist)
+{
+  GstTagList *t;
+
+  GST_DEBUG_OBJECT (demux, "adding global tags: %" GST_PTR_FORMAT, taglist);
+
+  if (taglist == NULL)
+    return;
+
+  if (gst_tag_list_is_empty (taglist)) {
+    gst_tag_list_free (taglist);
+    return;
+  }
+
+  t = gst_tag_list_merge (demux->taglist, taglist, GST_TAG_MERGE_APPEND);
+  if (demux->taglist)
+    gst_tag_list_free (demux->taglist);
+  gst_tag_list_free (taglist);
+  demux->taglist = t;
+  GST_LOG_OBJECT (demux, "global tags now: %" GST_PTR_FORMAT, demux->taglist);
+}
+
+#define ASF_DEMUX_DATA_TYPE_UTF16LE_STRING  0
+#define ASF_DEMUX_DATA_TYPE_BYTE_ARRAY      1
+#define ASF_DEMUX_DATA_TYPE_DWORD           3
+
+static void
+asf_demux_parse_picture_tag (GstTagList * tags, const guint8 * tag_data,
+    guint tag_data_len)
+{
+  GstByteReader r;
+  const guint8 *img_data = NULL;
+  guint32 img_data_len = 0;
+  guint8 pic_type = 0;
+
+  gst_byte_reader_init (&r, tag_data, tag_data_len);
+
+  /* skip mime type string (we don't trust it and do our own typefinding),
+   * and also skip the description string, since we don't use it */
+  if (!gst_byte_reader_get_uint8 (&r, &pic_type) ||
+      !gst_byte_reader_get_uint32_le (&r, &img_data_len) ||
+      !gst_byte_reader_skip_string_utf16 (&r) ||
+      !gst_byte_reader_skip_string_utf16 (&r) ||
+      !gst_byte_reader_get_data (&r, img_data_len, &img_data)) {
+    goto not_enough_data;
+  }
+
+
+  if (!gst_tag_list_add_id3_image (tags, img_data, img_data_len, pic_type))
+    GST_DEBUG ("failed to add image extracted from WM/Picture tag to taglist");
+
+  return;
+
+not_enough_data:
+  {
+    GST_DEBUG ("Failed to read WM/Picture tag: not enough data");
+    GST_MEMDUMP ("WM/Picture data", tag_data, tag_data_len);
+    return;
+  }
+}
+
+/* Extended Content Description Object */
+static GstFlowReturn
+gst_asf_demux_process_ext_content_desc (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  /* Other known (and unused) 'text/unicode' metadata available :
+   *
+   *   WM/Lyrics =
+   *   WM/MediaPrimaryClassID = {D1607DBC-E323-4BE2-86A1-48A42A28441E}
+   *   WMFSDKVersion = 9.00.00.2980
+   *   WMFSDKNeeded = 0.0.0.0000
+   *   WM/UniqueFileIdentifier = AMGa_id=R    15334;AMGp_id=P     5149;AMGt_id=T  2324984
+   *   WM/Publisher = 4AD
+   *   WM/Provider = AMG
+   *   WM/ProviderRating = 8
+   *   WM/ProviderStyle = Rock (similar to WM/Genre)
+   *   WM/GenreID (similar to WM/Genre)
+   *   WM/TrackNumber (same as WM/Track but as a string)
+   *
+   * Other known (and unused) 'non-text' metadata available :
+   *
+   *   WM/EncodingTime
+   *   WM/MCDI
+   *   IsVBR
+   *
+   * We might want to read WM/TrackNumber and use atoi() if we don't have
+   * WM/Track
+   */
+
+  GstTagList *taglist;
+  guint16 blockcount, i;
+
+  GST_INFO_OBJECT (demux, "object is an extended content description");
+
+  taglist = gst_tag_list_new ();
+
+  /* Content Descriptor Count */
+  if (size < 2)
+    goto not_enough_data;
+
+  blockcount = gst_asf_demux_get_uint16 (&data, &size);
+
+  for (i = 1; i <= blockcount; ++i) {
+    const gchar *gst_tag_name;
+    guint16 datatype;
+    guint16 value_len;
+    guint16 name_len;
+    GValue tag_value = { 0, };
+    gsize in, out;
+    gchar *name;
+    gchar *name_utf8 = NULL;
+    gchar *value;
+
+    /* Descriptor */
+    if (!gst_asf_demux_get_string (&name, &name_len, &data, &size))
+      goto not_enough_data;
+
+    if (size < 2) {
+      g_free (name);
+      goto not_enough_data;
+    }
+    /* Descriptor Value Data Type */
+    datatype = gst_asf_demux_get_uint16 (&data, &size);
+
+    /* Descriptor Value (not really a string, but same thing reading-wise) */
+    if (!gst_asf_demux_get_string (&value, &value_len, &data, &size)) {
+      g_free (name);
+      goto not_enough_data;
+    }
+
+    name_utf8 =
+        g_convert (name, name_len, "UTF-8", "UTF-16LE", &in, &out, NULL);
+
+    if (name_utf8 != NULL) {
+      GST_DEBUG ("Found tag/metadata %s", name_utf8);
+
+      gst_tag_name = gst_asf_demux_get_gst_tag_from_tag_name (name_utf8);
+      GST_DEBUG ("gst_tag_name %s", GST_STR_NULL (gst_tag_name));
+
+      switch (datatype) {
+        case ASF_DEMUX_DATA_TYPE_UTF16LE_STRING:{
+          gchar *value_utf8;
+
+          value_utf8 = g_convert (value, value_len, "UTF-8", "UTF-16LE",
+              &in, &out, NULL);
+
+          /* get rid of tags with empty value */
+          if (value_utf8 != NULL && *value_utf8 != '\0') {
+            GST_DEBUG ("string value %s", value_utf8);
+
+            value_utf8[out] = '\0';
+
+            if (gst_tag_name != NULL) {
+              if (strcmp (gst_tag_name, GST_TAG_DATE) == 0) {
+                guint year = atoi (value_utf8);
+
+                if (year > 0) {
+                  GDate *date = g_date_new_dmy (1, 1, year);
+
+                  g_value_init (&tag_value, GST_TYPE_DATE);
+                  gst_value_set_date (&tag_value, date);
+                  g_date_free (date);
+                }
+              } else if (strcmp (gst_tag_name, GST_TAG_GENRE) == 0) {
+                guint id3v1_genre_id;
+                const gchar *genre_str;
+#ifndef ASFDEMUX_MODIFICATION
+                if (sscanf (value_utf8, "(%u)", &id3v1_genre_id) == 1 &&
+                    ((genre_str = gst_tag_id3_genre_get (id3v1_genre_id)))) {
+                  GST_DEBUG ("Genre: %s -> %s", value_utf8, genre_str);
+                  g_free (value_utf8);
+                  value_utf8 = g_strdup (genre_str);
+                }
+#else
+                GST_DEBUG_OBJECT (demux, "adding genre value = %s", value_utf8);
+                g_value_init (&tag_value, G_TYPE_STRING);
+                g_value_set_string (&tag_value, value_utf8);
+#endif
+
+              } else {
+                GType tag_type;
+
+                /* convert tag from string to other type if required */
+                tag_type = gst_tag_get_type (gst_tag_name);
+                g_value_init (&tag_value, tag_type);
+                if (!gst_value_deserialize (&tag_value, value_utf8)) {
+                  GValue from_val = { 0, };
+
+                  g_value_init (&from_val, G_TYPE_STRING);
+                  g_value_set_string (&from_val, value_utf8);
+                  if (!g_value_transform (&from_val, &tag_value)) {
+                    GST_WARNING_OBJECT (demux,
+                        "Could not transform string tag to " "%s tag type %s",
+                        gst_tag_name, g_type_name (tag_type));
+                    g_value_unset (&tag_value);
+                  }
+                  g_value_unset (&from_val);
+                }
+              }
+            } else {
+              /* metadata ! */
+              GST_DEBUG ("Setting metadata");
+              g_value_init (&tag_value, G_TYPE_STRING);
+              g_value_set_string (&tag_value, value_utf8);
+            }
+          } else if (value_utf8 == NULL) {
+            GST_WARNING ("Failed to convert string value to UTF8, skipping");
+          } else {
+            GST_DEBUG ("Skipping empty string value for %s",
+                GST_STR_NULL (gst_tag_name));
+          }
+          g_free (value_utf8);
+          break;
+        }
+        case ASF_DEMUX_DATA_TYPE_BYTE_ARRAY:{
+          if (gst_tag_name) {
+            if (!g_str_equal (gst_tag_name, GST_TAG_IMAGE)) {
+              GST_FIXME ("Unhandled byte array tag %s",
+                  GST_STR_NULL (gst_tag_name));
+              break;
+            } else {
+              asf_demux_parse_picture_tag (taglist, (guint8 *) value,
+                  value_len);
+            }
+          }
+          break;
+        }
+        case ASF_DEMUX_DATA_TYPE_DWORD:{
+          guint uint_val = GST_READ_UINT32_LE (value);
+
+          /* this is the track number */
+          g_value_init (&tag_value, G_TYPE_UINT);
+
+          /* WM/Track counts from 0 */
+          if (!strcmp (name_utf8, "WM/Track"))
+            ++uint_val;
+
+          g_value_set_uint (&tag_value, uint_val);
+          break;
+        }
+        default:{
+          GST_DEBUG ("Skipping tag %s of type %d", gst_tag_name, datatype);
+          break;
+        }
+      }
+
+      if (G_IS_VALUE (&tag_value)) {
+        if (gst_tag_name) {
+          GstTagMergeMode merge_mode = GST_TAG_MERGE_APPEND;
+
+          /* WM/TrackNumber is more reliable than WM/Track, since the latter
+           * is supposed to have a 0 base but is often wrongly written to start
+           * from 1 as well, so prefer WM/TrackNumber when we have it: either
+           * replace the value added earlier from WM/Track or put it first in
+           * the list, so that it will get picked up by _get_uint() */
+          if (strcmp (name_utf8, "WM/TrackNumber") == 0)
+            merge_mode = GST_TAG_MERGE_REPLACE;
+
+          gst_tag_list_add_values (taglist, merge_mode, gst_tag_name,
+              &tag_value, NULL);
+        } else {
+          GST_DEBUG ("Setting global metadata %s", name_utf8);
+          gst_structure_set_value (demux->global_metadata, name_utf8,
+              &tag_value);
+        }
+
+        g_value_unset (&tag_value);
+      }
+    }
+
+    g_free (name);
+    g_free (value);
+    g_free (name_utf8);
+  }
+
+  gst_asf_demux_add_global_tags (demux, taglist);
+
+  return GST_FLOW_OK;
+
+  /* Errors */
+not_enough_data:
+  {
+    GST_WARNING ("Unexpected end of data parsing ext content desc object");
+    gst_tag_list_free (taglist);
+    return GST_FLOW_OK;         /* not really fatal */
+  }
+}
+
+static GstStructure *
+gst_asf_demux_get_metadata_for_stream (GstASFDemux * demux, guint stream_num)
+{
+  gchar sname[32];
+  guint i;
+
+  g_snprintf (sname, sizeof (sname), "stream-%u", stream_num);
+
+  for (i = 0; i < gst_caps_get_size (demux->metadata); ++i) {
+    GstStructure *s;
+
+    s = gst_caps_get_structure (demux->metadata, i);
+    if (gst_structure_has_name (s, sname))
+      return s;
+  }
+
+  gst_caps_append_structure (demux->metadata, gst_structure_empty_new (sname));
+
+  /* try lookup again; demux->metadata took ownership of the structure, so we
+   * can't really make any assumptions about what happened to it, so we can't
+   * just return it directly after appending it */
+  return gst_asf_demux_get_metadata_for_stream (demux, stream_num);
+}
+
+static GstFlowReturn
+gst_asf_demux_process_metadata (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  guint16 blockcount, i;
+
+  GST_INFO_OBJECT (demux, "object is a metadata object");
+
+  /* Content Descriptor Count */
+  if (size < 2)
+    goto not_enough_data;
+
+  blockcount = gst_asf_demux_get_uint16 (&data, &size);
+
+  for (i = 0; i < blockcount; ++i) {
+    GstStructure *s;
+    guint16 lang_idx, stream_num, name_len, data_type;
+    guint32 data_len, ival;
+    gchar *name_utf8;
+
+    if (size < (2 + 2 + 2 + 2 + 4))
+      goto not_enough_data;
+
+    lang_idx = gst_asf_demux_get_uint16 (&data, &size);
+    stream_num = gst_asf_demux_get_uint16 (&data, &size);
+    name_len = gst_asf_demux_get_uint16 (&data, &size);
+    data_type = gst_asf_demux_get_uint16 (&data, &size);
+    data_len = gst_asf_demux_get_uint32 (&data, &size);
+
+    if (size < name_len + data_len)
+      goto not_enough_data;
+
+    /* convert name to UTF-8 */
+    name_utf8 = g_convert ((gchar *) data, name_len, "UTF-8", "UTF-16LE",
+        NULL, NULL, NULL);
+    gst_asf_demux_skip_bytes (name_len, &data, &size);
+
+    if (name_utf8 == NULL) {
+      GST_WARNING ("Failed to convert value name to UTF8, skipping");
+      gst_asf_demux_skip_bytes (data_len, &data, &size);
+      continue;
+    }
+
+    if (data_type != ASF_DEMUX_DATA_TYPE_DWORD) {
+      gst_asf_demux_skip_bytes (data_len, &data, &size);
+      g_free (name_utf8);
+      continue;
+    }
+
+    /* read DWORD */
+    if (size < 4) {
+      g_free (name_utf8);
+      goto not_enough_data;
+    }
+
+    ival = gst_asf_demux_get_uint32 (&data, &size);
+
+    /* skip anything else there may be, just in case */
+    gst_asf_demux_skip_bytes (data_len - 4, &data, &size);
+
+    s = gst_asf_demux_get_metadata_for_stream (demux, stream_num);
+    gst_structure_set (s, name_utf8, G_TYPE_INT, ival, NULL);
+    g_free (name_utf8);
+  }
+
+  GST_INFO_OBJECT (demux, "metadata = %" GST_PTR_FORMAT, demux->metadata);
+  return GST_FLOW_OK;
+
+  /* Errors */
+not_enough_data:
+  {
+    GST_WARNING ("Unexpected end of data parsing metadata object");
+    return GST_FLOW_OK;         /* not really fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_header (GstASFDemux * demux, guint8 * data, guint64 size)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint32 i, num_objects;
+  guint8 unknown;
+
+  /* Get the rest of the header's header */
+  if (size < (4 + 1 + 1))
+    goto not_enough_data;
+
+  num_objects = gst_asf_demux_get_uint32 (&data, &size);
+  unknown = gst_asf_demux_get_uint8 (&data, &size);
+  unknown = gst_asf_demux_get_uint8 (&data, &size);
+
+  GST_INFO_OBJECT (demux, "object is a header with %u parts", num_objects);
+
+  /* Loop through the header's objects, processing those */
+  for (i = 0; i < num_objects; ++i) {
+    GST_INFO_OBJECT (demux, "reading header part %u", i);
+    ret = gst_asf_demux_process_object (demux, &data, &size);
+    if (ret != GST_FLOW_OK) {
+      GST_WARNING ("process_object returned %s", gst_asf_get_flow_name (ret));
+      break;
+    }
+  }
+
+  return ret;
+
+not_enough_data:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("short read parsing HEADER object"));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_file (GstASFDemux * demux, guint8 * data, guint64 size)
+{
+  guint64 file_size, creation_time, packets_count;
+  guint64 play_time, send_time, preroll;
+  guint32 flags, min_pktsize, max_pktsize, min_bitrate;
+
+  if (size < (16 + 8 + 8 + 8 + 8 + 8 + 8 + 4 + 4 + 4 + 4))
+    goto not_enough_data;
+
+  gst_asf_demux_skip_bytes (16, &data, &size);  /* skip GUID */
+  file_size = gst_asf_demux_get_uint64 (&data, &size);
+  creation_time = gst_asf_demux_get_uint64 (&data, &size);
+  packets_count = gst_asf_demux_get_uint64 (&data, &size);
+  play_time = gst_asf_demux_get_uint64 (&data, &size);
+  send_time = gst_asf_demux_get_uint64 (&data, &size);
+  preroll = gst_asf_demux_get_uint64 (&data, &size);
+  flags = gst_asf_demux_get_uint32 (&data, &size);
+  min_pktsize = gst_asf_demux_get_uint32 (&data, &size);
+  max_pktsize = gst_asf_demux_get_uint32 (&data, &size);
+  min_bitrate = gst_asf_demux_get_uint32 (&data, &size);
+
+  demux->broadcast = ! !(flags & 0x01);
+  demux->seekable = ! !(flags & 0x02);
+
+  GST_DEBUG_OBJECT (demux, "min_pktsize = %u", min_pktsize);
+  GST_DEBUG_OBJECT (demux, "flags::broadcast = %d", demux->broadcast);
+  GST_DEBUG_OBJECT (demux, "flags::seekable  = %d", demux->seekable);
+#ifdef ASFDEMUX_MODIFICATION
+  GST_DEBUG_OBJECT (demux, "preroll  = %d", preroll);
+  demux->trickplay_info.tp_preroll = preroll * GST_MSECOND;
+#endif
+
+  if (demux->broadcast) {
+    /* these fields are invalid if the broadcast flag is set */
+    play_time = 0;
+    file_size = 0;
+  }
+
+  if (min_pktsize != max_pktsize)
+    goto non_fixed_packet_size;
+
+  demux->packet_size = max_pktsize;
+
+  /* FIXME: do we need send_time as well? what is it? */
+  if ((play_time * 100) >= (preroll * GST_MSECOND))
+    demux->play_time = (play_time * 100) - (preroll * GST_MSECOND);
+  else
+    demux->play_time = 0;
+
+  /* Making preroll to zero  to reduce the memory requirement*/        
+#ifndef ASFDEMUX_MODIFICATION
+  preroll = 0;  //Intentionally avoiding this..otherwise trickplay is not working properly
+#endif
+
+  demux->preroll = preroll * GST_MSECOND;
+
+  /* initial latency */
+  demux->latency = demux->preroll;
+
+  if (demux->play_time == 0)
+    demux->seekable = FALSE;
+#ifdef ASFDEMUX_MODIFICATION
+  if (demux->play_time > 0) {
+    gst_segment_set_duration (&demux->segment, GST_FORMAT_TIME, demux->play_time);
+  }
+#endif
+
+  GST_DEBUG_OBJECT (demux, "play_time %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (demux->play_time));
+  GST_DEBUG_OBJECT (demux, "preroll   %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (demux->preroll));
+
+  if (demux->play_time > 0) {
+    gst_segment_set_duration (&demux->segment, GST_FORMAT_TIME,
+        demux->play_time);
+  }
+
+  GST_INFO ("object is a file with %" G_GUINT64_FORMAT " data packets",
+      packets_count);
+  GST_INFO ("preroll = %" G_GUINT64_FORMAT, demux->preroll);
+
+  return GST_FLOW_OK;
+
+/* ERRORS */
+non_fixed_packet_size:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("packet size must be fixed"));
+    return GST_FLOW_ERROR;
+  }
+not_enough_data:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("short read parsing FILE object"));
+    return GST_FLOW_ERROR;
+  }
+}
+
+/* Content Description Object */
+static GstFlowReturn
+gst_asf_demux_process_comment (GstASFDemux * demux, guint8 * data, guint64 size)
+{
+  struct
+  {
+    const gchar *gst_tag;
+    guint16 val_length;
+    gchar *val_utf8;
+  } tags[5] = {
+    {
+    GST_TAG_TITLE, 0, NULL}, {
+    GST_TAG_ARTIST, 0, NULL}, {
+    GST_TAG_COPYRIGHT, 0, NULL}, {
+    GST_TAG_DESCRIPTION, 0, NULL}, {
+    GST_TAG_COMMENT, 0, NULL}
+  };
+  GstTagList *taglist;
+  GValue value = { 0 };
+  gsize in, out;
+  gint i = -1;
+
+  GST_INFO_OBJECT (demux, "object is a comment");
+
+  if (size < (2 + 2 + 2 + 2 + 2))
+    goto not_enough_data;
+
+  tags[0].val_length = gst_asf_demux_get_uint16 (&data, &size);
+  tags[1].val_length = gst_asf_demux_get_uint16 (&data, &size);
+  tags[2].val_length = gst_asf_demux_get_uint16 (&data, &size);
+  tags[3].val_length = gst_asf_demux_get_uint16 (&data, &size);
+  tags[4].val_length = gst_asf_demux_get_uint16 (&data, &size);
+
+  GST_DEBUG_OBJECT (demux, "Comment lengths: title=%d author=%d copyright=%d "
+      "description=%d rating=%d", tags[0].val_length, tags[1].val_length,
+      tags[2].val_length, tags[3].val_length, tags[4].val_length);
+
+  for (i = 0; i < G_N_ELEMENTS (tags); ++i) {
+    if (size < tags[i].val_length)
+      goto not_enough_data;
+
+    /* might be just '/0', '/0'... */
+    if (tags[i].val_length > 2 && tags[i].val_length % 2 == 0) {
+      /* convert to UTF-8 */
+      tags[i].val_utf8 = g_convert ((gchar *) data, tags[i].val_length,
+          "UTF-8", "UTF-16LE", &in, &out, NULL);
+    }
+    gst_asf_demux_skip_bytes (tags[i].val_length, &data, &size);
+  }
+
+  /* parse metadata into taglist */
+  taglist = gst_tag_list_new ();
+  g_value_init (&value, G_TYPE_STRING);
+  for (i = 0; i < G_N_ELEMENTS (tags); ++i) {
+    if (tags[i].val_utf8 && strlen (tags[i].val_utf8) > 0 && tags[i].gst_tag) {
+      g_value_set_string (&value, tags[i].val_utf8);
+      gst_tag_list_add_values (taglist, GST_TAG_MERGE_APPEND,
+          tags[i].gst_tag, &value, NULL);
+    }
+  }
+  g_value_unset (&value);
+
+  gst_asf_demux_add_global_tags (demux, taglist);
+
+  for (i = 0; i < G_N_ELEMENTS (tags); ++i)
+    g_free (tags[i].val_utf8);
+
+  return GST_FLOW_OK;
+
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "unexpectedly short of data while processing "
+        "comment tag section %d, skipping comment object", i);
+    for (i = 0; i < G_N_ELEMENTS (tags); i++)
+      g_free (tags[i].val_utf8);
+    return GST_FLOW_OK;         /* not really fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_bitrate_props_object (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  guint16 num_streams, i;
+  AsfStream *stream;
+
+  if (size < 2)
+    goto not_enough_data;
+
+  num_streams = gst_asf_demux_get_uint16 (&data, &size);
+
+  GST_INFO ("object is a bitrate properties object with %u streams",
+      num_streams);
+
+  if (size < (num_streams * (2 + 4)))
+    goto not_enough_data;
+
+  for (i = 0; i < num_streams; ++i) {
+    guint32 bitrate;
+    guint16 stream_id;
+
+    stream_id = gst_asf_demux_get_uint16 (&data, &size);
+    bitrate = gst_asf_demux_get_uint32 (&data, &size);
+
+    if (stream_id < GST_ASF_DEMUX_NUM_STREAM_IDS) {
+      GST_DEBUG_OBJECT (demux, "bitrate of stream %u = %u", stream_id, bitrate);
+      stream = gst_asf_demux_get_stream (demux, stream_id);
+      if (stream) {
+        if (stream->pending_tags == NULL)
+          stream->pending_tags = gst_tag_list_new ();
+        gst_tag_list_add (stream->pending_tags, GST_TAG_MERGE_REPLACE,
+            GST_TAG_BITRATE, bitrate, NULL);
+      } else {
+        GST_WARNING_OBJECT (demux, "Stream id %u wasn't found", stream_id);
+      }
+    } else {
+      GST_WARNING ("stream id %u is too large", stream_id);
+    }
+  }
+
+  return GST_FLOW_OK;
+
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing bitrate props object!");
+    return GST_FLOW_OK;         /* not really fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_header_ext (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint64 hdr_size;
+
+  /* Get the rest of the header's header */
+  if (size < (16 + 2 + 4))
+    goto not_enough_data;
+
+  /* skip GUID and two other bytes */
+  gst_asf_demux_skip_bytes (16 + 2, &data, &size);
+  hdr_size = gst_asf_demux_get_uint32 (&data, &size);
+
+  GST_INFO ("extended header object with a size of %u bytes", (guint) size);
+
+  /* FIXME: does data_size include the rest of the header that we have read? */
+  if (hdr_size > size)
+    goto not_enough_data;
+
+  while (hdr_size > 0) {
+    ret = gst_asf_demux_process_object (demux, &data, &hdr_size);
+    if (ret != GST_FLOW_OK)
+      break;
+  }
+
+  return ret;
+
+not_enough_data:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DEMUX, (NULL),
+        ("short read parsing extended header object"));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_language_list (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  guint i;
+
+  if (size < 2)
+    goto not_enough_data;
+
+  if (demux->languages) {
+    GST_WARNING ("More than one LANGUAGE_LIST object in stream");
+    g_strfreev (demux->languages);
+    demux->languages = NULL;
+    demux->num_languages = 0;
+  }
+
+  demux->num_languages = gst_asf_demux_get_uint16 (&data, &size);
+  GST_LOG ("%u languages:", demux->num_languages);
+
+  demux->languages = g_new0 (gchar *, demux->num_languages + 1);
+  for (i = 0; i < demux->num_languages; ++i) {
+    guint8 len, *lang_data = NULL;
+
+    if (size < 1)
+      goto not_enough_data;
+    len = gst_asf_demux_get_uint8 (&data, &size);
+    if (gst_asf_demux_get_bytes (&lang_data, len, &data, &size)) {
+      gchar *utf8;
+
+      utf8 = g_convert ((gchar *) lang_data, len, "UTF-8", "UTF-16LE", NULL,
+          NULL, NULL);
+
+      /* truncate "en-us" etc. to just "en" */
+      if (utf8 && strlen (utf8) >= 5 && (utf8[2] == '-' || utf8[2] == '_')) {
+        utf8[2] = '\0';
+      }
+      GST_DEBUG ("[%u] %s", i, GST_STR_NULL (utf8));
+      demux->languages[i] = utf8;
+      g_free (lang_data);
+    } else {
+      goto not_enough_data;
+    }
+  }
+
+  return GST_FLOW_OK;
+
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing language list object!");
+    g_free (demux->languages);
+    demux->languages = NULL;
+    return GST_FLOW_OK;         /* not fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_simple_index (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  GstClockTime interval;
+  guint32 count, i;
+
+  if (size < (16 + 8 + 4 + 4))
+    goto not_enough_data;
+
+  /* skip file id */
+  gst_asf_demux_skip_bytes (16, &data, &size);
+  interval = gst_asf_demux_get_uint64 (&data, &size) * (GstClockTime) 100;
+  gst_asf_demux_skip_bytes (4, &data, &size);
+  count = gst_asf_demux_get_uint32 (&data, &size);
+  if (count > 0) {
+    demux->sidx_interval = interval;
+    demux->sidx_num_entries = count;
+    g_free (demux->sidx_entries);
+    demux->sidx_entries = g_new0 (AsfSimpleIndexEntry, count);
+
+    for (i = 0; i < count; ++i) {
+      if (G_UNLIKELY (size <= 6))
+        break;
+      demux->sidx_entries[i].packet = gst_asf_demux_get_uint32 (&data, &size);
+      demux->sidx_entries[i].count = gst_asf_demux_get_uint16 (&data, &size);
+      GST_LOG_OBJECT (demux, "%" GST_TIME_FORMAT " = packet %4u  count : %2d",
+          GST_TIME_ARGS (i * interval), demux->sidx_entries[i].packet,
+          demux->sidx_entries[i].count);
+    }
+  } else {
+    GST_DEBUG_OBJECT (demux, "simple index object with 0 entries");
+  }
+
+  return GST_FLOW_OK;
+
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing simple index object!");
+    return GST_FLOW_OK;         /* not fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_advanced_mutual_exclusion (GstASFDemux * demux,
+    guint8 * data, guint64 size)
+{
+  ASFGuid guid;
+  guint16 num, i;
+  guint8 *mes;
+
+  if (size < 16 + 2 + (2 * 2))
+    goto not_enough_data;
+
+  gst_asf_demux_get_guid (&guid, &data, &size);
+  num = gst_asf_demux_get_uint16 (&data, &size);
+
+  if (num < 2) {
+    GST_WARNING_OBJECT (demux, "nonsensical mutually exclusive streams count");
+    return GST_FLOW_OK;
+  }
+
+  if (size < (num * sizeof (guint16)))
+    goto not_enough_data;
+
+  /* read mutually exclusive stream numbers */
+  mes = g_new (guint8, num + 1);
+  for (i = 0; i < num; ++i) {
+    mes[i] = gst_asf_demux_get_uint16 (&data, &size) & 0x7f;
+    GST_LOG_OBJECT (demux, "mutually exclusive: stream #%d", mes[i]);
+  }
+
+  /* add terminator so we can easily get the count or know when to stop */
+  mes[i] = (guint8) - 1;
+
+  demux->mut_ex_streams = g_slist_append (demux->mut_ex_streams, mes);
+
+  return GST_FLOW_OK;
+
+  /* Errors */
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing advanced mutual exclusion");
+    return GST_FLOW_OK;         /* not absolutely fatal */
+  }
+}
+
+static GstFlowReturn
+gst_asf_demux_process_ext_stream_props (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  AsfStreamExtProps esp;
+  AsfStream *stream = NULL;
+  AsfObject stream_obj;
+  guint16 stream_name_count;
+  guint16 num_payload_ext;
+  guint64 len;
+  guint8 *stream_obj_data = NULL;
+  guint8 *data_start;
+  guint obj_size;
+  guint i, stream_num;
+
+  data_start = data;
+  obj_size = (guint) size;
+
+  if (size < 64)
+    goto not_enough_data;
+
+  esp.valid = TRUE;
+  esp.start_time = gst_asf_demux_get_uint64 (&data, &size) * GST_MSECOND;
+  esp.end_time = gst_asf_demux_get_uint64 (&data, &size) * GST_MSECOND;
+  esp.data_bitrate = gst_asf_demux_get_uint32 (&data, &size);
+  esp.buffer_size = gst_asf_demux_get_uint32 (&data, &size);
+  esp.intial_buf_fullness = gst_asf_demux_get_uint32 (&data, &size);
+  esp.data_bitrate2 = gst_asf_demux_get_uint32 (&data, &size);
+  esp.buffer_size2 = gst_asf_demux_get_uint32 (&data, &size);
+  esp.intial_buf_fullness2 = gst_asf_demux_get_uint32 (&data, &size);
+  esp.max_obj_size = gst_asf_demux_get_uint32 (&data, &size);
+  esp.flags = gst_asf_demux_get_uint32 (&data, &size);
+  stream_num = gst_asf_demux_get_uint16 (&data, &size);
+  esp.lang_idx = gst_asf_demux_get_uint16 (&data, &size);
+  esp.avg_time_per_frame = gst_asf_demux_get_uint64 (&data, &size);
+  stream_name_count = gst_asf_demux_get_uint16 (&data, &size);
+  num_payload_ext = gst_asf_demux_get_uint16 (&data, &size);
+
+  GST_INFO ("start_time             = %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (esp.start_time));
+  GST_INFO ("end_time               = %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (esp.end_time));
+  GST_INFO ("flags                  = %08x", esp.flags);
+  GST_INFO ("average time per frame = %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (esp.avg_time_per_frame * 100));
+  GST_INFO ("stream number          = %u", stream_num);
+  GST_INFO ("stream language ID idx = %u (%s)", esp.lang_idx,
+      (esp.lang_idx < demux->num_languages) ?
+      GST_STR_NULL (demux->languages[esp.lang_idx]) : "??");
+  GST_INFO ("stream name count      = %u", stream_name_count);
+
+  /* read stream names */
+  for (i = 0; i < stream_name_count; ++i) {
+    guint16 stream_lang_idx;
+    gchar *stream_name = NULL;
+
+    if (size < 2)
+      goto not_enough_data;
+    stream_lang_idx = gst_asf_demux_get_uint16 (&data, &size);
+    if (!gst_asf_demux_get_string (&stream_name, NULL, &data, &size))
+      goto not_enough_data;
+    GST_INFO ("stream name %d: %s", i, GST_STR_NULL (stream_name));
+    g_free (stream_name);       /* TODO: store names in struct */
+  }
+
+  /* read payload extension systems stuff */
+  GST_LOG ("payload extension systems count = %u", num_payload_ext);
+
+  if (num_payload_ext > 0)
+    esp.payload_extensions = g_new0 (AsfPayloadExtension, num_payload_ext + 1);
+  else
+    esp.payload_extensions = NULL;
+
+  for (i = 0; i < num_payload_ext; ++i) {
+    AsfPayloadExtension ext;
+    ASFGuid ext_guid;
+    guint32 sys_info_len;
+
+    if (size < 16 + 2 + 4)
+      goto not_enough_data;
+
+    gst_asf_demux_get_guid (&ext_guid, &data, &size);
+    ext.id = gst_asf_demux_identify_guid (asf_payload_ext_guids, &ext_guid);
+    ext.len = gst_asf_demux_get_uint16 (&data, &size);
+
+    sys_info_len = gst_asf_demux_get_uint32 (&data, &size);
+    GST_LOG ("payload systems info len = %u", sys_info_len);
+    if (!gst_asf_demux_skip_bytes (sys_info_len, &data, &size))
+      goto not_enough_data;
+
+    esp.payload_extensions[i] = ext;
+  }
+
+  GST_LOG ("bytes read: %u/%u", (guint) (data - data_start), obj_size);
+
+  /* there might be an optional STREAM_INFO object here now; if not, we
+   * should have parsed the corresponding stream info object already (since
+   * we are parsing the extended stream properties objects delayed) */
+  if (size == 0) {
+    stream = gst_asf_demux_get_stream (demux, stream_num);
+    goto done;
+  }
+
+  /* get size of the stream object */
+  if (!asf_demux_peek_object (demux, data, size, &stream_obj, TRUE))
+    goto not_enough_data;
+
+  if (stream_obj.id != ASF_OBJ_STREAM)
+    goto expected_stream_object;
+
+  if (stream_obj.size < ASF_OBJECT_HEADER_SIZE ||
+      stream_obj.size > (10 * 1024 * 1024))
+    goto not_enough_data;
+
+  gst_asf_demux_skip_bytes (ASF_OBJECT_HEADER_SIZE, &data, &size);
+
+  /* process this stream object later after all the other 'normal' ones
+   * have been processed (since the others are more important/non-hidden) */
+  len = stream_obj.size - ASF_OBJECT_HEADER_SIZE;
+  if (!gst_asf_demux_get_bytes (&stream_obj_data, len, &data, &size))
+    goto not_enough_data;
+
+  /* parse stream object */
+  stream = gst_asf_demux_parse_stream_object (demux, stream_obj_data, len);
+  g_free (stream_obj_data);
+
+done:
+
+  if (stream) {
+    stream->ext_props = esp;
+
+    /* try to set the framerate */
+    if (stream->is_video && stream->caps) {
+      GValue framerate = { 0 };
+      GstStructure *s;
+      gint num, denom;
+
+      g_value_init (&framerate, GST_TYPE_FRACTION);
+
+      num = GST_SECOND / 100;
+      denom = esp.avg_time_per_frame;
+      if (denom == 0) {
+        /* avoid division by 0, assume 25/1 framerate */
+        denom = GST_SECOND / 2500;
+      }
+
+#ifdef ASFDEMUX_MODIFICATION
+      demux->trickplay_info.avg_dur = denom * 100;
+#endif
+
+      gst_value_set_fraction (&framerate, num, denom);
+
+      stream->caps = gst_caps_make_writable (stream->caps);
+      s = gst_caps_get_structure (stream->caps, 0);
+      gst_structure_set_value (s, "framerate", &framerate);
+      g_value_unset (&framerate);
+      GST_DEBUG_OBJECT (demux, "setting framerate of %d/%d = %f",
+          num, denom, ((gdouble) num) / denom);
+    }
+
+    /* add language info now if we have it */
+    if (stream->ext_props.lang_idx < demux->num_languages) {
+      if (stream->pending_tags == NULL)
+        stream->pending_tags = gst_tag_list_new ();
+      GST_LOG_OBJECT (demux, "stream %u has language '%s'", stream->id,
+          demux->languages[stream->ext_props.lang_idx]);
+      gst_tag_list_add (stream->pending_tags, GST_TAG_MERGE_APPEND,
+          GST_TAG_LANGUAGE_CODE, demux->languages[stream->ext_props.lang_idx],
+          NULL);
+    }
+  } else {
+    GST_WARNING_OBJECT (demux, "Ext. stream properties for unknown stream");
+  }
+
+  return GST_FLOW_OK;
+
+  /* Errors */
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing ext stream props object!");
+    return GST_FLOW_OK;         /* not absolutely fatal */
+  }
+expected_stream_object:
+  {
+    GST_WARNING_OBJECT (demux, "error parsing extended stream properties "
+        "object: expected embedded stream object, but got %s object instead!",
+        gst_asf_get_guid_nick (asf_object_guids, stream_obj.id));
+    return GST_FLOW_OK;         /* not absolutely fatal */
+  }
+}
+
+static const gchar *
+gst_asf_demux_push_obj (GstASFDemux * demux, guint32 obj_id)
+{
+  const gchar *nick;
+
+  nick = gst_asf_get_guid_nick (asf_object_guids, obj_id);
+  if (g_str_has_prefix (nick, "ASF_OBJ_"))
+    nick += strlen ("ASF_OBJ_");
+
+  if (demux->objpath == NULL) {
+    demux->objpath = g_strdup (nick);
+  } else {
+    gchar *newpath;
+
+    newpath = g_strdup_printf ("%s/%s", demux->objpath, nick);
+    g_free (demux->objpath);
+    demux->objpath = newpath;
+  }
+
+  return (const gchar *) demux->objpath;
+}
+
+static void
+gst_asf_demux_pop_obj (GstASFDemux * demux)
+{
+  gchar *s;
+
+  if ((s = g_strrstr (demux->objpath, "/"))) {
+    *s = '\0';
+  } else {
+    g_free (demux->objpath);
+    demux->objpath = NULL;
+  }
+}
+
+static void
+gst_asf_demux_process_queued_extended_stream_objects (GstASFDemux * demux)
+{
+  GSList *l;
+  guint i;
+#ifdef ASFDEMUX_MODIFICATION
+  AsfStream *stream = NULL;
+  GST_DEBUG("no of stream is %d", demux->num_streams);
+#endif
+
+  /* Parse the queued extended stream property objects and add the info
+   * to the existing streams or add the new embedded streams, but without
+   * activating them yet */
+  GST_LOG_OBJECT (demux, "%u queued extended stream properties objects",
+      g_slist_length (demux->ext_stream_props));
+
+#ifdef ASFDEMUX_MODIFICATION
+  if(g_slist_length (demux->ext_stream_props) == 0) {
+    GST_DEBUG("ext_stream_props is missing");
+    for(int i = 0; i < demux->num_streams; i++) {
+      stream = gst_asf_demux_get_stream (demux, i+1);
+      if (stream && stream->is_video && stream->caps) {
+        GST_DEBUG("setting of framerate");
+        GValue framerate = { 0 };
+        GstStructure *s;
+        gint num, denom;
+
+        g_value_init (&framerate, GST_TYPE_FRACTION);
+
+        num = GST_SECOND / 100;
+        denom = GST_SECOND / 3000;
+
+        gst_value_set_fraction (&framerate, num, denom);
+
+        stream->caps = gst_caps_make_writable (stream->caps);
+        s = gst_caps_get_structure (stream->caps, 0);
+        gst_structure_set_value (s, "framerate", &framerate);
+        g_value_unset (&framerate);
+        GST_DEBUG_OBJECT (demux, "setting framerate of %d/%d = %f",
+            num, denom, ((gdouble) num) / denom);
+      }
+    }
+  }
+#endif
+  for (l = demux->ext_stream_props, i = 0; l != NULL; l = l->next, ++i) {
+    GstBuffer *buf = GST_BUFFER (l->data);
+
+    GST_LOG_OBJECT (demux, "parsing ext. stream properties object #%u", i);
+    gst_asf_demux_process_ext_stream_props (demux, GST_BUFFER_DATA (buf),
+        GST_BUFFER_SIZE (buf));
+    gst_buffer_unref (buf);
+  }
+  g_slist_free (demux->ext_stream_props);
+  demux->ext_stream_props = NULL;
+}
+
+#if 0
+static void
+gst_asf_demux_activate_ext_props_streams (GstASFDemux * demux)
+{
+  guint i, j;
+
+  for (i = 0; i < demux->num_streams; ++i) {
+    AsfStream *stream;
+    gboolean is_hidden;
+    GSList *x;
+
+    stream = &demux->stream[i];
+
+    GST_LOG_OBJECT (demux, "checking  stream %2u", stream->id);
+
+    if (stream->active) {
+      GST_LOG_OBJECT (demux, "stream %2u is already activated", stream->id);
+      continue;
+    }
+
+    is_hidden = FALSE;
+    for (x = demux->mut_ex_streams; x != NULL; x = x->next) {
+      guint8 *mes;
+
+      /* check for each mutual exclusion whether it affects this stream */
+      for (mes = (guint8 *) x->data; mes != NULL && *mes != 0xff; ++mes) {
+        if (*mes == stream->id) {
+          /* if yes, check if we've already added streams that are mutually
+           * exclusive with the stream we're about to add */
+          for (mes = (guint8 *) x->data; mes != NULL && *mes != 0xff; ++mes) {
+            for (j = 0; j < demux->num_streams; ++j) {
+              /* if the broadcast flag is set, assume the hidden streams aren't
+               * actually streamed and hide them (or playbin won't work right),
+               * otherwise assume their data is available */
+              if (demux->stream[j].id == *mes && demux->broadcast) {
+                is_hidden = TRUE;
+                GST_LOG_OBJECT (demux, "broadcast stream ID %d to be added is "
+                    "mutually exclusive with already existing stream ID %d, "
+                    "hiding stream", stream->id, demux->stream[j].id);
+                goto next;
+              }
+            }
+          }
+          break;
+        }
+      }
+    }
+
+  next:
+
+    /* FIXME: we should do stream activation based on preroll data in
+     * streaming mode too */
+    if (demux->streaming && !is_hidden)
+      gst_asf_demux_activate_stream (demux, stream);
+  }
+}
+#endif
+
+static GstFlowReturn
+gst_asf_demux_process_object (GstASFDemux * demux, guint8 ** p_data,
+    guint64 * p_size)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  AsfObject obj;
+  guint64 obj_data_size;
+
+  if (*p_size < ASF_OBJECT_HEADER_SIZE)
+    return ASF_FLOW_NEED_MORE_DATA;
+
+  asf_demux_peek_object (demux, *p_data, ASF_OBJECT_HEADER_SIZE, &obj, TRUE);
+  gst_asf_demux_skip_bytes (ASF_OBJECT_HEADER_SIZE, p_data, p_size);
+
+  obj_data_size = obj.size - ASF_OBJECT_HEADER_SIZE;
+
+  if (*p_size < obj_data_size)
+    return ASF_FLOW_NEED_MORE_DATA;
+
+  gst_asf_demux_push_obj (demux, obj.id);
+
+  GST_INFO ("%s: size %" G_GUINT64_FORMAT, demux->objpath, obj.size);
+
+  switch (obj.id) {
+    case ASF_OBJ_STREAM:
+      gst_asf_demux_parse_stream_object (demux, *p_data, obj_data_size);
+      ret = GST_FLOW_OK;
+      break;
+    case ASF_OBJ_FILE:
+      ret = gst_asf_demux_process_file (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_HEADER:
+      ret = gst_asf_demux_process_header (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_COMMENT:
+      ret = gst_asf_demux_process_comment (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_HEAD1:
+      ret = gst_asf_demux_process_header_ext (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_BITRATE_PROPS:
+      ret =
+          gst_asf_demux_process_bitrate_props_object (demux, *p_data,
+          obj_data_size);
+      break;
+    case ASF_OBJ_EXT_CONTENT_DESC:
+      ret =
+          gst_asf_demux_process_ext_content_desc (demux, *p_data,
+          obj_data_size);
+      break;
+    case ASF_OBJ_METADATA_OBJECT:
+      ret = gst_asf_demux_process_metadata (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_EXTENDED_STREAM_PROPS:{
+      GstBuffer *buf;
+
+      /* process these later, we might not have parsed the corresponding
+       * stream object yet */
+      GST_LOG ("%s: queued for later parsing", demux->objpath);
+      buf = gst_buffer_new_and_alloc (obj_data_size);
+      memcpy (GST_BUFFER_DATA (buf), *p_data, obj_data_size);
+      demux->ext_stream_props = g_slist_append (demux->ext_stream_props, buf);
+      ret = GST_FLOW_OK;
+      break;
+    }
+    case ASF_OBJ_LANGUAGE_LIST:
+      ret = gst_asf_demux_process_language_list (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_ADVANCED_MUTUAL_EXCLUSION:
+      ret = gst_asf_demux_process_advanced_mutual_exclusion (demux, *p_data,
+          obj_data_size);
+      break;
+    case ASF_OBJ_SIMPLE_INDEX:
+      ret = gst_asf_demux_process_simple_index (demux, *p_data, obj_data_size);
+      break;
+    case ASF_OBJ_CONTENT_ENCRYPTION:
+    case ASF_OBJ_EXT_CONTENT_ENCRYPTION:
+    case ASF_OBJ_DIGITAL_SIGNATURE_OBJECT:
+      goto error_encrypted;
+    case ASF_OBJ_CODEC_COMMENT:
+#ifdef CODEC_ENTRY
+      ret = gst_asf_demux_process_codec_list (demux, *p_data, obj_data_size);
+      break;
+#endif
+    case ASF_OBJ_CONCEAL_NONE:
+    case ASF_OBJ_HEAD2:
+    case ASF_OBJ_UNDEFINED:
+    case ASF_OBJ_INDEX:
+    case ASF_OBJ_PADDING:
+    case ASF_OBJ_BITRATE_MUTEX:
+    case ASF_OBJ_COMPATIBILITY:
+    case ASF_OBJ_INDEX_PLACEHOLDER:
+    case ASF_OBJ_INDEX_PARAMETERS:
+    case ASF_OBJ_STREAM_PRIORITIZATION:
+    case ASF_OBJ_SCRIPT_COMMAND:
+    default:
+      /* Unknown/unhandled object, skip it and hope for the best */
+      GST_INFO ("%s: skipping object", demux->objpath);
+      ret = GST_FLOW_OK;
+      break;
+  }
+
+  /* this can't fail, we checked the number of bytes available before */
+  gst_asf_demux_skip_bytes (obj_data_size, p_data, p_size);
+
+  GST_LOG ("%s: ret = %s", demux->objpath, gst_asf_get_flow_name (ret));
+
+  gst_asf_demux_pop_obj (demux);
+
+  return ret;
+
+/* ERRORS */
+error_encrypted:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DECRYPT, (NULL), (NULL));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static void
+gst_asf_demux_descramble_buffer (GstASFDemux * demux, AsfStream * stream,
+    GstBuffer ** p_buffer)
+{
+  GstBuffer *descrambled_buffer;
+  GstBuffer *scrambled_buffer;
+  GstBuffer *sub_buffer;
+  guint offset;
+  guint off;
+  guint row;
+  guint col;
+  guint idx;
+
+  /* descrambled_buffer is initialised in the first iteration */
+  descrambled_buffer = NULL;
+  scrambled_buffer = *p_buffer;
+
+  if (GST_BUFFER_SIZE (scrambled_buffer) < demux->ds_packet_size * demux->span)
+    return;
+
+  for (offset = 0; offset < GST_BUFFER_SIZE (scrambled_buffer);
+      offset += demux->ds_chunk_size) {
+    off = offset / demux->ds_chunk_size;
+    row = off / demux->span;
+    col = off % demux->span;
+    idx = row + col * demux->ds_packet_size / demux->ds_chunk_size;
+    GST_DEBUG ("idx=%u, row=%u, col=%u, off=%u, ds_chunk_size=%u", idx, row,
+        col, off, demux->ds_chunk_size);
+    GST_DEBUG ("scrambled buffer size=%u, span=%u, packet_size=%u",
+        GST_BUFFER_SIZE (scrambled_buffer), demux->span, demux->ds_packet_size);
+    GST_DEBUG ("GST_BUFFER_SIZE (scrambled_buffer) = %u",
+        GST_BUFFER_SIZE (scrambled_buffer));
+    sub_buffer =
+        gst_buffer_create_sub (scrambled_buffer, idx * demux->ds_chunk_size,
+        demux->ds_chunk_size);
+    if (!offset) {
+      descrambled_buffer = sub_buffer;
+    } else {
+      descrambled_buffer = gst_buffer_join (descrambled_buffer, sub_buffer);
+    }
+  }
+
+  gst_buffer_copy_metadata (descrambled_buffer, scrambled_buffer,
+      GST_BUFFER_COPY_TIMESTAMPS);
+
+  /* FIXME/CHECK: do we need to transfer buffer flags here too? */
+
+  gst_buffer_unref (scrambled_buffer);
+  *p_buffer = descrambled_buffer;
+}
+
+static gboolean
+gst_asf_demux_element_send_event (GstElement * element, GstEvent * event)
+{
+  GstASFDemux *demux = GST_ASF_DEMUX (element);
+  gint i;
+
+  GST_DEBUG ("handling element event of type %s", GST_EVENT_TYPE_NAME (event));
+
+  for (i = 0; i < demux->num_streams; ++i) {
+    gst_event_ref (event);
+    if (gst_asf_demux_handle_src_event (demux->stream[i].pad, event)) {
+      gst_event_unref (event);
+      return TRUE;
+    }
+  }
+
+  gst_event_unref (event);
+  return FALSE;
+}
+
+/* takes ownership of the passed event */
+static gboolean
+gst_asf_demux_send_event_unlocked (GstASFDemux * demux, GstEvent * event)
+{
+  gboolean ret = TRUE;
+  gint i;
+
+  GST_DEBUG_OBJECT (demux, "sending %s event to all source pads",
+      GST_EVENT_TYPE_NAME (event));
+
+  for (i = 0; i < demux->num_streams; ++i) {
+    gst_event_ref (event);
+    ret &= gst_pad_push_event (demux->stream[i].pad, event);
+  }
+  gst_event_unref (event);
+  return ret;
+}
+
+static const GstQueryType *
+gst_asf_demux_get_src_query_types (GstPad * pad)
+{
+  static const GstQueryType types[] = {
+    GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
+    GST_QUERY_SEEKING,
+    0
+  };
+
+  return types;
+}
+
+static gboolean
+gst_asf_demux_handle_src_query (GstPad * pad, GstQuery * query)
+{
+  GstASFDemux *demux;
+  gboolean res = FALSE;
+
+  demux = GST_ASF_DEMUX (gst_pad_get_parent (pad));
+
+  GST_DEBUG ("handling %s query",
+      gst_query_type_get_name (GST_QUERY_TYPE (query)));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_DURATION:
+    {
+      GstFormat format;
+
+      gst_query_parse_duration (query, &format, NULL);
+
+      if (format != GST_FORMAT_TIME) {
+        GST_LOG ("only support duration queries in TIME format");
+        break;
+      }
+
+      GST_OBJECT_LOCK (demux);
+
+      if (demux->segment.duration != GST_CLOCK_TIME_NONE) {
+        GST_LOG ("returning duration: %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (demux->segment.duration));
+
+        gst_query_set_duration (query, GST_FORMAT_TIME,
+            demux->segment.duration);
+
+        res = TRUE;
+      } else {
+        GST_LOG ("duration not known yet");
+      }
+
+      GST_OBJECT_UNLOCK (demux);
+      break;
+    }
+
+    case GST_QUERY_POSITION:{
+      GstFormat format;
+
+      gst_query_parse_position (query, &format, NULL);
+
+      if (format != GST_FORMAT_TIME) {
+        GST_LOG ("only support position queries in TIME format");
+        break;
+      }
+
+      GST_OBJECT_LOCK (demux);
+
+      if (demux->segment.last_stop != GST_CLOCK_TIME_NONE) {
+        GST_LOG ("returning position: %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (demux->segment.last_stop));
+
+        gst_query_set_position (query, GST_FORMAT_TIME,
+            demux->segment.last_stop);
+
+        res = TRUE;
+      } else {
+        GST_LOG ("position not known yet");
+      }
+
+      GST_OBJECT_UNLOCK (demux);
+      break;
+    }
+
+    case GST_QUERY_SEEKING:{
+      GstFormat format;
+
+      gst_query_parse_seeking (query, &format, NULL, NULL, NULL);
+      if (format == GST_FORMAT_TIME) {
+        gint64 duration;
+
+        GST_OBJECT_LOCK (demux);
+        duration = demux->segment.duration;
+        GST_OBJECT_UNLOCK (demux);
+
+        if (!demux->streaming || !demux->seekable) {
+          gst_query_set_seeking (query, GST_FORMAT_TIME, demux->seekable, 0,
+              duration);
+          res = TRUE;
+        } else {
+          GstFormat fmt;
+          gboolean seekable;
+
+          /* try downstream first in TIME */
+          res = gst_pad_query_default (pad, query);
+
+          gst_query_parse_seeking (query, &fmt, &seekable, NULL, NULL);
+          GST_LOG_OBJECT (demux, "upstream %s seekable %d",
+              GST_STR_NULL (gst_format_get_name (fmt)), seekable);
+          /* if no luck, maybe in BYTES */
+          if (!seekable || fmt != GST_FORMAT_TIME) {
+            GstQuery *q;
+
+            q = gst_query_new_seeking (GST_FORMAT_BYTES);
+            if ((res = gst_pad_peer_query (demux->sinkpad, q))) {
+              gst_query_parse_seeking (q, &fmt, &seekable, NULL, NULL);
+              GST_LOG_OBJECT (demux, "upstream %s seekable %d",
+                  GST_STR_NULL (gst_format_get_name (fmt)), seekable);
+              if (fmt != GST_FORMAT_BYTES)
+                seekable = FALSE;
+            }
+            gst_query_unref (q);
+            gst_query_set_seeking (query, GST_FORMAT_TIME, seekable, 0,
+                duration);
+            res = TRUE;
+          }
+        }
+      } else
+        GST_LOG_OBJECT (demux, "only support seeking in TIME format");
+      break;
+    }
+
+    case GST_QUERY_LATENCY:
+    {
+      gboolean live;
+      GstClockTime min, max;
+
+      /* preroll delay does not matter in non-live pipeline,
+       * but we might end up in a live (rtsp) one ... */
+
+      /* first forward */
+      res = gst_pad_query_default (pad, query);
+      if (!res)
+        break;
+
+      gst_query_parse_latency (query, &live, &min, &max);
+
+      GST_DEBUG_OBJECT (demux, "Peer latency: live %d, min %"
+          GST_TIME_FORMAT " max %" GST_TIME_FORMAT, live,
+          GST_TIME_ARGS (min), GST_TIME_ARGS (max));
+
+      GST_OBJECT_LOCK (demux);
+      if (min != -1)
+        min += demux->latency;
+      if (max != -1)
+        max += demux->latency;
+      GST_OBJECT_UNLOCK (demux);
+
+      gst_query_set_latency (query, live, min, max);
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return res;
+}
+
+static GstStateChangeReturn
+gst_asf_demux_change_state (GstElement * element, GstStateChange transition)
+{
+  GstASFDemux *demux = GST_ASF_DEMUX (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:{
+      gst_segment_init (&demux->segment, GST_FORMAT_TIME);
+      demux->need_newsegment = TRUE;
+      demux->segment_running = FALSE;
+      demux->accurate = FALSE;
+      demux->adapter = gst_adapter_new ();
+      demux->metadata = gst_caps_new_empty ();
+      demux->global_metadata = gst_structure_empty_new ("metadata");
+      demux->data_size = 0;
+      demux->data_offset = 0;
+      demux->index_offset = 0;
+      demux->base_offset = 0;
+      break;
+    }
+    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:
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      gst_asf_demux_reset (demux, FALSE);
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+
+#ifdef ASFDEMUX_MODIFICATION
+static gboolean
+gst_asf_demux_forward_trickplay (GstASFDemux * demux, AsfStream *stream, AsfPayload *payload)
+{
+  gboolean ret = FALSE;
+
+  if ((payload->keyframe || (!payload->keyframe && (payload->ts > demux->segment.start)))  &&
+    !demux->trickplay_info.prev_kpacket && !demux->trickplay_info.show_samples) {
+    AsfPayload *next_kpayload = NULL;
+    guint32 nsamples = 0; /* Number of samples between two consecutive keyframes */
+
+    demux->trickplay_info.prev_kpacket = demux->packet;
+    demux->trickplay_info.prev_keyframe = payload->mo_number;
+    demux->trickplay_info.current_frame = payload->mo_number;
+
+    GST_DEBUG_OBJECT (demux, "Received keyframe : ts = %"GST_TIME_FORMAT", dur = %"GST_TIME_FORMAT,
+         GST_TIME_ARGS(payload->ts), GST_TIME_ARGS(payload->duration));
+
+    while (nsamples == 0) {
+      ret = gst_asf_demux_find_next_keypacket (demux);
+      if (ret == FALSE) {
+        GST_ERROR_OBJECT(demux, "Error in finding frames between keyframes...");
+        stream->last_flow = GST_FLOW_ERROR;
+        goto exit;
+      }
+
+      ret = gst_asf_demux_find_keypayload_from_packet (demux, &next_kpayload);
+      if (ret == FALSE || next_kpayload == NULL) {
+        GST_ERROR_OBJECT(demux, "Error in finding frames between keyframes...");
+        stream->last_flow = GST_FLOW_ERROR;
+        goto exit;
+      }
+  
+      nsamples = gst_asf_demux_find_num_samples_bw_kpayloads (demux, payload, next_kpayload);
+      if (next_kpayload) {
+        g_free (next_kpayload);
+        next_kpayload = NULL;
+      }
+    }
+
+    demux->trickplay_info.kpacket_dur_diff = demux->trickplay_info.avg_dur;
+    demux->trickplay_info.show_samples = nsamples / (guint32) demux->segment.rate;
+    demux->trickplay_info.start_ts = payload->ts;
+
+    GST_DEBUG_OBJECT (demux, "samples to show between key frames = %d", demux->trickplay_info.show_samples);
+
+    /* Alter the next video sample timestamp */
+    if (stream->payloads->len > 1) {
+      AsfPayload *next_payload = NULL;
+
+      /* Now see if there's a complete payload queued for this stream */
+      next_payload = &g_array_index (stream->payloads, AsfPayload, 1);
+      if (gst_asf_payload_is_complete (next_payload)) {
+        GST_DEBUG_OBJECT (demux, "Modifying ts from %"GST_TIME_FORMAT, GST_TIME_ARGS(next_payload->ts));
+        ++demux->trickplay_info.current_frame;
+        next_payload->ts = demux->trickplay_info.start_ts +
+           (GstClockTime)(demux->trickplay_info.kpacket_dur_diff * (demux->segment.rate * (demux->trickplay_info.current_frame - demux->trickplay_info.prev_keyframe)));
+        GST_DEBUG_OBJECT (demux, "to %"GST_TIME_FORMAT, GST_TIME_ARGS(next_payload->ts));
+      }
+    }
+  } else if ((demux->trickplay_info.prev_kpacket == 0) && (demux->trickplay_info.show_samples == 0)) {
+    GST_WARNING_OBJECT (demux, "expecting keyframe payload...Received '%s' with mo_num = %u",
+           payload->keyframe ? "key" : "non-key", payload->mo_number);
+    stream->last_flow = GST_FLOW_OK;
+    goto exit;
+  } else {
+    GstClockTime ts = GST_CLOCK_TIME_NONE;
+
+    ++demux->trickplay_info.current_frame;
+    ts = demux->trickplay_info.start_ts + 
+      (GstClockTime)(demux->trickplay_info.kpacket_dur_diff * (demux->segment.rate * (demux->trickplay_info.current_frame - demux->trickplay_info.prev_keyframe)));
+
+    if (ts != payload->ts) {
+      payload->ts = ts;
+
+      GST_LOG_OBJECT (demux, "Modifying payload->ts now...");
+       /* Alter the next video sample timestamp */
+      if (stream->payloads->len > 1) {
+        AsfPayload *next_payload = NULL;  
+
+        /* Now see if there's a complete payload queued for this stream */
+        next_payload = &g_array_index (stream->payloads, AsfPayload, 1);
+        if (gst_asf_payload_is_complete (next_payload)) {
+          GST_DEBUG_OBJECT (demux, "Modifying ts from %"GST_TIME_FORMAT, GST_TIME_ARGS(next_payload->ts));
+          ++demux->trickplay_info.current_frame;
+          next_payload->ts = demux->trickplay_info.start_ts + 
+            (GstClockTime)(demux->trickplay_info.kpacket_dur_diff * (demux->segment.rate * (demux->trickplay_info.current_frame - demux->trickplay_info.prev_keyframe)));
+          GST_DEBUG_OBJECT (demux, "to %"GST_TIME_FORMAT, GST_TIME_ARGS(next_payload->ts));
+        }
+      }
+    } else {
+      /* Alter the next video sample timestamp */
+      if (stream->payloads->len > 1) {
+        AsfPayload *next_payload = NULL;
+
+        /* Now see if there's a complete payload queued for this stream */
+        next_payload = &g_array_index (stream->payloads, AsfPayload, 1);
+        if (gst_asf_payload_is_complete (next_payload)) {
+          next_payload->ts = ts;
+        }
+      } 
+    }
+
+    if (demux->trickplay_info.show_samples == 0) {
+      /* we are done with present key frame check.....jump to next key frame */
+      GST_INFO_OBJECT (demux, "Displayed all frames in present keyframe chunk...jumping to next keyframe : %u", demux->trickplay_info.next_kpacket);
+      GST_OBJECT_LOCK (demux);
+      gst_asf_demux_reset_stream_state_after_discont (demux);
+      demux->packet = demux->trickplay_info.next_kpacket;
+      demux->packet--;
+      demux->trickplay_info.prev_kpacket = 0;
+      demux->firstVidBufSent = FALSE;
+      demux->firstAudBufSent = FALSE;
+      GST_OBJECT_UNLOCK (demux);
+      stream->last_flow = GST_FLOW_OK;
+      goto exit;
+    }
+    GST_DEBUG_OBJECT (demux, "samples to show between keyframes = %u", demux->trickplay_info.show_samples);
+    demux->trickplay_info.show_samples--;
+  }
+
+  stream->last_flow = GST_FLOW_OK;
+  return TRUE;
+
+exit:
+  return FALSE;
+}
+
+static gboolean
+gst_asf_demux_backward_trickplay(GstASFDemux * demux, AsfStream *stream, AsfPayload *payload)
+{
+  gboolean ret = FALSE;
+
+  if (payload->keyframe || (payload->ts >= demux->segment.stop) || demux->firstVidBufSent == FALSE) {
+    if(payload->ts >= demux->trickplay_info.next_keyframe_ts) {
+         GST_DEBUG_OBJECT (demux, "Received keyframe...");
+         GST_INFO("next_keyframe_ts is %"GST_TIME_FORMAT" payload time-stamp is %"GST_TIME_FORMAT,
+           GST_TIME_ARGS(demux->trickplay_info.next_keyframe_ts), GST_TIME_ARGS(payload->ts));
+
+      if (demux->trickplay_info.is_eos == TRUE) {
+        /* Reached EOS in trickplay, start normal playback from beginning */
+               /* To avoid the case where packet has multiple key payloads */
+        GST_INFO_OBJECT (demux, "Received EOS.. Sending new_segment with rate = 1.000");
+        demux->trickplay_info.is_eos = FALSE;
+        demux->trickplay_info.first_video_push = FALSE;
+        demux->trickplay_info.resume_nrl_play = TRUE;
+        demux->trickplay_info.first_payload = FALSE;
+
+        GST_OBJECT_LOCK (demux);
+        demux->packet = -1;
+        demux->trickplay_info.prev_kpacket = -1;
+        gst_buffer_replace (&payload->buf, NULL);
+
+        if (stream->payloads->len > 0) {
+          g_array_remove_index (stream->payloads, 0);
+        }
+        gst_asf_demux_reset_stream_state_after_discont (demux);
+        demux->firstVidBufSent = FALSE;
+        demux->firstAudBufSent = FALSE;
+        GST_OBJECT_UNLOCK (demux);
+
+        stream->last_flow = GST_FLOW_OK;
+        goto exit;
+      }
+
+      if (demux->trickplay_info.prev_kpacket != -1) {
+        GST_INFO_OBJECT (demux, "End of current segment.. Jump to previous key frame = %d..", demux->trickplay_info.prev_kpacket);
+
+        GST_OBJECT_LOCK (demux);
+        demux->trickplay_info.next_kpacket = demux->trickplay_info.cur_kpacket;
+        demux->packet = demux->trickplay_info.prev_kpacket;
+               demux->trickplay_info.next_keyframe_ts = demux->trickplay_info.cur_keyframe_ts;
+               GST_INFO("Setting of next_keyframe_ts in end of segment %"GST_TIME_FORMAT,GST_TIME_ARGS(demux->trickplay_info.next_keyframe_ts));
+               demux->trickplay_info.first_video_push = FALSE;
+               demux->trickplay_info.first_payload = FALSE;
+        demux->packet--;
+        demux->trickplay_info.prev_kpacket = -1;
+        gst_asf_demux_reset_stream_state_after_discont (demux);
+        demux->firstVidBufSent = FALSE;
+        demux->firstAudBufSent = FALSE;
+        GST_OBJECT_UNLOCK (demux);
+
+        stream->last_flow = GST_FLOW_OK;
+        goto exit;
+      }
+
+      /* Finiding the previous key frame */
+      GST_DEBUG ("Present key packet number = %"G_GINT64_FORMAT, demux->packet);
+      demux->trickplay_info.cur_kpacket = demux->packet;
+      demux->trickplay_info.cur_keyframe_ts = payload->ts;  //to capture the current key-frame time stamp.
+         GST_INFO("Time stamp of cur_keyframe_ts is %"GST_TIME_FORMAT" payload time stamps is %"GST_TIME_FORMAT,
+           GST_TIME_ARGS(demux->trickplay_info.cur_keyframe_ts),GST_TIME_ARGS(payload->ts));
+
+      ret = gst_asf_demux_find_prev_keypacket (demux);
+      if (ret == FALSE) {
+        GST_ERROR_OBJECT(demux, "Error in finding previous keyframe...");
+        stream->last_flow = GST_FLOW_ERROR;
+        goto exit;
+      }
+       }
+
+       GST_DEBUG ("Present key packet number = %"G_GINT64_FORMAT, demux->packet);
+    demux->trickplay_info.cur_kpacket = demux->packet;
+    demux->trickplay_info.cur_keyframe_ts = payload->ts;  //to capture the current key-frame time stamp.
+       GST_INFO("Time stamp of cur_keyframe_ts is %"GST_TIME_FORMAT" payload time stamps is %"GST_TIME_FORMAT,
+         GST_TIME_ARGS(demux->trickplay_info.cur_keyframe_ts),GST_TIME_ARGS(payload->ts));
+
+       if((payload->keyframe) && (stream->is_video) &&
+           (demux->trickplay_info.first_video_push) && (payload->ts < demux->trickplay_info.next_keyframe_ts)) {
+         GST_DEBUG_OBJECT (demux, "Already sent key frame, forcibly unreffing current video-keyframe...");
+         stream->last_flow = GST_FLOW_OK;
+         goto exit;
+       }
+
+  } else {
+    if (-1 == demux->trickplay_info.prev_kpacket) {
+      GST_DEBUG ("Expecting Key frame.. Unreffing current NON-Keyframe with mo_num = %d", payload->mo_number);
+      demux->firstVidBufSent = FALSE;
+      stream->last_flow = GST_FLOW_OK;
+      goto exit;
+    } else {
+      GST_DEBUG_OBJECT (demux, "Already sent key frame, unreffing current non-keyframe...");
+      stream->last_flow = GST_FLOW_OK;
+         goto exit;
+    }
+  }
+
+  if(!demux->trickplay_info.first_video_push && stream->is_video && payload->keyframe) {
+    demux->trickplay_info.first_video_push = TRUE;
+  }
+  stream->last_flow = GST_FLOW_OK;
+  return TRUE;
+
+exit:
+  return FALSE;
+}
+
+
+static gboolean 
+gst_asf_demux_find_next_keypacket (GstASFDemux * demux)
+{
+  guint idx = 0;
+
+  if (G_UNLIKELY (demux->sidx_num_entries == 0 || demux->sidx_interval == 0)) {
+    /* need to post error saying that.. trick play will not work*/
+    GST_ERROR_OBJECT (demux, "No proper index table....");
+    return FALSE;
+  }
+
+  /* past key frame idx */
+  idx = demux->seek_idx;
+  idx++;
+  
+  /* FIXME: seek beyond end of file should result in immediate EOS from
+   * streaming thread instead of a failed seek */
+  if (G_UNLIKELY (idx >= demux->sidx_num_entries)) {
+    GST_INFO_OBJECT (demux, "No indexes left..... EOS will come");
+    goto eos;
+  }
+
+  /* find next key frame idx */
+  while (demux->sidx_entries[idx].packet == demux->sidx_entries[demux->seek_idx].packet) {
+    GST_DEBUG_OBJECT (demux, "sidx_entries[%d].packet = %d....", idx, demux->sidx_entries[idx].packet);
+    idx++;
+    if (G_UNLIKELY (idx >= demux->sidx_num_entries)) {
+      GST_INFO_OBJECT (demux, "No indexes left..... EOS will come");
+      goto eos;
+    }
+  }
+
+  demux->seek_idx = idx;
+  demux->trickplay_info.next_kpacket = demux->sidx_entries[idx].packet;
+  GST_INFO_OBJECT (demux, "next key packet = %d\n", demux->trickplay_info.next_kpacket);
+
+  return TRUE;
+
+eos:
+  {
+    /* No key frames left... taking end frame as keyframe*/
+    GST_WARNING_OBJECT (demux, "No key frames left.. taking last frame as key frame");
+    demux->trickplay_info.next_kpacket = demux->num_packets - 1;
+    demux->seek_idx = demux->sidx_num_entries;
+    demux->trickplay_info.is_eos = TRUE;
+    return TRUE;
+  }
+}
+
+static gboolean 
+gst_asf_demux_find_prev_keypacket (GstASFDemux * demux)
+{
+  guint idx = 0;
+
+  if (G_UNLIKELY (demux->sidx_num_entries == 0 || demux->sidx_interval == 0)) {
+    /* need to post error saying that.. trick play will not work*/
+    GST_ERROR_OBJECT (demux, "No proper index table....");
+    return FALSE;
+  }
+
+  /* past key frame idx */
+  idx = demux->seek_idx;
+
+  /* find next key frame idx */
+  while (demux->sidx_entries[idx].packet == demux->sidx_entries[demux->seek_idx].packet) {
+    GST_DEBUG_OBJECT (demux, "sidx_entries[%d].packet = %d....", idx, demux->sidx_entries[idx].packet);
+    idx--;
+    if (G_UNLIKELY (idx == 0)) {
+      GST_WARNING_OBJECT (demux, "No indexes left..... reached start");
+      goto eos;
+    }
+  }
+
+  demux->seek_idx = idx;
+  demux->trickplay_info.prev_kpacket = demux->sidx_entries[idx].packet;
+  demux->trickplay_info.first_video_push = FALSE;
+  GST_INFO_OBJECT (demux, "prev key packet = %d to curent key keypacket", demux->trickplay_info.prev_kpacket);
+
+  return TRUE;
+
+eos:
+  {
+    /* No key frames left... taking first frame as keyframe*/
+    GST_WARNING_OBJECT (demux, "No key frames left.. taking first frame as key frame");
+    demux->trickplay_info.prev_kpacket = 0;
+    demux->trickplay_info.first_video_push = FALSE;
+    demux->seek_idx = 0;
+    demux->trickplay_info.is_eos = TRUE;
+    return TRUE;
+  }
+}
+
+
+static guint32
+gst_asf_demux_find_num_samples_bw_kpayloads (GstASFDemux * demux, AsfPayload *start_kpayload, AsfPayload *end_kpayload)
+{
+  gint32 approx_frames_bw_kframes = 0;
+  gint32 diff_bw_keyframes = 0;
+  guint32 i = 0;
+
+  if (!demux->trickplay_info.avg_dur) {
+    demux->trickplay_info.avg_dur = GST_SECOND/25;
+    GST_INFO_OBJECT (demux, "Making Avg Duration as %"GST_TIME_FORMAT, GST_TIME_ARGS(demux->trickplay_info.avg_dur));
+  }
+
+  GST_LOG_OBJECT (demux, "start->ts = %"GST_TIME_FORMAT" and end->ts = %"GST_TIME_FORMAT,
+    GST_TIME_ARGS(start_kpayload->ts), GST_TIME_ARGS(end_kpayload->ts));
+
+  GST_DEBUG_OBJECT (demux, "duration bw key frames using payload time = %"GST_TIME_FORMAT"and avg duration = %"GST_TIME_FORMAT, 
+    GST_TIME_ARGS(end_kpayload->ts  - start_kpayload->ts), GST_TIME_ARGS(demux->trickplay_info.avg_dur));
+
+  approx_frames_bw_kframes = (gint32)((end_kpayload->ts  - start_kpayload->ts) /demux->trickplay_info.avg_dur);
+
+  GST_INFO_OBJECT (demux, "approximate num of frames bw key frames = %d", approx_frames_bw_kframes);
+
+  diff_bw_keyframes = end_kpayload->mo_number - start_kpayload->mo_number;
+
+  while (approx_frames_bw_kframes > diff_bw_keyframes) {
+    ++i;
+    diff_bw_keyframes = (end_kpayload->mo_number + ( i * demux->trickplay_info.mo_len_type) - start_kpayload->mo_number);
+  }
+
+  // this is trade-off condition
+  if (diff_bw_keyframes > (approx_frames_bw_kframes + (demux->trickplay_info.mo_len_type>>1))) {
+    GST_INFO_OBJECT (demux, "Special condition in finding difference between keyframes...");
+    --i;
+  }
+  
+  diff_bw_keyframes = (end_kpayload->mo_number + ( i * demux->trickplay_info.mo_len_type) - start_kpayload->mo_number);
+  GST_INFO_OBJECT (demux, "Difference between key frames from Obj Num = %d", diff_bw_keyframes);
+
+  /*at present taking approximate num of frames based on duration and timestamps */
+  return diff_bw_keyframes;
+
+}
+
+static gboolean 
+gst_asf_demux_find_keypayload_from_packet (GstASFDemux * demux, AsfPayload **keypayload)
+{
+  guint packet_num = 0;
+  guint64 off = 0;
+  GstBuffer *buf = NULL;
+  GstFlowReturn flow = GST_FLOW_OK;
+  const guint8 *data = NULL;
+  guint size = 0;
+  AsfPacket packet = {0, };
+  guint8 ec_flags, flags1;
+  gboolean has_multiple_payloads;
+  gboolean ret = FALSE;
+  gboolean is_video = FALSE;
+  AsfPayload *cur_payload = NULL;
+
+pull_again:
+  if (*keypayload) {
+    g_free (*keypayload);
+    *keypayload = NULL;
+  }
+
+  if (demux->trickplay_info.is_eos == FALSE)
+    packet_num = demux->sidx_entries[demux->seek_idx].packet;
+  else
+    packet_num = demux->trickplay_info.next_kpacket;
+
+  off = demux->data_offset + (packet_num * demux->packet_size);
+
+  GST_DEBUG_OBJECT (demux, "for finding next keypayload :: pulling buffer at %" G_GUINT64_FORMAT "+%u", off, demux->packet_size * demux->speed_packets);
+
+  if (G_UNLIKELY (!gst_asf_demux_pull_data (demux, off, demux->packet_size * demux->speed_packets, &buf, &flow)) || buf == NULL) {
+    GST_ERROR_OBJECT (demux, "pull data flow return : %s", gst_flow_get_name (flow));
+    return FALSE;
+  }
+
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+
+  packet.buf = buf;
+  
+  ec_flags = GST_READ_UINT8 (data);
+
+  /* skip optional error correction stuff */
+  if ((ec_flags & 0x80) != 0) {
+    guint ec_len_type, ec_len;
+
+    ec_len_type = (ec_flags & 0x60) >> 5;
+    if (ec_len_type == 0) {
+      ec_len = ec_flags & 0x0f;
+    } else {
+      GST_WARNING_OBJECT (demux, "unexpected error correction length type %u", ec_len_type);
+      ec_len = 2;
+    }
+       
+    GST_DEBUG_OBJECT (demux, "packet has error correction (%u bytes)", ec_len);
+
+    /* still need at least two payload flag bytes, send time, and duration */
+    if (size <= (1 + ec_len) + 2 + 4 + 2) {
+      GST_ERROR_OBJECT (demux, "EC :: short packet.....");
+      goto short_packet;
+    }
+    data += 1 + ec_len;
+    size -= 1 + ec_len;
+  }
+
+ /* parse payload info */
+  flags1 = GST_READ_UINT8 (data);
+  packet.prop_flags = GST_READ_UINT8 (data + 1);
+
+  switch (packet.prop_flags && 0x30) {
+    case 0:
+      GST_ERROR_OBJECT (demux, "The Media Object Number Length field does not exist...");
+      goto error;
+    case 1:
+      GST_INFO_OBJECT (demux, "The Media Object Number Length field is coded using a BYTE");
+      demux->trickplay_info.mo_len_type = 256;
+      break;
+    case 2:
+      GST_INFO_OBJECT (demux, "The Media Object Number Length field is coded using a WORD");
+      demux->trickplay_info.mo_len_type = 65536;
+      break;
+    case 3:
+      GST_INFO_OBJECT (demux, "The Media Object Number Length field is coded using a DWORD");
+      demux->trickplay_info.mo_len_type =  4294967296;
+      break;
+    default:
+      GST_ERROR_OBJECT (demux, "Wrong length type...");
+      goto error;
+  }
+  data += 2;
+  size -= 2;
+  
+  has_multiple_payloads = (flags1 & 0x01) != 0;
+
+  packet.length = asf_packet_read_varlen_int (flags1, 5, &data, &size);
+  packet.sequence = asf_packet_read_varlen_int (flags1, 1, &data, &size);
+  packet.padding = asf_packet_read_varlen_int (flags1, 3, &data, &size);
+
+  if (G_UNLIKELY (size < 6)) {
+    GST_ERROR_OBJECT (demux, "short packet.....");
+    goto short_packet;
+  }
+
+  packet.send_time = GST_READ_UINT32_LE (data) * GST_MSECOND;
+  packet.duration = GST_READ_UINT16_LE (data + 4) * GST_MSECOND;
+
+  GST_DEBUG_OBJECT (demux, "multiple payloads: %u", has_multiple_payloads);
+  GST_DEBUG_OBJECT (demux, "packet length    : %u", packet.length);
+  GST_DEBUG_OBJECT (demux, "sequence         : %u", packet.sequence);
+  GST_DEBUG_OBJECT (demux, "padding          : %u", packet.padding);
+  GST_DEBUG_OBJECT (demux, "send time        : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.send_time));
+  GST_DEBUG_OBJECT (demux, "duration         : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.duration));
+
+  data += 4 + 2;
+  size -= 4 + 2;
+
+  if (G_UNLIKELY (packet.padding == (guint) -1 || size < packet.padding)) {
+    GST_ERROR_OBJECT (demux, "padding :: short packet.....");
+    goto short_packet;
+  }
+  
+  size -= packet.padding;
+
+  if (has_multiple_payloads) {
+    guint num, lentype;
+    gint i = 0;
+       
+    if (G_UNLIKELY (size < 1))
+      goto short_packet;
+
+    num = (GST_READ_UINT8 (data) & 0x3F) >> 0;
+    lentype = (GST_READ_UINT8 (data) & 0xC0) >> 6;
+
+    ++data;
+    --size;
+
+    GST_DEBUG_OBJECT (demux, "num payloads     : %u", num);
+   
+    for (i = 0; i < num; ++i) {
+      GST_DEBUG_OBJECT (demux, "Parsing payload %u/%u", i + 1, num);
+
+      cur_payload = (AsfPayload *) g_malloc0 (sizeof (AsfPayload));
+      if (NULL == cur_payload) {
+        GST_ERROR_OBJECT (demux, "Failed to allocate memory...");
+        goto error;
+      }
+
+      ret = gst_asf_demux_parse_payload_custom (demux, &packet, lentype, &data, &size, cur_payload, &is_video);
+      if (G_UNLIKELY (!ret)) {
+        GST_ERROR_OBJECT (demux, "Failed to parse payload %u/%u", i + 1, num);
+        goto error;
+      }
+
+      if (cur_payload->keyframe) {
+        GST_DEBUG_OBJECT (demux, "Found key frame pay load...");
+        if (*keypayload) {
+          g_free (*keypayload);
+        }
+        *keypayload = cur_payload;
+        cur_payload = NULL;
+      } else if (demux->trickplay_info.is_eos && is_video) {
+        GST_DEBUG_OBJECT (demux, "on eos, received video payload...");
+        if (*keypayload) {
+          g_free (*keypayload);
+        }
+        *keypayload = cur_payload;
+        cur_payload = NULL;
+      } else {
+        g_free (cur_payload);
+        cur_payload = NULL;
+      }
+    }
+  } else {
+    cur_payload = (AsfPayload *) g_malloc0 (sizeof (AsfPayload));
+    if (NULL == cur_payload) {
+      GST_ERROR_OBJECT (demux, "Failed to allocate memory...");
+      return FALSE;
+    }
+
+    GST_LOG_OBJECT (demux, "Parsing single payload");
+    ret = gst_asf_demux_parse_payload_custom (demux, &packet, -1, &data, &size, cur_payload, &is_video);
+    if (G_UNLIKELY (!ret)) {
+      GST_ERROR_OBJECT (demux, "Failed to parse single payload");
+      goto error;
+    }
+
+    if (cur_payload->keyframe) {
+      GST_DEBUG_OBJECT (demux, "Found key frame pay load...");
+      if (*keypayload) {
+        g_free (*keypayload);
+      }
+      *keypayload = cur_payload;
+      cur_payload = NULL;
+    } else if (demux->trickplay_info.is_eos && is_video) {
+      GST_DEBUG_OBJECT (demux, "on eos, received video payload...");
+      if (*keypayload) {
+        g_free (*keypayload);
+      }
+      *keypayload = cur_payload;
+      cur_payload = NULL;
+    } else {
+      g_free (cur_payload);
+      cur_payload = NULL;
+    }
+  }
+
+  if (*keypayload == NULL) {
+    if (demux->trickplay_info.is_eos) {
+      GST_INFO_OBJECT (demux, "Key frame not found, pull again...");
+      if (packet.buf) {
+        gst_buffer_unref (packet.buf);
+        packet.buf = NULL; 
+      }
+      demux->trickplay_info.next_kpacket--;
+      goto pull_again;
+    } else {
+      GST_ERROR_OBJECT (demux, "Key frame not found... not a proper packet");
+      goto error;
+    }
+  }
+
+  if (packet.buf) {
+    gst_buffer_unref (packet.buf);
+    packet.buf = NULL; 
+  }
+
+  return TRUE;
+  
+short_packet:
+  {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    if (packet.buf) {
+         gst_buffer_unref (packet.buf);
+         packet.buf = NULL;
+    }
+       *keypayload = NULL;
+    return FALSE;
+  }
+error:
+  {
+    if (packet.buf) {
+      gst_buffer_unref (packet.buf);
+      packet.buf = NULL;
+    }
+       *keypayload = NULL;
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_asf_demux_parse_payload_custom (GstASFDemux * demux, AsfPacket * packet, gint lentype, const guint8 ** p_data, 
+      guint *p_size, AsfPayload *payload, gboolean *is_video)
+{
+  AsfStream *stream;
+  gboolean is_compressed;
+  guint payload_len;
+  guint stream_num;
+
+  if (G_UNLIKELY (*p_size < 1)) {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    return FALSE;
+  }
+  stream_num = GST_READ_UINT8 (*p_data) & 0x7f;
+  payload->keyframe = ((GST_READ_UINT8 (*p_data) & 0x80) != 0);
+  
+  *p_data += 1;
+  *p_size -= 1;
+
+  payload->ts = GST_CLOCK_TIME_NONE;
+  payload->duration = GST_CLOCK_TIME_NONE;
+  payload->par_x = 0;
+  payload->par_y = 0;
+  payload->interlaced = FALSE;
+  payload->tff = FALSE;
+  payload->rff = FALSE;
+
+  payload->mo_number =
+      asf_packet_read_varlen_int (packet->prop_flags, 4, p_data, p_size);
+  payload->mo_offset =
+      asf_packet_read_varlen_int (packet->prop_flags, 2, p_data, p_size);
+  payload->rep_data_len =
+      asf_packet_read_varlen_int (packet->prop_flags, 0, p_data, p_size);
+
+  is_compressed = (payload->rep_data_len == 1);
+
+  GST_DEBUG_OBJECT (demux, "payload for stream %u", stream_num);
+  GST_DEBUG_OBJECT (demux, "(stream -%d) payload media obj num %u", stream_num, payload->mo_number);
+  GST_DEBUG_OBJECT (demux, "keyframe   : %s", (payload->keyframe) ? "yes" : "no");
+  GST_DEBUG_OBJECT (demux, "compressed : %s", (is_compressed) ? "yes" : "no");
+
+  if (G_UNLIKELY (*p_size < payload->rep_data_len)) {
+    GST_ERROR_OBJECT (demux, "Short packet! rep_data_len=%u, size=%u",
+        payload->rep_data_len, *p_size);
+    return FALSE;
+  }
+
+  memcpy (payload->rep_data, *p_data,
+      MIN (sizeof (payload->rep_data), payload->rep_data_len));
+  
+  *p_data += payload->rep_data_len;
+  *p_size -= payload->rep_data_len;
+
+  if (G_UNLIKELY (*p_size == 0)) {
+    GST_WARNING_OBJECT (demux, "payload without data!?");
+    return FALSE;
+  }
+
+  /* we use -1 as lentype for a single payload that's the size of the packet */
+  if (G_UNLIKELY ((lentype >= 0 && lentype <= 3))) {
+    payload_len = asf_packet_read_varlen_int (lentype, 0, p_data, p_size);
+    if (*p_size < payload_len) {
+      GST_WARNING_OBJECT (demux, "Short packet! payload_len=%u, size=%u",
+          payload_len, *p_size);
+      return FALSE;
+    }
+  } else {
+    payload_len = *p_size;
+  }
+
+  GST_DEBUG_OBJECT (demux, "payload length: %u", payload_len);
+
+  stream = gst_asf_demux_get_stream (demux, stream_num);
+  if (G_UNLIKELY (stream == NULL)) {
+    GST_ERROR_OBJECT (demux, "Payload for unknown stream %u, skipping",
+        stream_num);
+    *p_data += payload_len;
+    *p_size -= payload_len;
+    return TRUE;
+  }
+
+  if (stream->is_video)
+    *is_video = TRUE;
+
+  if (G_UNLIKELY (!is_compressed)) {
+    GST_DEBUG_OBJECT (demux, "replicated data length: %u", payload->rep_data_len);
+
+    if (payload->rep_data_len >= 8) {
+      payload->mo_size = GST_READ_UINT32_LE (payload->rep_data);
+      payload->ts = GST_READ_UINT32_LE (payload->rep_data + 4) * GST_MSECOND;
+      payload->ts -= demux->trickplay_info.tp_preroll;
+      asf_payload_parse_replicated_data_extensions (stream, payload);
+
+      GST_DEBUG_OBJECT (demux, "media object size   : %u", payload->mo_size);
+      GST_DEBUG_OBJECT (demux, "media object ts     : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload->ts));
+      GST_DEBUG_OBJECT (demux, "media object dur    : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload->duration));
+         *p_data += payload_len;
+      *p_size -= payload_len;
+    } else if (payload->rep_data_len != 0) {
+      GST_ERROR_OBJECT (demux, "invalid replicated data length, very bad");
+      *p_data += payload_len;
+      *p_size -= payload_len;
+      return FALSE;
+    }
+
+    GST_DEBUG_OBJECT (demux, "media object offset : %u", payload->mo_offset);
+    GST_DEBUG_OBJECT (demux, "payload length: %u", payload_len);
+  } else {
+    const guint8 *payload_data;
+
+    GST_LOG_OBJECT (demux, "Compressed payload, length=%u", payload_len);
+
+    payload_data = *p_data;
+
+    *p_data += payload_len;
+    *p_size -= payload_len;
+  }
+  
+  return TRUE;
+}
+
+static gboolean
+gst_asf_demux_index_table_parse_packet (GstASFDemux * demux, GstBuffer * buf, GQueue *sidx_queue, gint *packet_num)
+{
+  AsfPacket packet = { 0, };
+  const guint8 *data;
+  AsfKeyPacketInfo *keyinfo = NULL;
+  gboolean has_multiple_payloads;
+  gboolean ret = TRUE;
+  gboolean sret = TRUE;
+  guint8 ec_flags, flags1;
+  guint size;
+
+  if(buf == NULL) {
+    GST_INFO("Invalid Buffer");
+       return FALSE;
+  }
+  data = GST_BUFFER_DATA (buf);
+  size = GST_BUFFER_SIZE (buf);
+  GST_LOG_OBJECT (demux, "Buffer size: %u", size);
+
+  /* need at least two payload flag bytes, send time, and duration */
+  if (G_UNLIKELY (size < 2 + 4 + 2))
+    goto short_packet;
+
+  packet.buf = buf;
+
+  ec_flags = GST_READ_UINT8 (data);
+
+  /* skip optional error correction stuff */
+  if ((ec_flags & 0x80) != 0) {
+    guint ec_len_type, ec_len;
+
+    ec_len_type = (ec_flags & 0x60) >> 5;
+    if (ec_len_type == 0) {
+      ec_len = ec_flags & 0x0f;
+    } else {
+      GST_WARNING_OBJECT (demux, "unexpected error correction length type %u",
+          ec_len_type);
+      ec_len = 2;
+    }
+    GST_LOG_OBJECT (demux, "packet has error correction (%u bytes)", ec_len);
+
+    /* still need at least two payload flag bytes, send time, and duration */
+    if (size <= (1 + ec_len) + 2 + 4 + 2)
+      goto short_packet;
+
+    data += 1 + ec_len;
+    size -= 1 + ec_len;
+  }
+
+  /* parse payload info */
+  flags1 = GST_READ_UINT8 (data);
+  packet.prop_flags = GST_READ_UINT8 (data + 1);
+
+  data += 2;
+  size -= 2;
+
+  has_multiple_payloads = (flags1 & 0x01) != 0;
+
+  packet.length = asf_packet_read_varlen_int (flags1, 5, &data, &size);
+
+  packet.sequence = asf_packet_read_varlen_int (flags1, 1, &data, &size);
+
+  packet.padding = asf_packet_read_varlen_int (flags1, 3, &data, &size);
+
+  if (G_UNLIKELY (size < 6))
+    goto short_packet;
+
+  packet.send_time = GST_READ_UINT32_LE (data) * GST_MSECOND;
+  packet.duration = GST_READ_UINT16_LE (data + 4) * GST_MSECOND;
+
+  data += 4 + 2;
+  size -= 4 + 2;
+
+  GST_LOG_OBJECT (demux, "flags            : 0x%x", flags1);
+  GST_LOG_OBJECT (demux, "multiple payloads: %u", has_multiple_payloads);
+  GST_LOG_OBJECT (demux, "packet length    : %u", packet.length);
+  GST_LOG_OBJECT (demux, "sequence         : %u", packet.sequence);
+  GST_LOG_OBJECT (demux, "padding          : %u", packet.padding);
+  GST_LOG_OBJECT (demux, "send time        : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.send_time));
+  GST_LOG_OBJECT (demux, "duration         : %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (packet.duration));
+
+  if (G_UNLIKELY (packet.padding == (guint) - 1 || size < packet.padding))
+    goto short_packet;
+
+  size -= packet.padding;
+
+  /* adjust available size for parsing if there's less actual packet data for
+   * parsing than there is data in bytes (for sample see bug 431318) */
+  if (G_UNLIKELY (packet.length != 0 && packet.padding == 0
+          && packet.length < demux->packet_size)) {
+    GST_LOG_OBJECT (demux, "shortened packet with implicit padding, "
+        "adjusting available data size");
+    if (size < demux->packet_size - packet.length) {
+      /* the buffer is smaller than the implicit padding */
+      goto short_packet;
+    } else {
+      /* subtract the implicit padding */
+      size -= (demux->packet_size - packet.length);
+    }
+  }
+
+  if (has_multiple_payloads) {
+    guint i, num, lentype;
+
+    if (G_UNLIKELY (size < 1))
+      goto short_packet;
+
+    num = (GST_READ_UINT8 (data) & 0x3F) >> 0;
+    lentype = (GST_READ_UINT8 (data) & 0xC0) >> 6;
+
+    ++data;
+    --size;
+
+    GST_LOG_OBJECT (demux, "num payloads     : %u", num);
+
+    for (i = 0; i < num; ++i) {
+      GST_LOG_OBJECT (demux, "Parsing payload %u/%u, size left: %u", i + 1, num, size);
+      keyinfo = (AsfKeyPacketInfo *) malloc (sizeof (AsfKeyPacketInfo));
+      if (NULL == keyinfo) {
+        GST_ERROR_OBJECT (demux, "Failed to allocate memory...");
+        goto error;
+      }
+      keyinfo->speed_count = 1;
+      keyinfo->key_time = GST_CLOCK_TIME_NONE;
+      keyinfo->key_packet = -1;
+      ret = gst_asf_demux_index_table_parse_payload (demux, &packet, lentype, &data, &size, keyinfo);
+      if (G_UNLIKELY (!ret)) {
+        GST_WARNING_OBJECT (demux, "Failed to parse payload %u/%u", i + 1, num);
+        free (keyinfo);
+             keyinfo = NULL;
+        break;
+      }
+      if (keyinfo->key_time != GST_CLOCK_TIME_NONE) {
+        GST_DEBUG_OBJECT (demux, "Got key payload...");
+               sret = gst_asf_demux_push_sidx_queue(demux, sidx_queue, packet_num, keyinfo);
+               if (G_UNLIKELY (!sret)) {
+          GST_WARNING("Failed to push payload into sidx_queue");
+          goto error;
+               }
+      } else {
+        free (keyinfo);
+               keyinfo = NULL;
+         }
+    }
+  } else {
+    GST_LOG_OBJECT (demux, "Parsing single payload");
+
+       keyinfo = (AsfKeyPacketInfo *) malloc (sizeof (AsfKeyPacketInfo));
+    if (NULL == keyinfo) {
+      GST_ERROR_OBJECT (demux, "Failed to allocate memory...");
+      goto error;
+    }
+    keyinfo->speed_count = 1;
+    keyinfo->key_time = GST_CLOCK_TIME_NONE;
+    keyinfo->key_packet = -1;
+
+    ret = gst_asf_demux_index_table_parse_payload (demux, &packet, -1, &data, &size, keyinfo);
+       if (G_UNLIKELY (!ret)) {
+      GST_WARNING_OBJECT (demux, "Failed to parse payload ");
+      goto error;
+    }
+
+       if (keyinfo->key_time != GST_CLOCK_TIME_NONE) {
+      GST_DEBUG_OBJECT (demux, "Got key payload...");
+      sret = gst_asf_demux_push_sidx_queue(demux, sidx_queue, packet_num, keyinfo);
+         if (G_UNLIKELY (!sret)) {
+           GST_WARNING("Failed to push payload into sidx_queue");
+               goto error;
+         }
+    } else {
+      free (keyinfo);
+         keyinfo = NULL;
+       }
+  }
+
+  return ret;
+
+/* ERRORS */
+error:
+  {
+    if (buf)
+      gst_buffer_replace(&buf, NULL);
+    if (keyinfo)
+      free (keyinfo);
+    if (sidx_queue)
+      g_queue_free (sidx_queue);
+    return FALSE;
+  }
+
+
+short_packet:
+  {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    return FALSE;
+  }
+}
+
+
+static gboolean
+gst_asf_demux_push_sidx_queue(GstASFDemux * demux, GQueue *sidx_queue, gint *packet_num, AsfKeyPacketInfo *keyinfo)
+{
+  AsfKeyPacketInfo *last_keyinfo = NULL;
+  gboolean ret = TRUE;
+
+  keyinfo->key_packet = *packet_num;
+  if (!g_queue_is_empty (sidx_queue)) {
+    GST_DEBUG ("length of queue = %d\n", g_queue_get_length (sidx_queue));
+
+    last_keyinfo = g_queue_peek_tail (sidx_queue);
+    if (NULL == last_keyinfo) {
+      GST_ERROR_OBJECT (demux, "Failed to peek last element...");
+      return FALSE;
+    }
+    GST_DEBUG_OBJECT (demux, "last keyinfo in queue with ts = %"GST_TIME_FORMAT, GST_TIME_ARGS (last_keyinfo->key_time));
+  }
+
+  GST_INFO_OBJECT (demux, "Recieved keypacket num = %d and ts = %"GST_TIME_FORMAT,
+  keyinfo->key_packet, GST_TIME_ARGS (keyinfo->key_time));
+
+  if (last_keyinfo) {
+    /* Checking if multiple keypackets belong to same key frame */
+    if (last_keyinfo->key_time < keyinfo->key_time) {
+      /* Received new keyframe packet */
+      GST_DEBUG_OBJECT (demux, "Pushing keyinfo to sidx queue...");
+      g_queue_push_tail (sidx_queue, keyinfo);
+    } else if (last_keyinfo->key_time == keyinfo->key_time) {
+      /* calculating keypackets count those are belong to same keyframe */
+      last_keyinfo->speed_count++;
+      GST_DEBUG_OBJECT (demux, "Now Recieved Speed packet cnt = %d", last_keyinfo->speed_count);
+         free (keyinfo);
+    } else {
+      GST_WARNING_OBJECT (demux, "Not expected key info...");
+         free (keyinfo);
+    }
+    last_keyinfo = NULL;
+  } else {
+    GST_DEBUG_OBJECT (demux, "sidx queue is empty.. recieved first keyinfo");
+       GST_INFO_OBJECT (demux, "Pushing keyinfo into sidx_queue = %d and ts = %"GST_TIME_FORMAT,
+    keyinfo->key_packet, GST_TIME_ARGS (keyinfo->key_time));
+    g_queue_push_tail (sidx_queue, keyinfo);
+  }
+  return ret;
+}
+
+
+static gboolean
+gst_asf_demux_index_table_parse_payload (GstASFDemux * demux, AsfPacket * packet,
+    gint lentype, const guint8 ** p_data, guint * p_size, AsfKeyPacketInfo *keyinfo)
+{
+  AsfPayload payload = { 0, };
+  AsfStream *stream;
+  gboolean is_compressed;
+  guint payload_len;
+  guint stream_num;
+
+  if (G_UNLIKELY (*p_size < 1)) {
+    GST_WARNING_OBJECT (demux, "Short packet!");
+    return FALSE;
+  }
+
+  stream_num = GST_READ_UINT8 (*p_data) & 0x7f;
+  payload.keyframe = ((GST_READ_UINT8 (*p_data) & 0x80) != 0);
+
+  *p_data += 1;
+  *p_size -= 1;
+
+  payload.ts = GST_CLOCK_TIME_NONE;
+  payload.duration = GST_CLOCK_TIME_NONE;
+  payload.par_x = 0;
+  payload.par_y = 0;
+  payload.interlaced = FALSE;
+  payload.tff = FALSE;
+  payload.rff = FALSE;
+
+  payload.mo_number =
+      asf_packet_read_varlen_int (packet->prop_flags, 4, p_data, p_size);
+  payload.mo_offset =
+      asf_packet_read_varlen_int (packet->prop_flags, 2, p_data, p_size);
+  payload.rep_data_len =
+      asf_packet_read_varlen_int (packet->prop_flags, 0, p_data, p_size);
+
+  is_compressed = (payload.rep_data_len == 1);
+
+  GST_LOG_OBJECT (demux, "payload for stream %u", stream_num);
+  GST_LOG_OBJECT (demux, "keyframe   : %s", (payload.keyframe) ? "yes" : "no");
+  GST_LOG_OBJECT (demux, "compressed : %s", (is_compressed) ? "yes" : "no");
+
+  if (G_UNLIKELY (*p_size < payload.rep_data_len)) {
+    GST_WARNING_OBJECT (demux, "Short packet! rep_data_len=%u, size=%u",
+        payload.rep_data_len, *p_size);
+    return FALSE;
+  }
+
+  memcpy (payload.rep_data, *p_data,
+      MIN (sizeof (payload.rep_data), payload.rep_data_len));
+
+  *p_data += payload.rep_data_len;
+  *p_size -= payload.rep_data_len;
+
+  if (G_UNLIKELY (*p_size == 0)) {
+    GST_WARNING_OBJECT (demux, "payload without data!?");
+    return FALSE;
+  }
+
+  /* we use -1 as lentype for a single payload that's the size of the packet */
+  if (G_UNLIKELY ((lentype >= 0 && lentype <= 3))) {
+    payload_len = asf_packet_read_varlen_int (lentype, 0, p_data, p_size);
+    if (*p_size < payload_len) {
+      GST_WARNING_OBJECT (demux, "Short packet! payload_len=%u, size=%u",
+          payload_len, *p_size);
+      return FALSE;
+    }
+  } else {
+    payload_len = *p_size;
+  }
+
+  GST_LOG_OBJECT (demux, "payload length: %u", payload_len);
+
+  stream = gst_asf_demux_get_stream (demux, stream_num);
+
+  if (G_UNLIKELY (stream == NULL)) {
+    GST_WARNING_OBJECT (demux, "Payload for unknown stream %u, skipping",
+        stream_num);
+    if (*p_size < payload_len) {
+      *p_data += *p_size;
+      *p_size = 0;
+    } else {
+      *p_data += payload_len;
+      *p_size -= payload_len;
+    }
+    return TRUE;
+  }
+
+  if (G_UNLIKELY (!is_compressed)) {
+    GST_LOG_OBJECT (demux, "replicated data length: %u", payload.rep_data_len);
+
+    if (payload.rep_data_len >= 8) {
+      payload.mo_size = GST_READ_UINT32_LE (payload.rep_data);
+      payload.ts = GST_READ_UINT32_LE (payload.rep_data + 4) * GST_MSECOND;
+      if (G_UNLIKELY (payload.ts < demux->preroll))
+        payload.ts = 0;
+      else
+        payload.ts -= demux->preroll;
+      asf_payload_parse_replicated_data_extensions (stream, &payload);
+
+      GST_LOG_OBJECT (demux, "media object size   : %u", payload.mo_size);
+      GST_LOG_OBJECT (demux, "media object ts     : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload.ts));
+      GST_LOG_OBJECT (demux, "media object dur    : %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (payload.duration));
+      *p_data += payload_len;
+      *p_size -= payload_len;
+    } else if (payload.rep_data_len != 0) {
+      GST_WARNING_OBJECT (demux, "invalid replicated data length, very bad");
+      *p_data += payload_len;
+      *p_size -= payload_len;
+      return FALSE;
+    }
+
+    if (payload.keyframe) {
+      GST_DEBUG_OBJECT (demux, "key payload ts = %"GST_TIME_FORMAT, GST_TIME_ARGS(payload.ts));
+      keyinfo->key_time = payload.ts;
+    } else {
+      keyinfo->key_time = GST_CLOCK_TIME_NONE;
+    }
+
+    GST_LOG_OBJECT (demux, "media object offset : %u", payload.mo_offset);
+    GST_LOG_OBJECT (demux, "payload length: %u", payload_len);;
+
+  } else {
+    const guint8 *payload_data;
+    GstClockTime ts;
+
+    GST_LOG_OBJECT (demux, "Compressed payload, length=%u", payload_len);
+
+    payload_data = *p_data;
+
+    *p_data += payload_len;
+    *p_size -= payload_len;
+
+    ts = payload.mo_offset * GST_MSECOND;
+    if (G_UNLIKELY (ts < demux->preroll))
+      ts = 0;
+    else
+      ts -= demux->preroll;
+
+    if (payload.keyframe) {
+      GST_DEBUG_OBJECT (demux, "key payload ts = %"GST_TIME_FORMAT, GST_TIME_ARGS(payload.ts));
+      keyinfo->key_time = ts;
+    } else {
+      keyinfo->key_time = GST_CLOCK_TIME_NONE;
+    }
+  }
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_asf_demux_create_simple_index_table (GstASFDemux *demux)
+{
+  guint64 offset = 0;
+  GstBuffer *packet_buf = NULL;
+  GstBuffer *buf = NULL;
+  gboolean bret = FALSE;
+  AsfKeyPacketInfo *keyinfo = NULL;
+  gint i = 0;
+  gint packet_num = 0;
+  GQueue *sidx_queue = NULL;
+
+  /* pull data object for creating simple index table */
+  if (!gst_asf_demux_pull_data (demux, demux->data_offset, demux->data_size, &buf, NULL))
+    goto error;
+  GST_LOG_OBJECT (demux, "Received buffer of size = %d", GST_BUFFER_SIZE (buf));
+
+  sidx_queue = g_queue_new ();
+  if (NULL == sidx_queue) {
+    GST_ERROR_OBJECT (demux, "Failed to create GQueue");
+    goto error;
+  }
+
+  /* Parsing of all packets to know the key frames available */
+  while (offset < GST_BUFFER_SIZE (buf)) {
+    /* Create sub buffer of size packet_size */
+    packet_buf = gst_buffer_create_sub (buf, offset, demux->packet_size);
+    if (NULL == packet_buf) {
+      GST_ERROR_OBJECT (demux, "Failed to create sub buffer");
+      goto error;
+    }
+
+    bret = gst_asf_demux_index_table_parse_packet (demux, packet_buf, sidx_queue, &packet_num);
+    if (FALSE == bret) {
+      GST_ERROR_OBJECT (demux, "Failed to parse packet");
+      goto error;
+    }
+
+    offset += demux->packet_size;
+    packet_num++;
+  }
+
+  gst_buffer_replace(&buf, NULL);
+
+  GST_INFO_OBJECT (demux, "Total keyframe entries = %d", g_queue_get_length (sidx_queue));
+  GST_LOG_OBJECT (demux, "Parsing of File is finished...Going to build sidx_entries");
+
+  if (!demux->sidx_interval)
+    demux->sidx_interval = GST_SECOND;
+
+  demux->sidx_num_entries = gst_util_uint64_scale (demux->play_time, 1, demux->sidx_interval);
+  GST_INFO_OBJECT (demux, "Number of simple index entries = %d", demux->sidx_num_entries);
+
+  demux->sidx_entries = g_new0 (AsfSimpleIndexEntry, demux->sidx_num_entries);
+
+  /* Creating index table (sidx table) */
+  for (i = 0; i < demux->sidx_num_entries; i++) {
+    AsfKeyPacketInfo *next_keyinfo = NULL;
+
+    if (!g_queue_is_empty (sidx_queue)) {
+
+      if (NULL == keyinfo) {
+        keyinfo = g_queue_pop_head (sidx_queue);
+        if (NULL == keyinfo) {
+          GST_ERROR_OBJECT (demux, "Failed to get obj from queue");
+          goto error;
+        }
+      }
+
+      if ((i * demux->sidx_interval) > (demux->preroll + keyinfo->key_time)) {
+        while (!g_queue_is_empty (sidx_queue)) {
+          next_keyinfo = g_queue_pop_head (sidx_queue);
+          if (NULL == next_keyinfo) {
+            GST_ERROR_OBJECT (demux, "Failed to peek object");
+            goto error;
+          }
+          GST_DEBUG_OBJECT (demux, "sidx ts = %"GST_TIME_FORMAT", keyinfo->ts = %"GST_TIME_FORMAT ", next_keyinfo->ts = %"GST_TIME_FORMAT,
+                     GST_TIME_ARGS (i * demux->sidx_interval), GST_TIME_ARGS (keyinfo->key_time),      GST_TIME_ARGS (next_keyinfo->key_time));
+
+          if ((i * demux->sidx_interval) > (demux->preroll + next_keyinfo->key_time)) {
+            free (keyinfo);
+            keyinfo = next_keyinfo;
+            GST_LOG ("Doing continue to packet %d", keyinfo->key_packet);
+            continue;
+          } else {
+            GST_LOG ("Pushing again popped one");
+            demux->sidx_entries[i].packet = keyinfo->key_packet;
+            demux->sidx_entries[i].count = keyinfo->speed_count;
+            g_queue_push_head (sidx_queue, next_keyinfo);
+            break;
+          }
+        }
+
+        if (g_queue_is_empty (sidx_queue)) {
+          GST_INFO_OBJECT (demux, "queue is empty...");
+          demux->sidx_entries[i].packet = keyinfo->key_packet;
+          demux->sidx_entries[i].count = keyinfo->speed_count;
+        }
+      } else {
+        demux->sidx_entries[i].packet = keyinfo->key_packet;
+        demux->sidx_entries[i].count = keyinfo->speed_count;
+      }
+    } else if (keyinfo) {
+      demux->sidx_entries[i].packet = keyinfo->key_packet;
+      demux->sidx_entries[i].count = keyinfo->speed_count;
+    } else {
+      GST_ERROR_OBJECT (demux, "Not expected...");
+      goto error;
+    }
+    GST_DEBUG_OBJECT (demux, "%" GST_TIME_FORMAT " = packet %4u  count : %2d",
+          GST_TIME_ARGS (i * demux->sidx_interval), demux->sidx_entries[i].packet,
+          demux->sidx_entries[i].count);
+  }
+
+  g_queue_free (sidx_queue);
+  return TRUE;
+
+error:
+  {
+    if (buf)
+      gst_buffer_replace(&buf, NULL);
+    if (sidx_queue)
+      g_queue_free (sidx_queue);
+    return FALSE;
+  }
+}
+
+#endif
+
+#ifdef CODEC_ENTRY
+static GstFlowReturn
+gst_asf_demux_process_codec_list (GstASFDemux * demux, guint8 * data,
+    guint64 size)
+{
+  guint i=0,j=0;
+
+#if 0 // FixMe
+  if (size < 2)
+    goto not_enough_data;
+
+  if (demux->languages) {
+    GST_WARNING ("More than one LANGUAGE_LIST object in stream");
+    g_strfreev (demux->languages);
+    demux->languages = NULL;
+    demux->num_languages = 0;
+  }
+#endif
+
+  /* skip reserved 16 bytes */
+  gst_asf_demux_skip_bytes (16, &data, &size);
+
+  /* Get codec entry count */
+  demux->codec_entry_count = gst_asf_demux_get_uint32 (&data, &size);
+  GST_LOG ("========================= codec_entry_count = %d", demux->codec_entry_count);
+
+  /* Alloc codec entry based on count */
+  demux->codec_entry = malloc  (demux->codec_entry_count * sizeof (CODEC_ENTRY));
+  memset (demux->codec_entry, 0, demux->codec_entry_count * sizeof (CODEC_ENTRY));
+
+  /* Read codec entry */
+  for (i=0; i<demux->codec_entry_count; ++i) {
+    guint8 *string_data = NULL;
+
+    GST_LOG ("--------------------------------------------- codec_entry = %d", i);
+
+       /* TYPE */
+    demux->codec_entry[i].type = gst_asf_demux_get_uint16 (&data, &size);
+       GST_LOG(":::::::::::::: type[%d]", demux->codec_entry[i].type);
+
+       /* NAME */
+       demux->codec_entry[i].name_len = gst_asf_demux_get_uint16 (&data, &size);
+       if ( gst_asf_demux_get_bytes (&string_data, demux->codec_entry[i].name_len*2, &data, &size)) {
+         gchar *utf8 = g_convert ((gchar *) string_data, demux->codec_entry[i].name_len*2, "UTF-8", "UTF-16LE", NULL,  NULL, NULL);
+         demux->codec_entry[i].name = utf8;
+         g_free (string_data);
+       }
+       GST_LOG(":::::::::::::: name [%d][%s]", demux->codec_entry[i].name_len, demux->codec_entry[i].name);
+
+       /* DESCRIPTION */
+       demux->codec_entry[i].description_len = gst_asf_demux_get_uint16 (&data, &size);
+       if ( gst_asf_demux_get_bytes (&string_data, demux->codec_entry[i].description_len*2, &data, &size)) {
+         gchar *utf8 = g_convert ((gchar *) string_data, demux->codec_entry[i].description_len*2, "UTF-8", "UTF-16LE", NULL, NULL, NULL);
+         demux->codec_entry[i].description = utf8;
+         g_free (string_data);
+       }
+       GST_LOG(":::::::::::::: description [%d][%s]", demux->codec_entry[i].description_len, demux->codec_entry[i].description);
+
+       /* INFORMATION */
+       demux->codec_entry[i].information_len = gst_asf_demux_get_uint16 (&data, &size);
+       gst_asf_demux_get_bytes (&demux->codec_entry[i].information, demux->codec_entry[i].information_len, &data, &size);
+
+       GST_LOG(":::::::::::::: information len [%d]", demux->codec_entry[i].information_len);
+       for (j=0; j<demux->codec_entry[i].information_len; j++) {
+         GST_LOG(":::::::::::::: [0x%x]", demux->codec_entry[i].information[j]);
+       }
+  }
+  return GST_FLOW_OK;
+
+#if 0  // FixMe
+not_enough_data:
+  {
+    GST_WARNING_OBJECT (demux, "short read parsing language list object!");
+    //g_free (demux->languages);
+    //demux->languages = NULL;
+    return GST_FLOW_OK;         /* not fatal */
+  }
+#endif
+}
+#endif
+
+
diff --git a/gst/asfdemux/gstasfdemux.h b/gst/asfdemux/gstasfdemux.h
new file mode 100644 (file)
index 0000000..f5f437e
--- /dev/null
@@ -0,0 +1,283 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __ASF_DEMUX_H__
+#define __ASF_DEMUX_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+#include "asfheaders.h"
+
+G_BEGIN_DECLS
+  
+#define GST_TYPE_ASF_DEMUX \
+  (gst_asf_demux_get_type())
+#define GST_ASF_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ASF_DEMUX,GstASFDemux))
+#define GST_ASF_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ASF_DEMUX,GstASFDemuxClass))
+#define GST_IS_ASF_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ASF_DEMUX))
+#define GST_IS_ASF_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ASF_DEMUX))
+
+GST_DEBUG_CATEGORY_EXTERN (asfdemux_dbg);
+#define GST_CAT_DEFAULT asfdemux_dbg
+
+#define ASFDEMUX_MODIFICATION
+#define LAST_STOP_SEGMENT
+
+typedef struct _GstASFDemux GstASFDemux;
+typedef struct _GstASFDemuxClass GstASFDemuxClass;
+
+typedef struct {
+  guint32      packet;
+  guint16      count;
+} AsfSimpleIndexEntry;
+
+typedef struct {
+  AsfPayloadExtensionID   id : 16;  /* extension ID; the :16 makes sure the
+                                     * struct gets packed into 4 bytes       */
+  guint16                 len;      /* save this so we can skip unknown IDs  */
+} AsfPayloadExtension;
+
+typedef struct
+{
+  gboolean        valid;               /* TRUE if structure is valid/filled */
+
+  GstClockTime    start_time;
+  GstClockTime    end_time;
+  GstClockTime    avg_time_per_frame;
+  guint32         data_bitrate;
+  guint32         buffer_size;
+  guint32         intial_buf_fullness;
+  guint32         data_bitrate2;
+  guint32         buffer_size2;
+  guint32         intial_buf_fullness2;
+  guint32         max_obj_size;
+  guint32         flags;
+  guint16         lang_idx;
+
+  /* may be NULL if there are no extensions; otherwise, terminated by
+   * an AsfPayloadExtension record with len 0 */
+  AsfPayloadExtension  *payload_extensions;
+
+  /* missing: stream names */
+} AsfStreamExtProps;
+
+#ifdef ASFDEMUX_MODIFICATION
+typedef struct
+{
+  guint32           show_samples; /* no.of frames to show between two consecutive key frames = samples_bw_keyframes/rate */
+  guint64           kpacket_dur_diff;
+  GstClockTime      start_ts;
+  GstClockTime      tp_preroll;
+  GstClockTime      avg_dur;
+  gboolean          is_eos;
+  guint64           mo_len_type;
+  guint32           prev_kpacket;
+  guint32           next_kpacket;
+  guint32           cur_kpacket;
+  guint             prev_keyframe;
+  guint             current_frame;
+  GstClockTime      next_keyframe_ts;
+  GstClockTime      cur_keyframe_ts;
+  gboolean          first_video_push;
+  gboolean          resume_nrl_play;
+  gboolean          first_payload;
+}AsfTrickplayInfo;
+
+typedef struct
+{
+  GstClockTime key_time;
+  gint key_packet;
+  gint speed_count;
+}AsfKeyPacketInfo;
+#endif
+
+typedef struct
+{
+  AsfStreamType      type;
+
+  gboolean           active;  /* if the stream has been activated (pad added) */
+
+  GstPad     *pad;
+  guint16     id;
+
+  /* video-only */
+  gboolean    is_video;
+  gboolean    fps_known;
+
+  GstCaps    *caps;
+
+  GstTagList *pending_tags;
+
+  gboolean    discont;
+
+  /* for new parsing code */
+  GstFlowReturn   last_flow; /* last flow return */
+  GArray         *payloads;  /* pending payloads */
+
+  /* Video stream PAR & interlacing */
+  guint8       par_x;
+  guint8       par_y;
+  gboolean      interlaced;
+
+  /* extended stream properties (optional) */
+  AsfStreamExtProps  ext_props;
+
+} AsfStream;
+
+typedef enum {
+  GST_ASF_DEMUX_STATE_HEADER,
+  GST_ASF_DEMUX_STATE_DATA,
+  GST_ASF_DEMUX_STATE_INDEX
+} GstAsfDemuxState;
+
+#define GST_ASF_DEMUX_NUM_VIDEO_PADS   16
+#define GST_ASF_DEMUX_NUM_AUDIO_PADS   32
+#define GST_ASF_DEMUX_NUM_STREAMS      32
+#define GST_ASF_DEMUX_NUM_STREAM_IDS  127
+
+#ifdef CODEC_ENTRY
+typedef struct __CODEC_ENTRY
+{
+       guint16 type;
+       guint16 name_len;
+       gchar* name;
+       guint16 description_len;
+       gchar* description;
+       guint16 information_len;
+       guint8* information;
+
+} CODEC_ENTRY;
+#endif
+
+struct _GstASFDemux {
+  GstElement        element;
+
+  GstPad            *sinkpad;
+
+  GstAdapter        *adapter;
+  GstTagList        *taglist;
+  GstAsfDemuxState   state;
+
+  /* byte offset where the asf starts, which might not be zero on chained
+   * asfs, index_offset and data_offset already are 'offseted' by base_offset */
+  guint64            base_offset;
+
+  guint64            index_offset; /* byte offset where index might be, or 0   */
+  guint64            data_offset;  /* byte offset where packets start          */
+  guint64            data_size;    /* total size of packet data in bytes, or 0 */
+  guint64            num_packets;  /* total number of data packets, or 0       */
+  gint64             packet;       /* current packet                           */
+#ifdef LAST_STOP_SEGMENT
+  gint64             packet_to_stop;
+#endif
+  guint              speed_packets; /* Known number of packets to get in one go*/
+
+  gchar              **languages;
+  guint                num_languages;
+
+  GstCaps             *metadata;         /* metadata, for delayed parsing; one
+                                          * structure ('stream-N') per stream */
+  GstStructure       *global_metadata;  /* metadata which isn't specific to one stream */
+  GSList              *ext_stream_props; /* for delayed processing (buffers) */
+  GSList              *mut_ex_streams;   /* mutually exclusive streams */
+
+  guint32              num_audio_streams;
+  guint32              num_video_streams;
+  guint32              num_streams;
+  AsfStream            stream[GST_ASF_DEMUX_NUM_STREAMS];
+  gboolean             activated_streams;
+
+  /* for chained asf handling, we need to hold the old asf streams until
+   * we detect the new ones */
+  AsfStream            old_stream[GST_ASF_DEMUX_NUM_STREAMS];
+  gboolean             old_num_streams;
+
+  GstClockTime         first_ts;        /* first timestamp found        */
+
+  guint32              packet_size;
+  guint32              timestamp;       /* in milliseconds              */
+  guint64              play_time;
+
+  guint64              preroll;
+
+  gboolean             seekable;
+  gboolean             broadcast;
+
+  GstSegment           segment;          /* configured play segment                 */
+  gboolean             accurate;
+
+  gboolean             need_newsegment;  /* do we need to send a new-segment event? */
+  GstClockTime         segment_ts;       /* streaming; timestamp for segment start */
+  GstSegment           in_segment;       /* streaming; upstream segment info */
+  GstClockTime         in_gap;           /* streaming; upstream initial segment gap for interpolation */
+  gboolean             segment_running;  /* if we've started the current segment    */
+  gboolean             streaming;        /* TRUE if we are operating chain-based    */
+  GstClockTime         latency;
+
+  /* Descrambler settings */
+  guint8               span;
+  guint16              ds_packet_size;
+  guint16              ds_chunk_size;
+  guint16              ds_data_size;
+
+  /* for debugging only */
+  gchar               *objpath;
+
+  /* simple index, if available */
+  GstClockTime         sidx_interval;    /* interval between entries in ns */
+  guint                sidx_num_entries; /* number of index entries        */
+  AsfSimpleIndexEntry *sidx_entries;     /* packet number for each entry   */
+  gint16               audStrmId;
+  gint16               vidStrmId;
+  gboolean             firstAudBufSent;
+  gboolean             firstVidBufSent;
+
+#ifdef ASFDEMUX_MODIFICATION
+  guint32              seek_idx;
+  GstClockTime         stop_ts;
+  GstClockTime         current_ts;
+  AsfTrickplayInfo trickplay_info;
+#endif
+
+#ifdef CODEC_ENTRY
+  /* Codec List Object */
+  CODEC_ENTRY* codec_entry;
+  int codec_entry_count;
+#endif
+
+
+};
+
+struct _GstASFDemuxClass {
+  GstElementClass parent_class;
+};
+
+GType           gst_asf_demux_get_type (void);
+
+AsfStream     * gst_asf_demux_get_stream (GstASFDemux * demux, guint16 id);
+
+G_END_DECLS
+
+#endif /* __ASF_DEMUX_H__ */
diff --git a/gst/asfdemux/gstrtpasfdepay.c b/gst/asfdemux/gstrtpasfdepay.c
new file mode 100644 (file)
index 0000000..a04c8a8
--- /dev/null
@@ -0,0 +1,535 @@
+/* GStreamer RTP ASF depayloader
+ * Copyright (C) 2006 Tim-Philipp Müller  <tim centricular net>
+ *               2009 Wim Taymans  <wim.taymans@gmail.com>
+ *
+ * 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 "gstrtpasfdepay.h"
+#include <gst/rtp/gstrtpbuffer.h>
+
+#include <string.h>
+#include <stdlib.h>
+
+GST_DEBUG_CATEGORY_STATIC (rtpasfdepayload_debug);
+#define GST_CAT_DEFAULT rtpasfdepayload_debug
+
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-ms-asf")
+    );
+
+/* Other parameters: config, maxps */
+#define SINK_CAPS \
+  "application/x-rtp, "                                          \
+  "media = (string) { \"application\", \"video\", \"audio\" }, " \
+  "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", "         \
+  "clock-rate = (int) [1, MAX ], "                               \
+  "encoding-name = (string) \"X-ASF-PF\""
+
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (SINK_CAPS)
+    );
+
+GST_BOILERPLATE (GstRtpAsfDepay, gst_rtp_asf_depay, GstBaseRTPDepayload,
+    GST_TYPE_BASE_RTP_DEPAYLOAD);
+
+static void gst_rtp_asf_depay_finalize (GObject * object);
+
+static GstStateChangeReturn gst_rtp_asf_depay_change_state (GstElement *
+    element, GstStateChange transition);
+
+static gboolean gst_rtp_asf_depay_setcaps (GstBaseRTPDepayload * depay,
+    GstCaps * caps);
+static GstBuffer *gst_rtp_asf_depay_process (GstBaseRTPDepayload * basedepay,
+    GstBuffer * buf);
+
+static void
+gst_rtp_asf_depay_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+
+  gst_element_class_set_details_simple (element_class,
+      "RTP ASF packet depayloader", "Codec/Depayloader/Network",
+      "Extracts ASF streams from RTP",
+      "Tim-Philipp Müller <tim centricular net>, "
+      "Wim Taymans <wim.taymans@gmail.com>");
+}
+
+static void
+gst_rtp_asf_depay_class_init (GstRtpAsfDepayClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  GstBaseRTPDepayloadClass *gstbasertpdepayload_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+  gstbasertpdepayload_class = (GstBaseRTPDepayloadClass *) klass;
+
+  gobject_class->finalize = gst_rtp_asf_depay_finalize;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_rtp_asf_depay_change_state);
+
+  gstbasertpdepayload_class->set_caps =
+      GST_DEBUG_FUNCPTR (gst_rtp_asf_depay_setcaps);
+  gstbasertpdepayload_class->process =
+      GST_DEBUG_FUNCPTR (gst_rtp_asf_depay_process);
+
+  GST_DEBUG_CATEGORY_INIT (rtpasfdepayload_debug, "rtpasfdepayload", 0,
+      "RTP asf depayloader element");
+}
+
+static void
+gst_rtp_asf_depay_init (GstRtpAsfDepay * depay, GstRtpAsfDepayClass * klass)
+{
+  depay->adapter = gst_adapter_new ();
+}
+
+static void
+gst_rtp_asf_depay_finalize (GObject * object)
+{
+  GstRtpAsfDepay *depay;
+
+  depay = GST_RTP_ASF_DEPAY (object);
+
+  g_object_unref (depay->adapter);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static const guint8 asf_marker[16] = { 0x30, 0x26, 0xb2, 0x75, 0x8e, 0x66,
+  0xcf, 0x11, 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c
+};
+
+static gboolean
+gst_rtp_asf_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
+{
+  GstRtpAsfDepay *depay;
+  GstStructure *s;
+  const gchar *config_str, *ps_string;
+  GstBuffer *buf;
+  GstCaps *src_caps;
+  guint8 *headers;
+  gsize headers_len;
+  gint clock_rate;
+
+  depay = GST_RTP_ASF_DEPAY (depayload);
+
+  s = gst_caps_get_structure (caps, 0);
+
+  if (!gst_structure_get_int (s, "clock-rate", &clock_rate) || clock_rate < 0)
+    clock_rate = 1000;
+  depayload->clock_rate = clock_rate;
+
+  /* config contains the asf headers in base64 coding */
+  config_str = gst_structure_get_string (s, "config");
+  if (config_str == NULL || *config_str == '\0')
+    goto no_config;
+
+  ps_string = gst_structure_get_string (s, "maxps");
+  if (ps_string == NULL || *ps_string == '\0')
+    goto no_packetsize;
+
+  if (depay->packet_size) {
+    /* header sent again following seek;
+     * discard to avoid confusing upstream */
+    if (depay->packet_size == atoi (ps_string)) {
+      goto duplicate_header;
+    } else {
+      /* since we should fiddle with downstream state to handle this */
+      goto refuse_renegotiation;
+    }
+  } else
+    depay->packet_size = atoi (ps_string);
+  if (depay->packet_size <= 16)
+    goto invalid_packetsize;
+
+  headers = (guint8 *) g_base64_decode (config_str, &headers_len);
+
+  if (headers == NULL || headers_len < 16
+      || memcmp (headers, asf_marker, 16) != 0)
+    goto invalid_headers;
+
+  src_caps = gst_caps_new_simple ("video/x-ms-asf", NULL);
+  gst_pad_set_caps (depayload->srcpad, src_caps);
+
+  buf = gst_buffer_new ();
+  GST_BUFFER_DATA (buf) = headers;
+  GST_BUFFER_MALLOCDATA (buf) = headers;
+  GST_BUFFER_SIZE (buf) = headers_len;
+  gst_buffer_set_caps (buf, src_caps);
+  gst_caps_unref (src_caps);
+
+  gst_base_rtp_depayload_push (depayload, buf);
+
+  return TRUE;
+
+  /* ERRORS */
+no_config:
+  {
+    GST_WARNING_OBJECT (depay, "caps without 'config' field with asf headers");
+    return FALSE;
+  }
+no_packetsize:
+  {
+    GST_WARNING_OBJECT (depay, "caps without 'maxps' (packet size) field");
+    return FALSE;
+  }
+invalid_packetsize:
+  {
+    GST_WARNING_OBJECT (depay, "packet size %u invalid", depay->packet_size);
+    return FALSE;
+  }
+invalid_headers:
+  {
+    GST_WARNING_OBJECT (depay, "headers don't look like valid ASF headers");
+    g_free (headers);
+    return FALSE;
+  }
+duplicate_header:
+  {
+    GST_DEBUG_OBJECT (depayload, "discarding duplicate header");
+    return TRUE;
+  }
+refuse_renegotiation:
+  {
+    GST_WARNING_OBJECT (depayload, "cannot renegotiate to different header");
+    return FALSE;
+  }
+}
+
+static gint
+field_size (guint8 field)
+{
+  switch (field) {
+      /* DWORD - 32 bits */
+    case 3:
+      return 4;
+
+      /* WORD - 16 bits */
+    case 2:
+      return 2;
+
+      /* BYTE - 8 bits */
+    case 1:
+      return 1;
+
+      /* non-exitent */
+    case 0:
+    default:
+      return 0;
+  }
+}
+
+/* 
+ * Set the padding field to te correct value as the spec
+ * says it should be se to 0 in the rtp packets
+ */
+static void
+gst_rtp_asf_depay_set_padding (GstRtpAsfDepay * depayload,
+    GstBuffer * buf, guint32 padding)
+{
+  guint8 *data = GST_BUFFER_DATA (buf);
+  gint offset = 0;
+  guint8 aux;
+  guint8 seq_type;
+  guint8 pad_type;
+  guint8 pkt_type;
+
+  aux = data[offset++];
+  if (aux & 0x80) {
+    guint8 err_len = 0;
+    if (aux & 0x60) {
+      GST_WARNING_OBJECT (depayload, "Error correction length type should be "
+          "set to 0");
+      /* this packet doesn't follow the spec */
+      return;
+    }
+    err_len = aux & 0x0F;
+    offset += err_len;
+
+    aux = data[offset++];
+  }
+  seq_type = (aux >> 1) & 0x3;
+  pad_type = (aux >> 3) & 0x3;
+  pkt_type = (aux >> 5) & 0x3;
+
+  offset += 1;                  /* skip property flags */
+  offset += field_size (pkt_type);      /* skip packet length */
+  offset += field_size (seq_type);      /* skip sequence field */
+
+  /* write padding */
+  switch (pad_type) {
+      /* DWORD */
+    case 3:
+      GST_WRITE_UINT32_LE (&(data[offset]), padding);
+      break;
+
+      /* WORD */
+    case 2:
+      GST_WRITE_UINT16_LE (&(data[offset]), padding);
+      break;
+
+      /* BYTE */
+    case 1:
+      data[offset] = (guint8) padding;
+      break;
+
+      /* non-existent */
+    case 0:
+    default:
+      break;
+  }
+}
+
+/* Docs: 'RTSP Protocol PDF' document from http://sdp.ppona.com/ (page 8) */
+
+static GstBuffer *
+gst_rtp_asf_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf)
+{
+  GstRtpAsfDepay *depay;
+  const guint8 *payload;
+  GstBuffer *outbuf;
+  gboolean S, L, R, D, I;
+  guint payload_len, hdr_len, offset;
+  guint len_offs;
+  GstClockTime timestamp;
+
+  depay = GST_RTP_ASF_DEPAY (depayload);
+
+  /* flush remaining data on discont */
+  if (GST_BUFFER_IS_DISCONT (buf)) {
+    GST_LOG_OBJECT (depay, "got DISCONT");
+    gst_adapter_clear (depay->adapter);
+    depay->discont = TRUE;
+  }
+
+  timestamp = GST_BUFFER_TIMESTAMP (buf);
+
+  payload_len = gst_rtp_buffer_get_payload_len (buf);
+  payload = gst_rtp_buffer_get_payload (buf);
+  offset = 0;
+
+  GST_LOG_OBJECT (depay, "got payload len of %u", payload_len);
+
+  do {
+    guint packet_len;
+
+    /* packet header is at least 4 bytes */
+    if (payload_len < 4)
+      goto too_small;
+
+    /*                      1                   2                   3
+     *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * |S|L|R|D|I|RES  | Length/Offset                                 |
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * | Relative Timestamp (optional)                                 |
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * | Duration (optional)                                           |
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     * | LocationId (optional)                                         |
+     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+     *
+     * S: packet contains a keyframe.
+     * L: If 1, Length/Offset contains length, else contains the byte offset
+     *    of the fragment's first byte counted from the beginning of the
+     *    complete ASF data packet.
+     * R: relative timestamp present
+     * D: duration present
+     * I: locationid present
+     */
+
+    S = ((payload[0] & 0x80) != 0);
+    L = ((payload[0] & 0x40) != 0);
+    R = ((payload[0] & 0x20) != 0);
+    D = ((payload[0] & 0x10) != 0);
+    I = ((payload[0] & 0x08) != 0);
+
+    hdr_len = 4;
+
+    len_offs = (payload[1] << 16) | (payload[2] << 8) | payload[3];
+
+    if (R) {
+      GST_DEBUG ("Relative timestamp field present : %u",
+          GST_READ_UINT32_BE (payload + hdr_len));
+      hdr_len += 4;
+    }
+    if (D) {
+      GST_DEBUG ("Duration field present : %u",
+          GST_READ_UINT32_BE (payload + hdr_len));
+      hdr_len += 4;
+    }
+    if (I) {
+      GST_DEBUG ("LocationId field present : %u",
+          GST_READ_UINT32_BE (payload + hdr_len));
+      hdr_len += 4;
+    }
+
+    GST_LOG_OBJECT (depay, "S %d, L %d, R %d, D %d, I %d", S, L, R, D, I);
+    GST_LOG_OBJECT (depay, "payload_len:%d, hdr_len:%d, len_offs:%d",
+        payload_len, hdr_len, len_offs);
+
+    if (payload_len < hdr_len)
+      goto too_small;
+
+    /* skip headers */
+    payload_len -= hdr_len;
+    payload += hdr_len;
+    offset += hdr_len;
+
+    if (L) {
+      /* L bit set, len contains the length of the packet */
+      packet_len = len_offs;
+    } else {
+      /* else it contains an offset which we don't handle yet */
+      GST_LOG_OBJECT (depay, "We have a fragmented packet");
+      packet_len = payload_len;
+    }
+
+    if (packet_len > payload_len)
+      packet_len = payload_len;
+
+    GST_LOG_OBJECT (depay, "packet len %u, payload len %u, packet_size:%u",
+        packet_len, payload_len, depay->packet_size);
+
+    if (!L) {
+      guint available;
+      GstBuffer *sub;
+
+      /* Fragmented packet handling */
+      outbuf = NULL;
+
+      if (len_offs == (available = gst_adapter_available (depay->adapter))) {
+        /* fragment aligns with what we have, add it */
+        GST_LOG_OBJECT (depay, "collecting fragment");
+        sub = gst_rtp_buffer_get_payload_subbuffer (buf, offset, packet_len);
+        gst_adapter_push (depay->adapter, sub);
+        /* RTP marker bit M is set if this is last fragment */
+        if (gst_rtp_buffer_get_marker (buf)) {
+          GST_LOG_OBJECT (depay, "last fragment, assembling packet");
+          outbuf =
+              gst_adapter_take_buffer (depay->adapter, available + packet_len);
+        }
+      } else {
+        if (available) {
+          GST_WARNING_OBJECT (depay, "Offset doesn't match previous data?!");
+          GST_DEBUG_OBJECT (depay, "clearing for re-sync");
+          gst_adapter_clear (depay->adapter);
+        } else
+          GST_DEBUG_OBJECT (depay, "waiting for start of packet");
+      }
+    } else {
+      GST_LOG_OBJECT (depay, "collecting packet");
+      outbuf = gst_rtp_buffer_get_payload_subbuffer (buf, offset, packet_len);
+    }
+
+    /* If we haven't completed a full ASF packet, return */
+    if (!outbuf)
+      return NULL;
+
+    /* we need to pad with zeroes to packet_size if it's smaller */
+    if (GST_BUFFER_SIZE (outbuf) < depay->packet_size) {
+      GstBuffer *tmp;
+      gint plen = GST_BUFFER_SIZE (outbuf);
+
+      GST_LOG_OBJECT (depay, "padding buffer size %d to packet size %d",
+          plen, depay->packet_size);
+      tmp = gst_buffer_new_and_alloc (depay->packet_size);
+      memcpy (GST_BUFFER_DATA (tmp), GST_BUFFER_DATA (outbuf), plen);
+      gst_buffer_copy_metadata (tmp, outbuf, GST_BUFFER_COPY_ALL);
+      gst_buffer_unref (outbuf);
+      outbuf = tmp;
+      memset (GST_BUFFER_DATA (outbuf) + plen, 0, depay->packet_size - plen);
+      gst_rtp_asf_depay_set_padding (depay, outbuf, depay->packet_size - plen);
+    }
+
+    gst_buffer_set_caps (outbuf, GST_PAD_CAPS (depayload->srcpad));
+
+    if (!S)
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
+
+    if (depay->discont) {
+      GST_LOG_OBJECT (depay, "setting DISCONT");
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      depay->discont = FALSE;
+    }
+
+    GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
+
+    gst_base_rtp_depayload_push (depayload, outbuf);
+
+    /* only apply the timestamp to the first buffer of this packet */
+    timestamp = -1;
+
+    /* skip packet data */
+    payload += packet_len;
+    offset += packet_len;
+    payload_len -= packet_len;
+  } while (payload_len > 0);
+
+  return NULL;
+
+/* ERRORS */
+too_small:
+  {
+    GST_WARNING_OBJECT (depayload, "Payload too small, expected at least 4 "
+        "bytes for header, but got only %d bytes", payload_len);
+    return NULL;
+  }
+}
+
+static GstStateChangeReturn
+gst_rtp_asf_depay_change_state (GstElement * element, GstStateChange trans)
+{
+  GstStateChangeReturn ret;
+  GstRtpAsfDepay *depay;
+
+  depay = GST_RTP_ASF_DEPAY (element);
+
+  switch (trans) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      gst_adapter_clear (depay->adapter);
+      depay->discont = TRUE;
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, trans);
+
+  switch (trans) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_adapter_clear (depay->adapter);
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
diff --git a/gst/asfdemux/gstrtpasfdepay.h b/gst/asfdemux/gstrtpasfdepay.h
new file mode 100644 (file)
index 0000000..724c95b
--- /dev/null
@@ -0,0 +1,64 @@
+/* GStreamer RTP ASF depayloader
+ * Copyright (C) 2006 Tim-Philipp Müller  <tim centricular net>
+ *               2009 Wim Taymans  <wim.taymans@gmail.com>
+ *
+ * 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_ASF_DEPAY_H__
+#define __GST_RTP_ASF_DEPAY_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+#include <gst/rtp/gstbasertpdepayload.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RTP_ASF_DEPAY \
+  (gst_rtp_asf_depay_get_type())
+#define GST_RTP_ASF_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_ASF_DEPAY,GstRtpAsfDepay))
+#define GST_RTP_ASF_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_ASF_DEPAY,GstRtpAsfDepayClass))
+#define GST_IS_RTP_ASF_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_ASF_DEPAY))
+#define GST_IS_RTP_ASF_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_ASF_DEPAY))
+
+typedef struct _GstRtpAsfDepay      GstRtpAsfDepay;
+typedef struct _GstRtpAsfDepayClass GstRtpAsfDepayClass;
+
+struct _GstRtpAsfDepay
+{
+  GstBaseRTPDepayload depayload;
+
+  guint packet_size;
+
+  GstAdapter *adapter;
+  gboolean    discont;
+};
+
+struct _GstRtpAsfDepayClass
+{
+  GstBaseRTPDepayloadClass depayload_class;
+};
+
+GType    gst_rtp_asf_depay_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_RTP_ASF_DEPAY_H__ */
diff --git a/gst/asfdemux/gstrtspwms.c b/gst/asfdemux/gstrtspwms.c
new file mode 100644 (file)
index 0000000..9ece635
--- /dev/null
@@ -0,0 +1,254 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+/* Element-Checklist-Version: 5 */
+
+/**
+ * SECTION:element-rtspwms
+ *
+ * A WMS RTSP extension
+ *
+ * Last reviewed on 2007-07-25 (0.10.14)
+ */
+
+#include <string.h>
+
+#include <gst/rtsp/gstrtspextension.h>
+
+#include "gstrtspwms.h"
+
+GST_DEBUG_CATEGORY_STATIC (rtspwms_debug);
+#define GST_CAT_DEFAULT (rtspwms_debug)
+
+#define SERVER_PREFIX "WMServer/"
+#define HEADER_PREFIX "data:application/vnd.ms.wms-hdr.asfv1;base64,"
+#define EXTENSION_CMD "application/x-wms-extension-cmd"
+
+static GstRTSPResult
+gst_rtsp_wms_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
+{
+  GstRTSPWMS *ctx = (GstRTSPWMS *) ext;
+
+  GST_DEBUG_OBJECT (ext, "before send");
+
+  switch (request->type_data.request.method) {
+    case GST_RTSP_OPTIONS:
+    {
+      /* activate ourselves with the first request */
+      ctx->active = TRUE;
+      break;
+    }
+    default:
+      break;
+  }
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+gst_rtsp_wms_after_send (GstRTSPExtension * ext, GstRTSPMessage * req,
+    GstRTSPMessage * resp)
+{
+  GstRTSPWMS *ctx = (GstRTSPWMS *) ext;
+
+  GST_DEBUG_OBJECT (ext, "after send");
+
+  switch (req->type_data.request.method) {
+    case GST_RTSP_OPTIONS:
+    {
+      gchar *server = NULL;
+
+      gst_rtsp_message_get_header (resp, GST_RTSP_HDR_SERVER, &server, 0);
+      if (server && g_str_has_prefix (server, SERVER_PREFIX))
+        ctx->active = TRUE;
+      else
+        ctx->active = FALSE;
+      break;
+    }
+    default:
+      break;
+  }
+  return GST_RTSP_OK;
+}
+
+
+static GstRTSPResult
+gst_rtsp_wms_parse_sdp (GstRTSPExtension * ext, GstSDPMessage * sdp,
+    GstStructure * props)
+{
+  const gchar *config, *maxps;
+  gint i;
+  GstRTSPWMS *ctx = (GstRTSPWMS *) ext;
+
+  if (!ctx->active)
+    return GST_RTSP_OK;
+
+  for (i = 0; (config = gst_sdp_message_get_attribute_val_n (sdp, "pgmpu", i));
+      i++) {
+    if (g_str_has_prefix (config, HEADER_PREFIX)) {
+      config += strlen (HEADER_PREFIX);
+      gst_structure_set (props, "config", G_TYPE_STRING, config, NULL);
+      break;
+    }
+  }
+  if (config == NULL)
+    goto no_config;
+
+  gst_structure_set (props, "config", G_TYPE_STRING, config, NULL);
+
+  maxps = gst_sdp_message_get_attribute_val (sdp, "maxps");
+  if (maxps)
+    gst_structure_set (props, "maxps", G_TYPE_STRING, maxps, NULL);
+
+  gst_structure_set (props, "encoding-name", G_TYPE_STRING, "X-ASF-PF", NULL);
+  gst_structure_set (props, "media", G_TYPE_STRING, "application", NULL);
+
+  return GST_RTSP_OK;
+
+  /* ERRORS */
+no_config:
+  {
+    GST_DEBUG_OBJECT (ctx, "Could not find config SDP field, deactivating.");
+    ctx->active = FALSE;
+    return GST_RTSP_OK;
+  }
+}
+
+static gboolean
+gst_rtsp_wms_configure_stream (GstRTSPExtension * ext, GstCaps * caps)
+{
+  GstRTSPWMS *ctx;
+  GstStructure *s;
+  const gchar *encoding;
+
+  ctx = (GstRTSPWMS *) ext;
+  s = gst_caps_get_structure (caps, 0);
+  encoding = gst_structure_get_string (s, "encoding-name");
+
+  if (!encoding)
+    return TRUE;
+
+  GST_DEBUG_OBJECT (ctx, "%" GST_PTR_FORMAT " encoding-name: %s", caps,
+      encoding);
+
+  /* rtx streams do not need to be configured */
+  if (!strcmp (encoding, "X-WMS-RTX"))
+    return FALSE;
+
+  return TRUE;
+}
+
+static GstRTSPResult
+gst_rtsp_wms_receive_request (GstRTSPExtension * ext, GstRTSPMessage * request)
+{
+  GstRTSPWMS *ctx;
+  GstRTSPResult res = GST_RTSP_ENOTIMPL;
+  GstRTSPMessage response = { 0 };
+
+  ctx = (GstRTSPWMS *) ext;
+
+  GST_DEBUG_OBJECT (ext, "before send");
+
+  switch (request->type_data.request.method) {
+    case GST_RTSP_SET_PARAMETER:
+    {
+      gchar *content_type = NULL;
+
+      gst_rtsp_message_get_header (request, GST_RTSP_HDR_CONTENT_TYPE,
+          &content_type, 0);
+
+      if (content_type && !g_ascii_strcasecmp (content_type, EXTENSION_CMD)) {
+        /* parse the command */
+
+        /* default implementation, send OK */
+        res = gst_rtsp_message_init_response (&response, GST_RTSP_STS_OK, "OK",
+            request);
+        if (res < 0)
+          goto send_error;
+
+        GST_DEBUG_OBJECT (ctx, "replying with OK");
+
+        /* send reply */
+        if ((res = gst_rtsp_extension_send (ext, request, &response)) < 0)
+          goto send_error;
+
+        res = GST_RTSP_EEOF;
+      }
+      break;
+    }
+    default:
+      break;
+  }
+  return res;
+
+send_error:
+  {
+    return res;
+  }
+}
+
+static void gst_rtsp_wms_extension_init (gpointer g_iface, gpointer iface_data);
+
+static void
+_do_init (GType rtspwms_type)
+{
+  static const GInterfaceInfo rtspextension_info = {
+    gst_rtsp_wms_extension_init,
+    NULL,
+    NULL
+  };
+
+  g_type_add_interface_static (rtspwms_type, GST_TYPE_RTSP_EXTENSION,
+      &rtspextension_info);
+}
+
+GST_BOILERPLATE_FULL (GstRTSPWMS, gst_rtsp_wms, GstElement, GST_TYPE_ELEMENT,
+    _do_init);
+
+static void
+gst_rtsp_wms_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_set_details_simple (element_class, "WMS RTSP Extension",
+      "Network/Extension/Protocol",
+      "Extends RTSP so that it can handle WMS setup",
+      "Wim Taymans <wim.taymans@gmail.com>");
+}
+
+static void
+gst_rtsp_wms_class_init (GstRTSPWMSClass * g_class)
+{
+  GST_DEBUG_CATEGORY_INIT (rtspwms_debug, "rtspwms", 0, "WMS RTSP extension");
+}
+
+static void
+gst_rtsp_wms_init (GstRTSPWMS * rtspwms, GstRTSPWMSClass * klass)
+{
+}
+
+static void
+gst_rtsp_wms_extension_init (gpointer g_iface, gpointer iface_data)
+{
+  GstRTSPExtensionInterface *iface = (GstRTSPExtensionInterface *) g_iface;
+
+  iface->parse_sdp = gst_rtsp_wms_parse_sdp;
+  iface->before_send = gst_rtsp_wms_before_send;
+  iface->after_send = gst_rtsp_wms_after_send;
+  iface->configure_stream = gst_rtsp_wms_configure_stream;
+  iface->receive_request = gst_rtsp_wms_receive_request;
+}
diff --git a/gst/asfdemux/gstrtspwms.h b/gst/asfdemux/gstrtspwms.h
new file mode 100644 (file)
index 0000000..8eebbfc
--- /dev/null
@@ -0,0 +1,50 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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_RTSP_WMS_H__
+#define __GST_RTSP_WMS_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RTSP_WMS              (gst_rtsp_wms_get_type())
+#define GST_IS_RTSP_WMS(obj)           (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTSP_WMS))
+#define GST_IS_RTSP_WMS_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTSP_WMS))
+#define GST_RTSP_WMS(obj)              (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTSP_WMS, GstRTSPWMS))
+#define GST_RTSP_WMS_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTSP_WMS, GstRTSPWMSClass))
+
+typedef struct _GstRTSPWMS GstRTSPWMS;
+typedef struct _GstRTSPWMSClass GstRTSPWMSClass;
+
+struct _GstRTSPWMS {
+  GstElement  element;
+
+  gboolean active;
+};
+
+struct _GstRTSPWMSClass {
+  GstElementClass parent_class;
+};
+
+GType gst_rtsp_wms_get_type(void);
+
+G_END_DECLS
+
+#endif /* __GST_RTSP_WMS_H__ */
diff --git a/gst/dvdlpcmdec/Makefile.am b/gst/dvdlpcmdec/Makefile.am
new file mode 100644 (file)
index 0000000..1e4367b
--- /dev/null
@@ -0,0 +1,24 @@
+
+plugin_LTLIBRARIES = libgstdvdlpcmdec.la
+
+libgstdvdlpcmdec_la_SOURCES = gstdvdlpcmdec.c
+libgstdvdlpcmdec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+libgstdvdlpcmdec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@ $(GST_LIBS)
+libgstdvdlpcmdec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdlpcmdec_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstdvdlpcmdec.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstdvdlpcmdec -:SHARED libgstdvdlpcmdec \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstdvdlpcmdec_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdvdlpcmdec_la_CFLAGS) \
+        -:LDFLAGS $(libgstdvdlpcmdec_la_LDFLAGS) \
+                  $(libgstdvdlpcmdec_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/dvdlpcmdec/Makefile.in b/gst/dvdlpcmdec/Makefile.in
new file mode 100644 (file)
index 0000000..53ef521
--- /dev/null
@@ -0,0 +1,735 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/dvdlpcmdec
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstdvdlpcmdec_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstdvdlpcmdec_la_OBJECTS = libgstdvdlpcmdec_la-gstdvdlpcmdec.lo
+libgstdvdlpcmdec_la_OBJECTS = $(am_libgstdvdlpcmdec_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstdvdlpcmdec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstdvdlpcmdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(libgstdvdlpcmdec_la_CFLAGS) $(CFLAGS) \
+       $(libgstdvdlpcmdec_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstdvdlpcmdec_la_SOURCES)
+DIST_SOURCES = $(libgstdvdlpcmdec_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstdvdlpcmdec.la
+libgstdvdlpcmdec_la_SOURCES = gstdvdlpcmdec.c
+libgstdvdlpcmdec_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
+libgstdvdlpcmdec_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@ $(GST_LIBS)
+libgstdvdlpcmdec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdlpcmdec_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstdvdlpcmdec.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/dvdlpcmdec/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/dvdlpcmdec/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
+libgstdvdlpcmdec.la: $(libgstdvdlpcmdec_la_OBJECTS) $(libgstdvdlpcmdec_la_DEPENDENCIES) $(EXTRA_libgstdvdlpcmdec_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstdvdlpcmdec_la_LINK) -rpath $(plugindir) $(libgstdvdlpcmdec_la_OBJECTS) $(libgstdvdlpcmdec_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdvdlpcmdec_la-gstdvdlpcmdec.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstdvdlpcmdec_la-gstdvdlpcmdec.lo: gstdvdlpcmdec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdlpcmdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdlpcmdec_la_CFLAGS) $(CFLAGS) -MT libgstdvdlpcmdec_la-gstdvdlpcmdec.lo -MD -MP -MF $(DEPDIR)/libgstdvdlpcmdec_la-gstdvdlpcmdec.Tpo -c -o libgstdvdlpcmdec_la-gstdvdlpcmdec.lo `test -f 'gstdvdlpcmdec.c' || echo '$(srcdir)/'`gstdvdlpcmdec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdvdlpcmdec_la-gstdvdlpcmdec.Tpo $(DEPDIR)/libgstdvdlpcmdec_la-gstdvdlpcmdec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstdvdlpcmdec.c' object='libgstdvdlpcmdec_la-gstdvdlpcmdec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdlpcmdec_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdlpcmdec_la_CFLAGS) $(CFLAGS) -c -o libgstdvdlpcmdec_la-gstdvdlpcmdec.lo `test -f 'gstdvdlpcmdec.c' || echo '$(srcdir)/'`gstdvdlpcmdec.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstdvdlpcmdec -:SHARED libgstdvdlpcmdec \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstdvdlpcmdec_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdvdlpcmdec_la_CFLAGS) \
+        -:LDFLAGS $(libgstdvdlpcmdec_la_LDFLAGS) \
+                  $(libgstdvdlpcmdec_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/dvdlpcmdec/gstdvdlpcmdec.c b/gst/dvdlpcmdec/gstdvdlpcmdec.c
new file mode 100644 (file)
index 0000000..1ecb4b3
--- /dev/null
@@ -0,0 +1,831 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2005> Jan Schmidt <jan@noraisin.net>
+ *
+ * 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.
+ */
+/* Element-Checklist-Version: TODO */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <stdlib.h>
+#include <string.h>
+
+#include "gstdvdlpcmdec.h"
+#include <gst/audio/multichannel.h>
+
+GST_DEBUG_CATEGORY_STATIC (dvdlpcm_debug);
+#define GST_CAT_DEFAULT dvdlpcm_debug
+
+static GstStaticPadTemplate gst_dvdlpcmdec_sink_template =
+    GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-private1-lpcm; "
+        "audio/x-lpcm, "
+        "width = (int) { 16, 20, 24 }, "
+        "rate = (int) { 32000, 44100, 48000, 96000 }, "
+        "channels = (int) [ 1, 8 ], "
+        "dynamic_range = (int) [ 0, 255 ], "
+        "emphasis = (boolean) { TRUE, FALSE }, "
+        "mute = (boolean) { TRUE, FALSE } ")
+    );
+
+static GstStaticPadTemplate gst_dvdlpcmdec_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw-int, "
+        "width = (int) { 16, 24 }, "
+        "rate = (int) { 32000, 44100, 48000, 96000 }, "
+        "channels = (int) [ 1, 8 ], "
+        "endianness = (int) { BIG_ENDIAN }, "
+        "depth = (int) { 16, 24 }, " "signed = (boolean) { true }")
+    );
+
+/* DvdLpcmDec signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0
+      /* FILL ME */
+};
+
+static void gst_dvdlpcmdec_base_init (gpointer g_class);
+static void gst_dvdlpcmdec_class_init (GstDvdLpcmDecClass * klass);
+static void gst_dvdlpcmdec_init (GstDvdLpcmDec * dvdlpcmdec);
+
+static GstFlowReturn gst_dvdlpcmdec_chain_raw (GstPad * pad,
+    GstBuffer * buffer);
+static GstFlowReturn gst_dvdlpcmdec_chain_dvd (GstPad * pad,
+    GstBuffer * buffer);
+static gboolean gst_dvdlpcmdec_setcaps (GstPad * pad, GstCaps * caps);
+static gboolean dvdlpcmdec_sink_event (GstPad * pad, GstEvent * event);
+
+static GstStateChangeReturn gst_dvdlpcmdec_change_state (GstElement * element,
+    GstStateChange transition);
+
+static GstElementClass *parent_class = NULL;
+
+GType
+gst_dvdlpcmdec_get_type (void)
+{
+  static GType dvdlpcmdec_type = 0;
+
+  if (!dvdlpcmdec_type) {
+    static const GTypeInfo dvdlpcmdec_info = {
+      sizeof (GstDvdLpcmDecClass),
+      gst_dvdlpcmdec_base_init,
+      NULL,
+      (GClassInitFunc) gst_dvdlpcmdec_class_init,
+      NULL,
+      NULL,
+      sizeof (GstDvdLpcmDec),
+      0,
+      (GInstanceInitFunc) gst_dvdlpcmdec_init,
+    };
+
+    dvdlpcmdec_type =
+        g_type_register_static (GST_TYPE_ELEMENT, "GstDvdLpcmDec",
+        &dvdlpcmdec_info, 0);
+  }
+  return dvdlpcmdec_type;
+}
+
+static void
+gst_dvdlpcmdec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_dvdlpcmdec_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_dvdlpcmdec_src_template);
+  gst_element_class_set_details_simple (element_class, "DVD LPCM Audio decoder",
+      "Codec/Decoder/Audio",
+      "Decode DVD LPCM frames into standard PCM audio",
+      "Jan Schmidt <jan@noraisin.net>, Michael Smith <msmith@fluendo.com>");
+}
+
+static void
+gst_dvdlpcmdec_class_init (GstDvdLpcmDecClass * klass)
+{
+  GstElementClass *gstelement_class;
+
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gstelement_class->change_state = gst_dvdlpcmdec_change_state;
+}
+
+static void
+gst_dvdlpcm_reset (GstDvdLpcmDec * dvdlpcmdec)
+{
+  dvdlpcmdec->rate = 0;
+  dvdlpcmdec->channels = 0;
+  dvdlpcmdec->width = 0;
+  dvdlpcmdec->out_width = 0;
+  dvdlpcmdec->dynamic_range = 0;
+  dvdlpcmdec->emphasis = FALSE;
+  dvdlpcmdec->mute = FALSE;
+  dvdlpcmdec->timestamp = GST_CLOCK_TIME_NONE;
+
+  dvdlpcmdec->header = 0;
+
+  gst_segment_init (&dvdlpcmdec->segment, GST_FORMAT_UNDEFINED);
+}
+
+static void
+gst_dvdlpcmdec_init (GstDvdLpcmDec * dvdlpcmdec)
+{
+  dvdlpcmdec->sinkpad =
+      gst_pad_new_from_static_template (&gst_dvdlpcmdec_sink_template, "sink");
+  gst_pad_set_setcaps_function (dvdlpcmdec->sinkpad, gst_dvdlpcmdec_setcaps);
+  gst_pad_set_event_function (dvdlpcmdec->sinkpad, dvdlpcmdec_sink_event);
+  gst_element_add_pad (GST_ELEMENT (dvdlpcmdec), dvdlpcmdec->sinkpad);
+
+  dvdlpcmdec->srcpad =
+      gst_pad_new_from_static_template (&gst_dvdlpcmdec_src_template, "src");
+  gst_pad_use_fixed_caps (dvdlpcmdec->srcpad);
+  gst_element_add_pad (GST_ELEMENT (dvdlpcmdec), dvdlpcmdec->srcpad);
+
+  gst_dvdlpcm_reset (dvdlpcmdec);
+}
+
+static GstAudioChannelPosition *
+get_audio_channel_positions (GstDvdLpcmDec * dvdlpcmdec)
+{
+  gint n_channels = dvdlpcmdec->channels;
+  GstAudioChannelPosition *ret = g_new (GstAudioChannelPosition, n_channels);
+
+  /* FIXME: The channel layouts for 5.1 and 7.1 are just guesses, I can't
+   * find any samples or confirmation */
+  switch (n_channels) {
+    case 8:
+      ret[7] = GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
+      ret[6] = GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
+      /* Fall through */
+    case 6:
+      ret[5] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+      ret[4] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+      ret[3] = GST_AUDIO_CHANNEL_POSITION_LFE;
+      ret[2] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+      /* Fall through */
+    case 2:
+      ret[1] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+      ret[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+      break;
+    case 4:
+      ret[3] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+      ret[2] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+      ret[1] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+      ret[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+      break;
+    case 1:
+      ret[0] = GST_AUDIO_CHANNEL_POSITION_FRONT_MONO;
+      break;
+    default:
+      g_free (ret);
+      ret = NULL;
+      break;
+  }
+
+  return ret;
+}
+
+static void
+gst_dvdlpcmdec_send_tags (GstDvdLpcmDec * dvdlpcmdec)
+{
+  GstTagList *taglist;
+  guint bitrate = dvdlpcmdec->channels * dvdlpcmdec->out_width *
+      dvdlpcmdec->rate;
+
+  taglist = gst_tag_list_new ();
+
+  gst_tag_list_add (taglist, GST_TAG_MERGE_APPEND,
+      GST_TAG_AUDIO_CODEC, "LPCM Audio", GST_TAG_BITRATE, bitrate, NULL);
+
+  gst_element_found_tags_for_pad (GST_ELEMENT (dvdlpcmdec), dvdlpcmdec->srcpad,
+      taglist);
+}
+
+static gboolean
+gst_dvdlpcmdec_set_outcaps (GstDvdLpcmDec * dvdlpcmdec)
+{
+  gboolean res = TRUE;
+  GstCaps *src_caps;
+  GstAudioChannelPosition *pos;
+
+  /* Build caps to set on the src pad, which we know from the incoming caps */
+  src_caps = gst_caps_new_simple ("audio/x-raw-int",
+      "rate", G_TYPE_INT, dvdlpcmdec->rate,
+      "channels", G_TYPE_INT, dvdlpcmdec->channels,
+      "endianness", G_TYPE_INT, G_BIG_ENDIAN,
+      "depth", G_TYPE_INT, dvdlpcmdec->out_width,
+      "width", G_TYPE_INT, dvdlpcmdec->out_width,
+      "signed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+  pos = get_audio_channel_positions (dvdlpcmdec);
+  if (pos) {
+    gst_audio_set_channel_positions (gst_caps_get_structure (src_caps, 0), pos);
+    g_free (pos);
+  }
+
+  GST_DEBUG_OBJECT (dvdlpcmdec, "Set rate %d, channels %d, width %d (out %d)",
+      dvdlpcmdec->rate, dvdlpcmdec->channels, dvdlpcmdec->width,
+      dvdlpcmdec->out_width);
+
+  res = gst_pad_set_caps (dvdlpcmdec->srcpad, src_caps);
+  if (res) {
+    GST_DEBUG_OBJECT (dvdlpcmdec, "Successfully set output caps: %"
+        GST_PTR_FORMAT, src_caps);
+
+    gst_dvdlpcmdec_send_tags (dvdlpcmdec);
+  } else {
+    GST_DEBUG_OBJECT (dvdlpcmdec, "Failed to set output caps: %"
+        GST_PTR_FORMAT, src_caps);
+  }
+
+  gst_caps_unref (src_caps);
+
+  return res;
+}
+
+static gboolean
+gst_dvdlpcmdec_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstStructure *structure;
+  gboolean res = TRUE;
+  GstDvdLpcmDec *dvdlpcmdec;
+
+  g_return_val_if_fail (caps != NULL, FALSE);
+  g_return_val_if_fail (pad != NULL, FALSE);
+
+  dvdlpcmdec = GST_DVDLPCMDEC (gst_pad_get_parent (pad));
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  /* If we have the DVD structured LPCM (including header) then we wait
+   * for incoming data before creating the output pad caps */
+  if (gst_structure_has_name (structure, "audio/x-private1-lpcm")) {
+    gst_pad_set_chain_function (dvdlpcmdec->sinkpad, gst_dvdlpcmdec_chain_dvd);
+    goto done;
+  }
+
+  gst_pad_set_chain_function (dvdlpcmdec->sinkpad, gst_dvdlpcmdec_chain_raw);
+
+  res &= gst_structure_get_int (structure, "rate", &dvdlpcmdec->rate);
+  res &= gst_structure_get_int (structure, "channels", &dvdlpcmdec->channels);
+  res &= gst_structure_get_int (structure, "width", &dvdlpcmdec->width);
+  res &= gst_structure_get_int (structure, "dynamic_range",
+      &dvdlpcmdec->dynamic_range);
+  res &= gst_structure_get_boolean (structure, "emphasis",
+      &dvdlpcmdec->emphasis);
+  res &= gst_structure_get_boolean (structure, "mute", &dvdlpcmdec->mute);
+
+  if (!res)
+    goto caps_parse_error;
+
+  /* Output width is the input width rounded up to the nearest byte */
+  if (dvdlpcmdec->width == 20)
+    dvdlpcmdec->out_width = 24;
+  else
+    dvdlpcmdec->out_width = dvdlpcmdec->width;
+
+  res = gst_dvdlpcmdec_set_outcaps (dvdlpcmdec);
+
+done:
+  gst_object_unref (dvdlpcmdec);
+  return res;
+
+  /* ERRORS */
+caps_parse_error:
+  {
+    GST_DEBUG_OBJECT (dvdlpcmdec, "Couldn't get parameters; missing caps?");
+    gst_object_unref (dvdlpcmdec);
+    return FALSE;
+  }
+}
+
+static void
+update_timestamps (GstDvdLpcmDec * dvdlpcmdec, GstBuffer * buf, int samples)
+{
+  gboolean take_buf_ts = FALSE;
+
+  GST_BUFFER_DURATION (buf) =
+      gst_util_uint64_scale (samples, GST_SECOND, dvdlpcmdec->rate);
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    if (GST_CLOCK_TIME_IS_VALID (dvdlpcmdec->timestamp)) {
+      GstClockTimeDiff one_sample = GST_SECOND / dvdlpcmdec->rate;
+      GstClockTimeDiff diff = GST_CLOCK_DIFF (GST_BUFFER_TIMESTAMP (buf),
+          dvdlpcmdec->timestamp);
+
+      if (diff > one_sample || diff < -one_sample)
+        take_buf_ts = TRUE;
+    } else {
+      take_buf_ts = TRUE;
+    }
+  } else if (!GST_CLOCK_TIME_IS_VALID (dvdlpcmdec->timestamp)) {
+    dvdlpcmdec->timestamp = 0;
+  }
+
+  if (take_buf_ts) {
+    /* Take buffer timestamp */
+    dvdlpcmdec->timestamp = GST_BUFFER_TIMESTAMP (buf);
+  } else {
+    GST_BUFFER_TIMESTAMP (buf) = dvdlpcmdec->timestamp;
+  }
+
+  dvdlpcmdec->timestamp += GST_BUFFER_DURATION (buf);
+
+  GST_LOG_OBJECT (dvdlpcmdec, "Updated timestamp to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+}
+
+static void
+parse_header (GstDvdLpcmDec * dec, guint32 header)
+{
+  /* We don't actually use 'dynamic range', 'mute', or 'emphasis' currently,
+   * but parse them out */
+  dec->dynamic_range = header & 0xff;
+
+  dec->mute = (header & 0x400000) != 0;
+  dec->emphasis = (header & 0x800000) != 0;
+
+  /* These two bits tell us the bit depth */
+  switch (header & 0xC000) {
+    case 0x8000:
+      dec->width = 24;
+      dec->out_width = 24;
+      break;
+    case 0x4000:
+      dec->width = 20;
+      dec->out_width = 24;
+      break;
+    default:
+      dec->width = 16;
+      dec->out_width = 16;
+      break;
+  }
+
+  /* Only four sample rates supported */
+  switch (header & 0x3000) {
+    case 0x0000:
+      dec->rate = 48000;
+      break;
+    case 0x1000:
+      dec->rate = 96000;
+      break;
+    case 0x2000:
+      dec->rate = 44100;
+      break;
+    case 0x3000:
+      dec->rate = 32000;
+      break;
+  }
+
+  /* And, of course, the number of channels (up to 8) */
+  dec->channels = ((header >> 8) & 0x7) + 1;
+}
+
+static GstFlowReturn
+gst_dvdlpcmdec_chain_dvd (GstPad * pad, GstBuffer * buf)
+{
+  GstDvdLpcmDec *dvdlpcmdec;
+  guint8 *data;
+  guint size;
+  guint first_access;
+  guint32 header;
+  GstBuffer *subbuf;
+  GstFlowReturn ret = GST_FLOW_OK;
+  gint off, len;
+
+  dvdlpcmdec = GST_DVDLPCMDEC (gst_pad_get_parent (pad));
+
+  size = GST_BUFFER_SIZE (buf);
+  data = GST_BUFFER_DATA (buf);
+
+  if (size < 5) {
+    /* Buffer is too small */
+    GST_ELEMENT_WARNING (dvdlpcmdec, STREAM, DECODE,
+        ("Invalid data found parsing LPCM packet"),
+        ("LPCM packet was too small. Dropping"));
+    ret = GST_FLOW_OK;
+    goto done;
+  }
+
+  /* We have a 5 byte header, now.
+   * The first two bytes are a (big endian) 16 bit offset into our buffer.
+   * The buffer timestamp refers to this offset.
+   *
+   * The other three bytes are a (big endian) number in which the header is
+   * encoded.
+   */
+  first_access = (data[0] << 8) | data[1];
+  if (first_access > size) {
+    GST_ELEMENT_WARNING (dvdlpcmdec, STREAM, DECODE,
+        ("Invalid data found parsing LPCM packet"),
+        ("LPCM packet contained invalid first access. Dropping"));
+    ret = GST_FLOW_OK;
+    goto done;
+  }
+
+  /* Don't keep the 'frame number' low 5 bits of the first byte */
+  header = ((data[2] & 0xC0) << 16) | (data[3] << 8) | data[4];
+
+  /* see if we have a new header */
+  if (header != dvdlpcmdec->header) {
+    parse_header (dvdlpcmdec, header);
+
+    if (!gst_dvdlpcmdec_set_outcaps (dvdlpcmdec))
+      goto negotiation_failed;
+
+    dvdlpcmdec->header = header;
+  }
+
+  GST_LOG_OBJECT (dvdlpcmdec, "first_access %d, buffer length %d", first_access,
+      size);
+
+  /* After first_access, we have an additional 3 bytes of data we've parsed and
+   * don't want to handle; this is included within the value of first_access.
+   * So a first_access value of between 1 and 3 is just broken, we treat that
+   * the same as zero. first_access == 4 means we only need to create a single
+   * sub-buffer, greater than that we need to create two. */
+
+  /* skip access unit bytes and info */
+  off = 5;
+
+  if (first_access > 4) {
+    guint samples = 0;
+    GstClockTime ts;
+
+    /* length of first buffer */
+    len = first_access - 4;
+
+    GST_LOG_OBJECT (dvdlpcmdec, "Creating first sub-buffer off %d, len %d",
+        off, len);
+
+    /* see if we need a subbuffer without timestamp */
+    if (off + len > size) {
+      GST_WARNING_OBJECT (pad, "Bad first_access parameter in buffer");
+      GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, DECODE,
+          (NULL),
+          ("first_access parameter out of range: bad buffer from demuxer"));
+      ret = GST_FLOW_ERROR;
+      goto done;
+    }
+
+    subbuf = gst_buffer_create_sub (buf, off, len);
+
+    /* If we don't have a stored timestamp from the last packet,
+     * (it's straight after a new-segment, but we have one on the
+     * first access buffer, then calculate the timestamp to align
+     * this buffer to just before the first_access buffer */
+    if (!GST_CLOCK_TIME_IS_VALID (dvdlpcmdec->timestamp) &&
+        GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+      switch (dvdlpcmdec->width) {
+        case 16:
+          samples = len / dvdlpcmdec->channels / 2;
+          break;
+        case 20:
+          samples = (len / dvdlpcmdec->channels) * 2 / 5;
+          break;
+        case 24:
+          samples = len / dvdlpcmdec->channels / 3;
+          break;
+      }
+    }
+    if (samples != 0) {
+      ts = gst_util_uint64_scale (samples, GST_SECOND, dvdlpcmdec->rate);
+      if (ts < GST_BUFFER_TIMESTAMP (buf))
+        GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf) - ts;
+      else
+        GST_BUFFER_TIMESTAMP (subbuf) = 0;
+    } else {
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_CLOCK_TIME_NONE;
+    }
+
+    ret = gst_dvdlpcmdec_chain_raw (pad, subbuf);
+    if (ret != GST_FLOW_OK)
+      goto done;
+
+    /* then the buffer with new timestamp */
+    off += len;
+    len = size - off;
+
+    GST_LOG_OBJECT (dvdlpcmdec, "Creating next sub-buffer off %d, len %d", off,
+        len);
+
+    if (len > 0) {
+      subbuf = gst_buffer_create_sub (buf, off, len);
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf);
+
+      ret = gst_dvdlpcmdec_chain_raw (pad, subbuf);
+    }
+  } else {
+    GST_LOG_OBJECT (dvdlpcmdec, "Creating single sub-buffer off %d, len %d",
+        off, size - off);
+    subbuf = gst_buffer_create_sub (buf, off, size - off);
+    GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf);
+    ret = gst_dvdlpcmdec_chain_raw (pad, subbuf);
+  }
+
+done:
+  gst_buffer_unref (buf);
+  gst_object_unref (dvdlpcmdec);
+
+  return ret;
+
+  /* ERRORS */
+negotiation_failed:
+  {
+    GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, FORMAT, (NULL),
+        ("Failed to configure output format"));
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto done;
+  }
+}
+
+static GstFlowReturn
+gst_dvdlpcmdec_chain_raw (GstPad * pad, GstBuffer * buf)
+{
+  GstDvdLpcmDec *dvdlpcmdec;
+  guint8 *data;
+  guint size;
+  GstFlowReturn ret;
+  guint samples = 0;
+
+  dvdlpcmdec = GST_DVDLPCMDEC (gst_pad_get_parent (pad));
+
+  size = GST_BUFFER_SIZE (buf);
+  data = GST_BUFFER_DATA (buf);
+
+  GST_LOG_OBJECT (dvdlpcmdec,
+      "got buffer %p of size %d with ts %" GST_TIME_FORMAT,
+      buf, size, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+  if (dvdlpcmdec->rate == 0)
+    goto not_negotiated;
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf))
+    dvdlpcmdec->timestamp = GST_BUFFER_TIMESTAMP (buf);
+
+  /* We don't currently do anything at all regarding emphasis, mute or
+   * dynamic_range - I'm not sure what they're for */
+  switch (dvdlpcmdec->width) {
+    case 16:
+    {
+      /* We can just pass 16-bits straight through intact, once we set
+       * appropriate things on the buffer */
+      samples = size / dvdlpcmdec->channels / 2;
+      if (samples < 1)
+        goto drop;
+      buf = gst_buffer_make_metadata_writable (buf);
+      break;
+    }
+    case 20:
+    {
+      /* Allocate a new buffer and copy 20-bit width to 24-bit */
+      gint64 samples = size * 8 / 20;
+      gint64 count = size / 10;
+      gint64 i;
+      guint8 *src;
+      guint8 *dest;
+      GstBuffer *outbuf;
+      GstCaps *bufcaps = GST_PAD_CAPS (dvdlpcmdec->srcpad);
+
+      if (samples < 1)
+        goto drop;
+
+      ret = gst_pad_alloc_buffer_and_set_caps (dvdlpcmdec->srcpad, 0,
+          samples * 3, bufcaps, &outbuf);
+
+      if (ret != GST_FLOW_OK)
+        goto buffer_alloc_failed;
+
+      gst_buffer_copy_metadata (outbuf, buf, GST_BUFFER_COPY_TIMESTAMPS);
+
+      /* adjust samples so we can calc the new timestamp */
+      samples = samples / dvdlpcmdec->channels;
+
+      src = data;
+      dest = GST_BUFFER_DATA (outbuf);
+
+      /* Copy 20-bit LPCM format to 24-bit buffers, with 0x00 in the lowest
+       * nibble. Note that the first 2 bytes are already correct */
+      for (i = 0; i < count; i++) {
+        dest[0] = src[0];
+        dest[1] = src[1];
+        dest[2] = src[8] & 0xf0;
+        dest[3] = src[2];
+        dest[4] = src[3];
+        dest[5] = (src[8] & 0x0f) << 4;
+        dest[6] = src[4];
+        dest[7] = src[5];
+        dest[8] = src[9] & 0x0f;
+        dest[9] = src[6];
+        dest[10] = src[7];
+        dest[11] = (src[9] & 0x0f) << 4;
+
+        src += 10;
+        dest += 12;
+      }
+
+      gst_buffer_unref (buf);
+      buf = outbuf;
+      break;
+    }
+    case 24:
+    {
+      /* Rearrange 24-bit LPCM format in-place. Note that the first 2
+       * and last byte are already correct */
+      guint count = size / 12;
+      gint i;
+      guint8 *src;
+
+      samples = size / dvdlpcmdec->channels / 3;
+
+      if (samples < 1)
+        goto drop;
+
+      /* Ensure our output buffer is writable */
+      buf = gst_buffer_make_writable (buf);
+
+      src = GST_BUFFER_DATA (buf);
+      for (i = 0; i < count; i++) {
+        guint8 tmp;
+
+        tmp = src[10];
+        src[10] = src[7];
+        src[7] = src[5];
+        src[5] = src[9];
+        src[9] = src[6];
+        src[6] = src[4];
+        src[4] = src[3];
+        src[3] = src[2];
+        src[2] = src[8];
+        src[8] = tmp;
+
+        src += 12;
+      }
+      break;
+    }
+    default:
+      goto invalid_width;
+  }
+
+  /* Set appropriate caps on it to pass downstream */
+  gst_buffer_set_caps (buf, GST_PAD_CAPS (dvdlpcmdec->srcpad));
+  update_timestamps (dvdlpcmdec, buf, samples);
+
+  ret = gst_pad_push (dvdlpcmdec->srcpad, buf);
+
+done:
+  gst_object_unref (dvdlpcmdec);
+
+  return ret;
+
+  /* ERRORS */
+drop:
+  {
+    GST_DEBUG_OBJECT (dvdlpcmdec, "Buffer of size %u is too small. Dropping",
+        GST_BUFFER_SIZE (buf));
+    gst_buffer_unref (buf);
+    ret = GST_FLOW_OK;
+    goto done;
+  }
+not_negotiated:
+  {
+    GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, FORMAT, (NULL),
+        ("Buffer pushed before negotiation"));
+    gst_buffer_unref (buf);
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto done;
+  }
+buffer_alloc_failed:
+  {
+    GST_ELEMENT_ERROR (dvdlpcmdec, RESOURCE, FAILED, (NULL),
+        ("Buffer allocation failed"));
+    gst_buffer_unref (buf);
+    goto done;
+  }
+invalid_width:
+  {
+    GST_ELEMENT_ERROR (dvdlpcmdec, STREAM, WRONG_TYPE, (NULL),
+        ("Invalid sample width configured"));
+    gst_buffer_unref (buf);
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto done;
+  }
+}
+
+static gboolean
+dvdlpcmdec_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstDvdLpcmDec *dvdlpcmdec;
+  gboolean res;
+
+  dvdlpcmdec = GST_DVDLPCMDEC (GST_PAD_PARENT (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gdouble rate, arate;
+      GstFormat format;
+      gboolean update;
+      gint64 start, stop, pos;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &arate,
+          &format, &start, &stop, &pos);
+
+      GST_DEBUG_OBJECT (dvdlpcmdec,
+          "new segment, format=%d, start = %" G_GINT64_FORMAT
+          ", stop = %" G_GINT64_FORMAT ", position %" G_GINT64_FORMAT,
+          format, start, stop, pos);
+
+      gst_segment_set_newsegment_full (&dvdlpcmdec->segment, update,
+          rate, arate, format, start, stop, pos);
+
+      if (format == GST_FORMAT_TIME) {
+        dvdlpcmdec->timestamp = GST_CLOCK_TIME_NONE;
+      } else {
+        dvdlpcmdec->timestamp = 0;
+      }
+      res = gst_pad_push_event (dvdlpcmdec->srcpad, event);
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:
+      gst_segment_init (&dvdlpcmdec->segment, GST_FORMAT_UNDEFINED);
+      res = gst_pad_push_event (dvdlpcmdec->srcpad, event);
+      break;
+    default:
+      res = gst_pad_push_event (dvdlpcmdec->srcpad, event);
+      break;
+  }
+
+  return res;
+}
+
+static GstStateChangeReturn
+gst_dvdlpcmdec_change_state (GstElement * element, GstStateChange transition)
+{
+  GstDvdLpcmDec *dvdlpcmdec = GST_DVDLPCMDEC (element);
+  GstStateChangeReturn res;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      gst_dvdlpcm_reset (dvdlpcmdec);
+      break;
+    default:
+      break;
+  }
+
+  res = parent_class->change_state (element, transition);
+
+  switch (transition) {
+    default:
+      break;
+  }
+
+  return res;
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (dvdlpcm_debug, "dvdlpcmdec", 0, "DVD LPCM Decoder");
+
+  if (!gst_element_register (plugin, "dvdlpcmdec", GST_RANK_PRIMARY,
+          GST_TYPE_DVDLPCMDEC)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "dvdlpcmdec",
+    "Decode DVD LPCM frames into standard PCM",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/dvdlpcmdec/gstdvdlpcmdec.h b/gst/dvdlpcmdec/gstdvdlpcmdec.h
new file mode 100644 (file)
index 0000000..eba5609
--- /dev/null
@@ -0,0 +1,69 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2005> Jan Schmidt <jan@noraisin.net>
+ *
+ * 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_DVDLPCMDEC_H__
+#define __GST_DVDLPCMDEC_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DVDLPCMDEC \
+  (gst_dvdlpcmdec_get_type())
+#define GST_DVDLPCMDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVDLPCMDEC,GstDvdLpcmDec))
+#define GST_DVDLPCMDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVDLPCMDEC,GstDvdLpcmDecClass))
+#define GST_IS_DVDLPCMDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVDLPCMDEC))
+#define GST_IS_DVDLPCMDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVDLPCMDEC))
+
+typedef struct _GstDvdLpcmDec GstDvdLpcmDec;
+typedef struct _GstDvdLpcmDecClass GstDvdLpcmDecClass;
+
+struct _GstDvdLpcmDec {
+  GstElement element;
+
+  GstPad *sinkpad,*srcpad;
+
+  guint32 header;
+
+  gint rate;
+  gint channels;
+  gint width;
+  gint out_width;
+  gint dynamic_range;
+  gint emphasis;
+  gint mute;
+  
+  GstClockTime timestamp;
+  GstSegment   segment;
+};
+
+struct _GstDvdLpcmDecClass {
+  GstElementClass parent_class;
+};
+
+GType gst_dvdlpcmdec_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DVDLPCMDEC_H__ */
diff --git a/gst/dvdsub/Makefile.am b/gst/dvdsub/Makefile.am
new file mode 100644 (file)
index 0000000..8042b75
--- /dev/null
@@ -0,0 +1,23 @@
+plugin_LTLIBRARIES = libgstdvdsub.la
+
+libgstdvdsub_la_SOURCES = gstdvdsubdec.c gstdvdsubparse.c
+libgstdvdsub_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstdvdsub_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS)
+libgstdvdsub_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdsub_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstdvdsubdec.h gstdvdsubparse.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstdvdsub -:SHARED libgstdvdsub \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstdvdsub_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdvdsub_la_CFLAGS) \
+        -:LDFLAGS $(libgstdvdsub_la_LDFLAGS) \
+                  $(libgstdvdsub_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/dvdsub/Makefile.in b/gst/dvdsub/Makefile.in
new file mode 100644 (file)
index 0000000..b27b0ab
--- /dev/null
@@ -0,0 +1,744 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/dvdsub
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstdvdsub_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstdvdsub_la_OBJECTS = libgstdvdsub_la-gstdvdsubdec.lo \
+       libgstdvdsub_la-gstdvdsubparse.lo
+libgstdvdsub_la_OBJECTS = $(am_libgstdvdsub_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstdvdsub_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstdvdsub_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstdvdsub_la_CFLAGS) $(CFLAGS) \
+       $(libgstdvdsub_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstdvdsub_la_SOURCES)
+DIST_SOURCES = $(libgstdvdsub_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstdvdsub.la
+libgstdvdsub_la_SOURCES = gstdvdsubdec.c gstdvdsubparse.c
+libgstdvdsub_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstdvdsub_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS)
+libgstdvdsub_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstdvdsub_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstdvdsubdec.h gstdvdsubparse.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/dvdsub/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/dvdsub/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
+libgstdvdsub.la: $(libgstdvdsub_la_OBJECTS) $(libgstdvdsub_la_DEPENDENCIES) $(EXTRA_libgstdvdsub_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstdvdsub_la_LINK) -rpath $(plugindir) $(libgstdvdsub_la_OBJECTS) $(libgstdvdsub_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdvdsub_la-gstdvdsubdec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdvdsub_la-gstdvdsubparse.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstdvdsub_la-gstdvdsubdec.lo: gstdvdsubdec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdsub_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdsub_la_CFLAGS) $(CFLAGS) -MT libgstdvdsub_la-gstdvdsubdec.lo -MD -MP -MF $(DEPDIR)/libgstdvdsub_la-gstdvdsubdec.Tpo -c -o libgstdvdsub_la-gstdvdsubdec.lo `test -f 'gstdvdsubdec.c' || echo '$(srcdir)/'`gstdvdsubdec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdvdsub_la-gstdvdsubdec.Tpo $(DEPDIR)/libgstdvdsub_la-gstdvdsubdec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstdvdsubdec.c' object='libgstdvdsub_la-gstdvdsubdec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdsub_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdsub_la_CFLAGS) $(CFLAGS) -c -o libgstdvdsub_la-gstdvdsubdec.lo `test -f 'gstdvdsubdec.c' || echo '$(srcdir)/'`gstdvdsubdec.c
+
+libgstdvdsub_la-gstdvdsubparse.lo: gstdvdsubparse.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdsub_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdsub_la_CFLAGS) $(CFLAGS) -MT libgstdvdsub_la-gstdvdsubparse.lo -MD -MP -MF $(DEPDIR)/libgstdvdsub_la-gstdvdsubparse.Tpo -c -o libgstdvdsub_la-gstdvdsubparse.lo `test -f 'gstdvdsubparse.c' || echo '$(srcdir)/'`gstdvdsubparse.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdvdsub_la-gstdvdsubparse.Tpo $(DEPDIR)/libgstdvdsub_la-gstdvdsubparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstdvdsubparse.c' object='libgstdvdsub_la-gstdvdsubparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdvdsub_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdvdsub_la_CFLAGS) $(CFLAGS) -c -o libgstdvdsub_la-gstdvdsubparse.lo `test -f 'gstdvdsubparse.c' || echo '$(srcdir)/'`gstdvdsubparse.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstdvdsub -:SHARED libgstdvdsub \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstdvdsub_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstdvdsub_la_CFLAGS) \
+        -:LDFLAGS $(libgstdvdsub_la_LDFLAGS) \
+                  $(libgstdvdsub_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/dvdsub/gstdvdsubdec.c b/gst/dvdsub/gstdvdsubdec.c
new file mode 100644 (file)
index 0000000..0efa7a7
--- /dev/null
@@ -0,0 +1,1154 @@
+/* GStreamer
+ * Copyright (C) <2005> Jan Schmidt <jan@fluendo.com>
+ * Copyright (C) <2002> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+
+/* TODO: liboil-ise code, esp. use _splat() family of functions */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstdvdsubdec.h"
+#include "gstdvdsubparse.h"
+#include <string.h>
+
+GST_BOILERPLATE (GstDvdSubDec, gst_dvd_sub_dec, GstElement, GST_TYPE_ELEMENT);
+
+static gboolean gst_dvd_sub_dec_src_event (GstPad * srcpad, GstEvent * event);
+static GstFlowReturn gst_dvd_sub_dec_chain (GstPad * pad, GstBuffer * buf);
+
+static gboolean gst_dvd_sub_dec_handle_dvd_event (GstDvdSubDec * dec,
+    GstEvent * event);
+static void gst_dvd_sub_dec_finalize (GObject * gobject);
+static void gst_setup_palette (GstDvdSubDec * dec);
+static void gst_dvd_sub_dec_merge_title (GstDvdSubDec * dec, GstBuffer * buf);
+static GstClockTime gst_dvd_sub_dec_get_event_delay (GstDvdSubDec * dec);
+static gboolean gst_dvd_sub_dec_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_dvd_sub_dec_sink_setcaps (GstPad * pad, GstCaps * caps);
+
+static GstFlowReturn gst_send_subtitle_frame (GstDvdSubDec * dec,
+    GstClockTime end_ts);
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw-yuv, format = (fourcc) AYUV, "
+        "width = (int) 720, height = (int) 576, framerate = (fraction) 0/1; "
+        "video/x-raw-rgb, "
+        "width = (int) 720, height = (int) 576, framerate = (fraction) 0/1, "
+        "bpp = (int) 32, endianness = (int) 4321, red_mask = (int) 16711680, "
+        "green_mask = (int) 65280, blue_mask = (int) 255, "
+        " alpha_mask = (int) -16777216, depth = (int) 32")
+    );
+
+static GstStaticPadTemplate subtitle_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-dvd-subpicture")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_dvd_sub_dec_debug);
+#define GST_CAT_DEFAULT (gst_dvd_sub_dec_debug)
+
+enum
+{
+  SPU_FORCE_DISPLAY = 0x00,
+  SPU_SHOW = 0x01,
+  SPU_HIDE = 0x02,
+  SPU_SET_PALETTE = 0x03,
+  SPU_SET_ALPHA = 0x04,
+  SPU_SET_SIZE = 0x05,
+  SPU_SET_OFFSETS = 0x06,
+  SPU_WIPE = 0x07,
+  SPU_END = 0xff
+};
+
+static const guint32 default_clut[16] = {
+  0xb48080, 0x248080, 0x628080, 0xd78080,
+  0x808080, 0x808080, 0x808080, 0x808080,
+  0x808080, 0x808080, 0x808080, 0x808080,
+  0x808080, 0x808080, 0x808080, 0x808080
+};
+
+typedef struct RLE_state
+{
+  gint id;
+  gint aligned;
+  gint offset[2];
+  gint hl_left;
+  gint hl_right;
+
+  guchar *target;
+
+  guchar next;
+}
+RLE_state;
+
+static void
+gst_dvd_sub_dec_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &subtitle_template);
+
+  gst_element_class_set_details_simple (element_class, "DVD subtitle decoder",
+      "Codec/Decoder/Video", "Decodes DVD subtitles into AYUV video frames",
+      "Wim Taymans <wim.taymans@gmail.com>, "
+      "Jan Schmidt <thaytan@mad.scientist.com>");
+}
+
+static void
+gst_dvd_sub_dec_class_init (GstDvdSubDecClass * klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = (GObjectClass *) klass;
+
+  gobject_class->finalize = gst_dvd_sub_dec_finalize;
+}
+
+static void
+gst_dvd_sub_dec_init (GstDvdSubDec * dec, GstDvdSubDecClass * klass)
+{
+  GstPadTemplate *tmpl;
+
+  dec->sinkpad = gst_pad_new_from_static_template (&subtitle_template, "sink");
+  gst_pad_set_chain_function (dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_dec_chain));
+  gst_pad_set_event_function (dec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_dec_sink_event));
+  gst_element_add_pad (GST_ELEMENT (dec), dec->sinkpad);
+  gst_pad_set_setcaps_function (dec->sinkpad, gst_dvd_sub_dec_sink_setcaps);
+
+  tmpl = gst_static_pad_template_get (&src_template);
+  dec->srcpad = gst_pad_new_from_template (tmpl, "src");
+  gst_pad_set_event_function (dec->srcpad,
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_dec_src_event));
+  gst_pad_use_fixed_caps (dec->srcpad);
+  gst_object_unref (tmpl);
+  gst_element_add_pad (GST_ELEMENT (dec), dec->srcpad);
+
+  /* FIXME: aren't there more possible sizes? (tpm) */
+  dec->in_width = 720;
+  dec->in_height = 576;
+
+  dec->partialbuf = NULL;
+  dec->have_title = FALSE;
+  dec->parse_pos = NULL;
+  dec->forced_display = FALSE;
+  dec->visible = FALSE;
+
+  memcpy (dec->current_clut, default_clut, sizeof (guint32) * 16);
+
+  gst_setup_palette (dec);
+
+  dec->next_ts = 0;
+  dec->next_event_ts = GST_CLOCK_TIME_NONE;
+
+  dec->buf_dirty = TRUE;
+  dec->use_ARGB = FALSE;
+}
+
+static void
+gst_dvd_sub_dec_finalize (GObject * gobject)
+{
+  GstDvdSubDec *dec = GST_DVD_SUB_DEC (gobject);
+
+  if (dec->partialbuf) {
+    gst_buffer_unref (dec->partialbuf);
+    dec->partialbuf = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (gobject);
+}
+
+static gboolean
+gst_dvd_sub_dec_src_event (GstPad * pad, GstEvent * event)
+{
+  GstDvdSubDec *dec = GST_DVD_SUB_DEC (gst_pad_get_parent (pad));
+  gboolean res = FALSE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    default:
+      res = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (dec);
+  return res;
+}
+
+static GstClockTime
+gst_dvd_sub_dec_get_event_delay (GstDvdSubDec * dec)
+{
+  guchar *start = GST_BUFFER_DATA (dec->partialbuf);
+  guchar *buf;
+  guint16 ticks;
+  GstClockTime event_delay;
+
+  /* If starting a new buffer, follow the first DCSQ ptr */
+  if (dec->parse_pos == start) {
+    buf = dec->parse_pos + dec->data_size;
+  } else {
+    buf = dec->parse_pos;
+  }
+
+  ticks = GST_READ_UINT16_BE (buf);
+  event_delay = gst_util_uint64_scale (ticks, 1024 * GST_SECOND, 90000);
+
+  GST_DEBUG_OBJECT (dec, "returning delay %" GST_TIME_FORMAT " from offset %u",
+      GST_TIME_ARGS (event_delay), (guint) (buf - dec->parse_pos));
+
+  return event_delay;
+}
+
+/*
+ * Parse the next event time in the current subpicture buffer, stopping
+ * when time advances to the next state. 
+ */
+static void
+gst_dvd_sub_dec_parse_subpic (GstDvdSubDec * dec)
+{
+#define PARSE_BYTES_NEEDED(x) if ((buf+(x)) >= end) \
+  { GST_WARNING("Subtitle stream broken parsing %c", *buf); \
+    broken = TRUE; break; }
+
+  guchar *start = GST_BUFFER_DATA (dec->partialbuf);
+  guchar *buf;
+  guchar *end;
+  gboolean broken = FALSE;
+  gboolean last_seq = FALSE;
+  guchar *next_seq = NULL;
+  GstClockTime event_time;
+
+  /* nothing to do if we finished this buffer already */
+  if (dec->parse_pos == NULL)
+    return;
+
+  g_return_if_fail (dec->packet_size >= 4);
+
+  end = start + dec->packet_size;
+  if (dec->parse_pos == start) {
+    buf = dec->parse_pos + dec->data_size;
+  } else {
+    buf = dec->parse_pos;
+  }
+
+  g_assert (buf >= start && buf < end);
+
+  /* If the next control sequence is at the current offset, this is 
+   * the last one */
+  next_seq = start + GST_READ_UINT16_BE (buf + 2);
+  last_seq = (next_seq == buf);
+  buf += 4;
+
+  while ((buf < end) && (!broken)) {
+    switch (*buf) {
+      case SPU_FORCE_DISPLAY:  /* Forced display menu subtitle */
+        dec->forced_display = TRUE;
+        dec->buf_dirty = TRUE;
+        GST_DEBUG_OBJECT (dec, "SPU FORCE_DISPLAY");
+        buf++;
+        break;
+      case SPU_SHOW:           /* Show the subtitle in this packet */
+        dec->visible = TRUE;
+        dec->buf_dirty = TRUE;
+        GST_DEBUG_OBJECT (dec, "SPU SHOW at %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (dec->next_event_ts));
+        buf++;
+        break;
+      case SPU_HIDE:
+        /* 02 ff (ff) is the end of the packet, hide the subpicture */
+        dec->visible = FALSE;
+        dec->buf_dirty = TRUE;
+
+        GST_DEBUG_OBJECT (dec, "SPU HIDE at %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (dec->next_event_ts));
+        buf++;
+        break;
+      case SPU_SET_PALETTE:    /* palette */
+        PARSE_BYTES_NEEDED (3);
+
+        GST_DEBUG_OBJECT (dec, "SPU SET_PALETTE");
+
+        dec->subtitle_index[3] = buf[1] >> 4;
+        dec->subtitle_index[2] = buf[1] & 0xf;
+        dec->subtitle_index[1] = buf[2] >> 4;
+        dec->subtitle_index[0] = buf[2] & 0xf;
+        gst_setup_palette (dec);
+
+        dec->buf_dirty = TRUE;
+        buf += 3;
+        break;
+      case SPU_SET_ALPHA:      /* transparency palette */
+        PARSE_BYTES_NEEDED (3);
+
+        GST_DEBUG_OBJECT (dec, "SPU SET_ALPHA");
+
+        dec->subtitle_alpha[3] = buf[1] >> 4;
+        dec->subtitle_alpha[2] = buf[1] & 0xf;
+        dec->subtitle_alpha[1] = buf[2] >> 4;
+        dec->subtitle_alpha[0] = buf[2] & 0xf;
+        gst_setup_palette (dec);
+
+        dec->buf_dirty = TRUE;
+        buf += 3;
+        break;
+      case SPU_SET_SIZE:       /* image coordinates */
+        PARSE_BYTES_NEEDED (7);
+
+        dec->top = ((buf[4] & 0x3f) << 4) | ((buf[5] & 0xe0) >> 4);
+        dec->left = ((buf[1] & 0x3f) << 4) | ((buf[2] & 0xf0) >> 4);
+        dec->right = ((buf[2] & 0x03) << 8) | buf[3];
+        dec->bottom = ((buf[5] & 0x03) << 8) | buf[6];
+
+        GST_DEBUG_OBJECT (dec, "SPU SET_SIZE left %d, top %d, right %d, "
+            "bottom %d", dec->left, dec->top, dec->right, dec->bottom);
+
+        dec->buf_dirty = TRUE;
+        buf += 7;
+        break;
+      case SPU_SET_OFFSETS:    /* image 1 / image 2 offsets */
+        PARSE_BYTES_NEEDED (5);
+
+        dec->offset[0] = (((guint) buf[1]) << 8) | buf[2];
+        dec->offset[1] = (((guint) buf[3]) << 8) | buf[4];
+        GST_DEBUG_OBJECT (dec, "Offset1 %d, Offset2 %d",
+            dec->offset[0], dec->offset[1]);
+
+        dec->buf_dirty = TRUE;
+        buf += 5;
+        break;
+      case SPU_WIPE:
+      {
+        guint length;
+
+        PARSE_BYTES_NEEDED (3);
+
+        GST_WARNING_OBJECT (dec, "SPU_WIPE not yet implemented");
+
+        length = (buf[1] << 8) | (buf[2]);
+        buf += 1 + length;
+
+        dec->buf_dirty = TRUE;
+        break;
+      }
+      case SPU_END:
+        buf = (last_seq) ? end : next_seq;
+
+        /* Start a new control sequence */
+        if (buf + 4 < end) {
+          guint16 ticks = GST_READ_UINT16_BE (buf);
+
+          event_time = gst_util_uint64_scale (ticks, 1024 * GST_SECOND, 90000);
+
+          GST_DEBUG_OBJECT (dec,
+              "Next DCSQ at offset %u, delay %g secs (%d ticks)",
+              (guint) (buf - start),
+              gst_util_guint64_to_gdouble (event_time / GST_SECOND), ticks);
+
+          dec->parse_pos = buf;
+          if (event_time > 0) {
+            dec->next_event_ts += event_time;
+
+            GST_LOG_OBJECT (dec, "Exiting parse loop with time %g",
+                gst_guint64_to_gdouble (dec->next_event_ts) /
+                gst_guint64_to_gdouble (GST_SECOND));
+            return;
+          }
+        } else {
+          dec->parse_pos = NULL;
+          dec->next_event_ts = GST_CLOCK_TIME_NONE;
+          GST_LOG_OBJECT (dec, "Finished all cmds. Exiting parse loop");
+          return;
+        }
+      default:
+        GST_ERROR
+            ("Invalid sequence in subtitle packet header (%.2x). Skipping",
+            *buf);
+        broken = TRUE;
+        dec->parse_pos = NULL;
+        break;
+    }
+  }
+}
+
+static inline int
+gst_get_nibble (guchar * buffer, RLE_state * state)
+{
+  if (state->aligned) {
+    state->next = buffer[state->offset[state->id]++];
+    state->aligned = 0;
+    return state->next >> 4;
+  } else {
+    state->aligned = 1;
+    return state->next & 0xf;
+  }
+}
+
+/* Premultiply the current lookup table into the "target" cache */
+static void
+gst_setup_palette (GstDvdSubDec * dec)
+{
+  gint i;
+  guint32 col;
+  Color_val *target_yuv = dec->palette_cache_yuv;
+  Color_val *target2_yuv = dec->hl_palette_cache_yuv;
+  Color_val *target_rgb = dec->palette_cache_rgb;
+  Color_val *target2_rgb = dec->hl_palette_cache_rgb;
+
+  for (i = 0; i < 4; i++, target2_yuv++, target_yuv++) {
+    col = dec->current_clut[dec->subtitle_index[i]];
+    target_yuv->Y_R = (col >> 16) & 0xff;
+    target_yuv->V_B = (col >> 8) & 0xff;
+    target_yuv->U_G = col & 0xff;
+    target_yuv->A = dec->subtitle_alpha[i] * 0xff / 0xf;
+
+    col = dec->current_clut[dec->menu_index[i]];
+    target2_yuv->Y_R = (col >> 16) & 0xff;
+    target2_yuv->V_B = (col >> 8) & 0xff;
+    target2_yuv->U_G = col & 0xff;
+    target2_yuv->A = dec->menu_alpha[i] * 0xff / 0xf;
+
+    /* If ARGB flag set, then convert YUV palette to RGB */
+    /* Using integer aritmetic */
+    if (dec->use_ARGB) {
+      guchar C = target_yuv->Y_R - 16;
+      guchar D = target_yuv->U_G - 128;
+      guchar E = target_yuv->V_B - 128;
+
+      target_rgb->Y_R = CLAMP (((298 * C + 409 * E + 128) >> 8), 0, 255);
+      target_rgb->U_G =
+          CLAMP (((298 * C - 100 * D - 128 * E + 128) >> 8), 0, 255);
+      target_rgb->V_B = CLAMP (((298 * C + 516 * D + 128) >> 8), 0, 255);
+      target_rgb->A = target_yuv->A;
+
+      C = target2_yuv->Y_R - 16;
+      D = target2_yuv->U_G - 128;
+      E = target2_yuv->V_B - 128;
+
+      target2_rgb->Y_R = CLAMP (((298 * C + 409 * E + 128) >> 8), 0, 255);
+      target2_rgb->U_G =
+          CLAMP (((298 * C - 100 * D - 128 * E + 128) >> 8), 0, 255);
+      target2_rgb->V_B = CLAMP (((298 * C + 516 * D + 128) >> 8), 0, 255);
+      target2_rgb->A = target2_yuv->A;
+    }
+    target_rgb++;
+    target2_rgb++;
+  }
+}
+
+static inline guint
+gst_get_rle_code (guchar * buffer, RLE_state * state)
+{
+  gint code;
+
+  code = gst_get_nibble (buffer, state);
+  if (code < 0x4) {             /* 4 .. f */
+    code = (code << 4) | gst_get_nibble (buffer, state);
+    if (code < 0x10) {          /* 1x .. 3x */
+      code = (code << 4) | gst_get_nibble (buffer, state);
+      if (code < 0x40) {        /* 04x .. 0fx */
+        code = (code << 4) | gst_get_nibble (buffer, state);
+      }
+    }
+  }
+  return code;
+}
+
+#define DRAW_RUN(target,len,c)                  \
+G_STMT_START {                                  \
+  gint i = 0;                                   \
+  if ((c)->A) {                                 \
+    for (i = 0; i < (len); i++) {               \
+      *(target)++ = (c)->A;                     \
+      *(target)++ = (c)->Y_R;                   \
+      *(target)++ = (c)->U_G;                   \
+      *(target)++ = (c)->V_B;                   \
+    }                                           \
+  } else {                                      \
+    (target) += 4 * (len);                      \
+  }                                             \
+} G_STMT_END
+
+/* 
+ * This function steps over each run-length segment, drawing 
+ * into the YUVA/ARGB buffers as it goes. UV are composited and then output
+ * at half width/height
+ */
+static void
+gst_draw_rle_line (GstDvdSubDec * dec, guchar * buffer, RLE_state * state)
+{
+  gint length, colourid;
+  guint code;
+  gint x, right;
+  guchar *target;
+
+  target = state->target;
+
+  x = dec->left;
+  right = dec->right + 1;
+
+  while (x < right) {
+    gboolean in_hl;
+    const Color_val *colour_entry;
+
+    code = gst_get_rle_code (buffer, state);
+    length = code >> 2;
+    colourid = code & 3;
+    if (dec->use_ARGB)
+      colour_entry = dec->palette_cache_rgb + colourid;
+    else
+      colour_entry = dec->palette_cache_yuv + colourid;
+
+    /* Length = 0 implies fill to the end of the line */
+    /* Restrict the colour run to the end of the line */
+    if (length == 0 || x + length > right)
+      length = right - x;
+
+    /* Check if this run of colour touches the highlight region */
+    in_hl = ((x <= state->hl_right) && (x + length) >= state->hl_left);
+    if (in_hl) {
+      gint run;
+
+      /* Draw to the left of the highlight */
+      if (x <= state->hl_left) {
+        run = MIN (length, state->hl_left - x + 1);
+
+        DRAW_RUN (target, run, colour_entry);
+        length -= run;
+        x += run;
+      }
+
+      /* Draw across the highlight region */
+      if (x <= state->hl_right) {
+        const Color_val *hl_colour;
+        if (dec->use_ARGB)
+          hl_colour = dec->hl_palette_cache_rgb + colourid;
+        else
+          hl_colour = dec->hl_palette_cache_yuv + colourid;
+
+        run = MIN (length, state->hl_right - x + 1);
+
+        DRAW_RUN (target, run, hl_colour);
+        length -= run;
+        x += run;
+      }
+    }
+
+    /* Draw the rest of the run */
+    if (length > 0) {
+      DRAW_RUN (target, length, colour_entry);
+      x += length;
+    }
+  }
+}
+
+/*
+ * Decode the RLE subtitle image and blend with the current
+ * frame buffer.
+ */
+static void
+gst_dvd_sub_dec_merge_title (GstDvdSubDec * dec, GstBuffer * buf)
+{
+  gint y;
+  gint Y_stride = 4 * dec->in_width;
+  guchar *buffer = GST_BUFFER_DATA (dec->partialbuf);
+
+  gint hl_top, hl_bottom;
+  gint last_y;
+  RLE_state state;
+
+  GST_DEBUG_OBJECT (dec, "Merging subtitle on frame at time %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+  state.id = 0;
+  state.aligned = 1;
+  state.next = 0;
+  state.offset[0] = dec->offset[0];
+  state.offset[1] = dec->offset[1];
+
+  /* center the image when display rectangle exceeds the video width */
+  if (dec->in_width <= dec->right) {
+    gint left, disp_width;
+
+    disp_width = dec->right - dec->left + 1;
+    left = (dec->in_width - disp_width) / 2;
+    dec->left = left;
+    dec->right = left + disp_width - 1;
+
+    /* if it clips to the right, shift it left, but only till zero */
+    if (dec->right >= dec->in_width) {
+      gint shift = dec->right - dec->in_width - 1;
+      if (shift > dec->left)
+        shift = dec->left;
+      dec->left -= shift;
+      dec->right -= shift;
+    }
+
+    GST_DEBUG_OBJECT (dec, "clipping width to %d,%d",
+        dec->left, dec->in_width - 1);
+  }
+
+  /* for the height, bring it up till it fits as well as it can. We
+   * assume the picture is in the lower part. We should better check where it
+   * is and do something more clever. */
+  if (dec->in_height <= dec->bottom) {
+
+    /* shift it up, but only till zero */
+    gint shift = dec->bottom - dec->in_height - 1;
+    if (shift > dec->top)
+      shift = dec->top;
+    dec->top -= shift;
+    dec->bottom -= shift;
+
+    /* start on even line */
+    if (dec->top & 1) {
+      dec->top--;
+      dec->bottom--;
+    }
+
+    GST_DEBUG_OBJECT (dec, "clipping height to %d,%d",
+        dec->top, dec->in_height - 1);
+  }
+
+  if (dec->current_button) {
+    hl_top = dec->hl_top;
+    hl_bottom = dec->hl_bottom;
+  } else {
+    hl_top = -1;
+    hl_bottom = -1;
+  }
+  last_y = MIN (dec->bottom, dec->in_height);
+
+  y = dec->top;
+  state.target = GST_BUFFER_DATA (buf) + 4 * dec->left + (y * Y_stride);
+
+  /* Now draw scanlines until we hit last_y or end of RLE data */
+  for (; ((state.offset[1] < dec->data_size + 2) && (y <= last_y)); y++) {
+    /* Set up to draw the highlight if we're in the right scanlines */
+    if (y > hl_bottom || y < hl_top) {
+      state.hl_left = -1;
+      state.hl_right = -1;
+    } else {
+      state.hl_left = dec->hl_left;
+      state.hl_right = dec->hl_right;
+    }
+    gst_draw_rle_line (dec, buffer, &state);
+
+    state.target += Y_stride;
+
+    /* Realign the RLE state for the next line */
+    if (!state.aligned)
+      gst_get_nibble (buffer, &state);
+    state.id = !state.id;
+  }
+}
+
+static void
+gst_send_empty_fill (GstDvdSubDec * dec, GstClockTime ts)
+{
+  if (dec->next_ts < ts) {
+    GST_LOG_OBJECT (dec, "Sending newsegment update to advance time to %"
+        GST_TIME_FORMAT, GST_TIME_ARGS (ts));
+
+    gst_pad_push_event (dec->srcpad,
+        gst_event_new_new_segment (TRUE, 1.0, GST_FORMAT_TIME, ts, -1, ts));
+  }
+  dec->next_ts = ts;
+}
+
+static GstFlowReturn
+gst_send_subtitle_frame (GstDvdSubDec * dec, GstClockTime end_ts)
+{
+  GstFlowReturn flow;
+  GstBuffer *out_buf;
+  gint x, y;
+
+  g_assert (dec->have_title);
+  g_assert (dec->next_ts <= end_ts);
+
+  /* Check if we need to redraw the output buffer */
+  if (!dec->buf_dirty) {
+    flow = GST_FLOW_OK;
+    goto out;
+  }
+
+  flow = gst_pad_alloc_buffer_and_set_caps (dec->srcpad, 0,
+      4 * dec->in_width * dec->in_height, GST_PAD_CAPS (dec->srcpad), &out_buf);
+
+  if (flow != GST_FLOW_OK) {
+    GST_DEBUG_OBJECT (dec, "alloc buffer failed: flow = %s",
+        gst_flow_get_name (flow));
+    goto out;
+  }
+
+  /* Clear the buffer */
+  /* FIXME - move this into the buffer rendering code */
+  for (y = 0; y < dec->in_height; y++) {
+    guchar *line = GST_BUFFER_DATA (out_buf) + 4 * dec->in_width * y;
+
+    for (x = 0; x < dec->in_width; x++) {
+      line[0] = 0;              /* A */
+      if (!dec->use_ARGB) {
+        line[1] = 16;           /* Y */
+        line[2] = 128;          /* U */
+        line[3] = 128;          /* V */
+      } else {
+        line[1] = 0;            /* R */
+        line[2] = 0;            /* G */
+        line[3] = 0;            /* B */
+      }
+
+      line += 4;
+    }
+  }
+
+  /* FIXME: do we really want to honour the forced_display flag
+   * for subtitles streans? */
+  if (dec->visible || dec->forced_display) {
+    gst_dvd_sub_dec_merge_title (dec, out_buf);
+  }
+
+  dec->buf_dirty = FALSE;
+
+  GST_BUFFER_TIMESTAMP (out_buf) = dec->next_ts;
+  if (GST_CLOCK_TIME_IS_VALID (dec->next_event_ts)) {
+    GST_BUFFER_DURATION (out_buf) = GST_CLOCK_DIFF (dec->next_ts,
+        dec->next_event_ts);
+  } else {
+    GST_BUFFER_DURATION (out_buf) = GST_CLOCK_TIME_NONE;
+  }
+
+  GST_DEBUG_OBJECT (dec, "Sending subtitle buffer with ts %"
+      GST_TIME_FORMAT ", dur %" G_GINT64_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (out_buf)),
+      GST_BUFFER_DURATION (out_buf));
+
+  gst_buffer_set_caps (out_buf, GST_PAD_CAPS (dec->srcpad));
+
+  flow = gst_pad_push (dec->srcpad, out_buf);
+
+out:
+  dec->next_ts = end_ts;
+  return flow;
+}
+
+/* Walk time forward, processing any subtitle events as needed. */
+static GstFlowReturn
+gst_dvd_sub_dec_advance_time (GstDvdSubDec * dec, GstClockTime new_ts)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  GST_LOG_OBJECT (dec, "Advancing time to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (new_ts));
+
+  if (!dec->have_title) {
+    gst_send_empty_fill (dec, new_ts);
+    return ret;
+  }
+
+  while (dec->next_ts < new_ts) {
+    GstClockTime next_ts = new_ts;
+
+    if (GST_CLOCK_TIME_IS_VALID (dec->next_event_ts) &&
+        dec->next_event_ts < next_ts) {
+      /* We might need to process the subtitle cmd queue */
+      next_ts = dec->next_event_ts;
+    }
+
+    /* 
+     * Now, either output a filler or a frame spanning
+     * dec->next_ts to next_ts
+     */
+    if (dec->visible || dec->forced_display) {
+      ret = gst_send_subtitle_frame (dec, next_ts);
+    } else {
+      gst_send_empty_fill (dec, next_ts);
+    }
+
+    /*
+     * and then process some subtitle cmds if we need
+     */
+    if (next_ts == dec->next_event_ts)
+      gst_dvd_sub_dec_parse_subpic (dec);
+  }
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_dvd_sub_dec_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstDvdSubDec *dec;
+  guint8 *data;
+  glong size = 0;
+
+  dec = GST_DVD_SUB_DEC (GST_PAD_PARENT (pad));
+
+  GST_DEBUG_OBJECT (dec, "Have buffer of size %d, ts %"
+      GST_TIME_FORMAT ", dur %" G_GINT64_FORMAT, GST_BUFFER_SIZE (buf),
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), GST_BUFFER_DURATION (buf));
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    if (!GST_CLOCK_TIME_IS_VALID (dec->next_ts)) {
+      dec->next_ts = GST_BUFFER_TIMESTAMP (buf);
+    }
+
+    /* Move time forward to the start of the new buffer */
+    ret = gst_dvd_sub_dec_advance_time (dec, GST_BUFFER_TIMESTAMP (buf));
+  }
+
+  if (dec->have_title) {
+    gst_buffer_unref (dec->partialbuf);
+    dec->partialbuf = NULL;
+    dec->have_title = FALSE;
+  }
+
+  GST_DEBUG_OBJECT (dec, "Got subtitle buffer, pts %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+  /* deal with partial frame from previous buffer */
+  if (dec->partialbuf) {
+    GstBuffer *merge;
+
+    merge = gst_buffer_join (dec->partialbuf, buf);
+    dec->partialbuf = merge;
+  } else {
+    dec->partialbuf = buf;
+  }
+
+  data = GST_BUFFER_DATA (dec->partialbuf);
+  size = GST_BUFFER_SIZE (dec->partialbuf);
+
+  if (size > 4) {
+    dec->packet_size = GST_READ_UINT16_BE (data);
+
+    if (dec->packet_size == size) {
+      GST_LOG_OBJECT (dec, "Subtitle packet size %d, current size %ld",
+          dec->packet_size, size);
+
+      dec->data_size = GST_READ_UINT16_BE (data + 2);
+
+      /* Reset parameters for a new subtitle buffer */
+      dec->parse_pos = data;
+      dec->forced_display = FALSE;
+      dec->visible = FALSE;
+
+      dec->have_title = TRUE;
+      dec->next_event_ts = GST_BUFFER_TIMESTAMP (dec->partialbuf);
+
+      if (!GST_CLOCK_TIME_IS_VALID (dec->next_event_ts))
+        dec->next_event_ts = dec->next_ts;
+
+      dec->next_event_ts += gst_dvd_sub_dec_get_event_delay (dec);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_dvd_sub_dec_sink_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstDvdSubDec *dec = GST_DVD_SUB_DEC (gst_pad_get_parent (pad));
+  gboolean ret = FALSE;
+  guint32 fourcc = GST_MAKE_FOURCC ('A', 'Y', 'U', 'V');
+  GstCaps *out_caps = NULL, *peer_caps = NULL;
+
+  GST_DEBUG_OBJECT (dec, "setcaps called with %" GST_PTR_FORMAT, caps);
+
+  dec->out_fourcc = fourcc;
+  out_caps = gst_caps_new_simple ("video/x-raw-yuv",
+      "width", G_TYPE_INT, dec->in_width,
+      "height", G_TYPE_INT, dec->in_height,
+      "format", GST_TYPE_FOURCC, dec->out_fourcc,
+      "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
+
+  peer_caps = gst_pad_get_allowed_caps (dec->srcpad);
+  if (G_LIKELY (peer_caps)) {
+    guint i = 0, n = 0;
+    n = gst_caps_get_size (peer_caps);
+    GST_DEBUG_OBJECT (dec, "peer allowed caps (%u structure(s)) are %"
+        GST_PTR_FORMAT, n, peer_caps);
+
+    for (i = 0; i < n; i++) {
+      GstStructure *s = gst_caps_get_structure (peer_caps, i);
+      /* Check if the peer pad support ARGB format, if yes change caps */
+      if (gst_structure_has_name (s, "video/x-raw-rgb") &&
+          gst_structure_has_field (s, "alpha_mask")) {
+        gst_caps_unref (out_caps);
+        GST_DEBUG_OBJECT (dec, "trying with fourcc %" GST_FOURCC_FORMAT,
+            GST_FOURCC_ARGS (fourcc));
+        out_caps = gst_caps_new_simple ("video/x-raw-rgb",
+            "width", G_TYPE_INT, dec->in_width,
+            "height", G_TYPE_INT, dec->in_height,
+            "framerate", GST_TYPE_FRACTION, 0, 1,
+            "bpp", G_TYPE_INT, 32,
+            "depth", G_TYPE_INT, 32,
+            "red_mask", G_TYPE_INT, 16711680,
+            "green_mask", G_TYPE_INT, 65280,
+            "blue_mask", G_TYPE_INT, 255,
+            "alpha_mask", G_TYPE_INT, -16777216,
+            "endianness", G_TYPE_INT, G_BIG_ENDIAN, NULL);
+        if (gst_pad_peer_accept_caps (dec->srcpad, out_caps)) {
+          GST_DEBUG_OBJECT (dec, "peer accepted format %" GST_FOURCC_FORMAT,
+              GST_FOURCC_ARGS (fourcc));
+          /* If ARGB format then set the flag */
+          dec->use_ARGB = TRUE;
+          break;
+        }
+      }
+    }
+    gst_caps_unref (peer_caps);
+  }
+  GST_DEBUG_OBJECT (dec, "setting caps downstream to %" GST_PTR_FORMAT,
+      out_caps);
+  if (gst_pad_set_caps (dec->srcpad, out_caps)) {
+    dec->out_fourcc = fourcc;
+  } else {
+    GST_WARNING_OBJECT (dec, "failed setting downstream caps");
+    gst_caps_unref (out_caps);
+    goto beach;
+  }
+
+  gst_caps_unref (out_caps);
+  ret = TRUE;
+
+beach:
+  gst_object_unref (dec);
+  return ret;
+}
+
+static gboolean
+gst_dvd_sub_dec_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstDvdSubDec *dec = GST_DVD_SUB_DEC (gst_pad_get_parent (pad));
+  gboolean ret = FALSE;
+
+  GST_LOG_OBJECT (dec, "%s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CUSTOM_DOWNSTREAM:{
+      GstClockTime ts = GST_EVENT_TIMESTAMP (event);
+
+      if (event->structure != NULL &&
+          gst_structure_has_name (event->structure, "application/x-gst-dvd")) {
+
+        if (GST_CLOCK_TIME_IS_VALID (ts))
+          gst_dvd_sub_dec_advance_time (dec, ts);
+
+        if (gst_dvd_sub_dec_handle_dvd_event (dec, event)) {
+          /* gst_dvd_sub_dec_advance_time (dec, dec->next_ts + GST_SECOND / 30.0); */
+          gst_event_unref (event);
+          ret = TRUE;
+          break;
+        }
+      }
+
+      ret = gst_pad_event_default (pad, event);
+      break;
+    }
+    case GST_EVENT_NEWSEGMENT:{
+      gboolean update;
+      GstFormat format;
+      gint64 start, stop, pos;
+
+      gst_event_parse_new_segment (event, &update, NULL, &format, &start,
+          &stop, &pos);
+
+      if (update) {
+        /* update ... advance time */
+        if (GST_CLOCK_TIME_IS_VALID (pos)) {
+          GST_DEBUG_OBJECT (dec, "Got segment update, advancing time from %"
+              GST_TIME_FORMAT " to %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (dec->next_ts), GST_TIME_ARGS (pos));
+
+          gst_dvd_sub_dec_advance_time (dec, pos);
+        } else {
+          GST_WARNING_OBJECT (dec, "Got segment update with invalid position");
+        }
+        gst_event_unref (event);
+        ret = TRUE;
+      } else {
+        /* not just an update ... */
+
+        /* Turn off forced highlight display */
+        // dec->forced_display = 0;
+        // dec->current_button = 0;
+        if (dec->partialbuf) {
+          gst_buffer_unref (dec->partialbuf);
+          dec->partialbuf = NULL;
+          dec->have_title = FALSE;
+        }
+
+        if (GST_CLOCK_TIME_IS_VALID (pos))
+          dec->next_ts = pos;
+        else
+          dec->next_ts = GST_CLOCK_TIME_NONE;
+
+        GST_DEBUG_OBJECT (dec, "Got newsegment, new time = %"
+            GST_TIME_FORMAT, GST_TIME_ARGS (dec->next_ts));
+
+        ret = gst_pad_event_default (pad, event);
+      }
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:{
+      /* Turn off forced highlight display */
+      dec->forced_display = 0;
+      dec->current_button = 0;
+
+      if (dec->partialbuf) {
+        gst_buffer_unref (dec->partialbuf);
+        dec->partialbuf = NULL;
+        dec->have_title = FALSE;
+      }
+
+      ret = gst_pad_event_default (pad, event);
+      break;
+    }
+    default:{
+      ret = gst_pad_event_default (pad, event);
+      break;
+    }
+  }
+  gst_object_unref (dec);
+  return ret;
+}
+
+static gboolean
+gst_dvd_sub_dec_handle_dvd_event (GstDvdSubDec * dec, GstEvent * event)
+{
+  GstStructure *structure;
+  const gchar *event_name;
+
+  structure = (GstStructure *) gst_event_get_structure (event);
+
+  if (structure == NULL)
+    goto not_handled;
+
+  event_name = gst_structure_get_string (structure, "event");
+
+  GST_LOG_OBJECT (dec,
+      "DVD event %s with timestamp %" G_GINT64_FORMAT " on sub pad",
+      GST_STR_NULL (event_name), GST_EVENT_TIMESTAMP (event));
+
+  if (event_name == NULL)
+    goto not_handled;
+
+  if (strcmp (event_name, "dvd-spu-highlight") == 0) {
+    gint button;
+    gint palette, sx, sy, ex, ey;
+    gint i;
+
+    /* Details for the highlight region to display */
+    if (!gst_structure_get_int (structure, "button", &button) ||
+        !gst_structure_get_int (structure, "palette", &palette) ||
+        !gst_structure_get_int (structure, "sx", &sx) ||
+        !gst_structure_get_int (structure, "sy", &sy) ||
+        !gst_structure_get_int (structure, "ex", &ex) ||
+        !gst_structure_get_int (structure, "ey", &ey)) {
+      GST_ERROR_OBJECT (dec, "Invalid dvd-spu-highlight event received");
+      return TRUE;
+    }
+    dec->current_button = button;
+    dec->hl_left = sx;
+    dec->hl_top = sy;
+    dec->hl_right = ex;
+    dec->hl_bottom = ey;
+    for (i = 0; i < 4; i++) {
+      dec->menu_alpha[i] = ((guint32) (palette) >> (i * 4)) & 0x0f;
+      dec->menu_index[i] = ((guint32) (palette) >> (16 + (i * 4))) & 0x0f;
+    }
+
+    GST_DEBUG_OBJECT (dec, "New button activated highlight=(%d,%d) to (%d,%d) "
+        "palette 0x%x", sx, sy, ex, ey, palette);
+    gst_setup_palette (dec);
+
+    dec->buf_dirty = TRUE;
+  } else if (strcmp (event_name, "dvd-spu-clut-change") == 0) {
+    /* Take a copy of the colour table */
+    gchar name[16];
+    int i;
+    gint value;
+
+    GST_LOG_OBJECT (dec, "New colour table received");
+    for (i = 0; i < 16; i++) {
+      g_snprintf (name, sizeof (name), "clut%02d", i);
+      if (!gst_structure_get_int (structure, name, &value)) {
+        GST_ERROR_OBJECT (dec, "dvd-spu-clut-change event did not "
+            "contain %s field", name);
+        break;
+      }
+      dec->current_clut[i] = (guint32) (value);
+    }
+
+    gst_setup_palette (dec);
+
+    dec->buf_dirty = TRUE;
+  } else if (strcmp (event_name, "dvd-spu-stream-change") == 0
+      || strcmp (event_name, "dvd-spu-reset-highlight") == 0) {
+    /* Turn off forced highlight display */
+    dec->current_button = 0;
+
+    GST_LOG_OBJECT (dec, "Clearing button state");
+    dec->buf_dirty = TRUE;
+  } else if (strcmp (event_name, "dvd-spu-still-frame") == 0) {
+    /* Handle a still frame */
+    GST_LOG_OBJECT (dec, "Received still frame notification");
+  } else {
+    goto not_handled;
+  }
+
+  return TRUE;
+
+not_handled:
+  {
+    /* Ignore all other unknown events */
+    GST_LOG_OBJECT (dec, "Ignoring other custom event %" GST_PTR_FORMAT,
+        structure);
+    return FALSE;
+  }
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, "dvdsubdec", GST_RANK_NONE,
+          GST_TYPE_DVD_SUB_DEC) ||
+      !gst_element_register (plugin, "dvdsubparse", GST_RANK_NONE,
+          GST_TYPE_DVD_SUB_PARSE)) {
+    return FALSE;
+  }
+
+  GST_DEBUG_CATEGORY_INIT (gst_dvd_sub_dec_debug, "dvdsubdec", 0,
+      "DVD subtitle decoder");
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "dvdsub",
+    "DVD subtitle parser and decoder", plugin_init,
+    VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/dvdsub/gstdvdsubdec.h b/gst/dvdsub/gstdvdsubdec.h
new file mode 100644 (file)
index 0000000..52ea126
--- /dev/null
@@ -0,0 +1,100 @@
+/* GStreamer
+ * Copyright (C) <2005> Jan Schmidt <jan@fluendo.com>
+ * Copyright (C) <2002> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+
+#include <gst/gst.h>
+
+#define GST_TYPE_DVD_SUB_DEC             (gst_dvd_sub_dec_get_type())
+#define GST_DVD_SUB_DEC(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVD_SUB_DEC,GstDvdSubDec))
+#define GST_DVD_SUB_DEC_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVD_SUB_DEC,GstDvdSubDecClass))
+#define GST_IS_DVD_SUB_DEC(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVD_SUB_DEC))
+#define GST_IS_DVD_SUB_DEC_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVD_SUB_DEC))
+
+typedef struct _GstDvdSubDec GstDvdSubDec;
+typedef struct _GstDvdSubDecClass GstDvdSubDecClass;
+
+/* Hold premultimplied colour values */
+typedef struct Color_val
+{
+  guchar Y_R;
+  guchar U_G;
+  guchar V_B;
+  guchar A;
+
+} Color_val;
+
+struct _GstDvdSubDec
+{
+  GstElement element;
+
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  gint in_width, in_height;
+
+  /* Collect together subtitle buffers until we have a full control sequence */
+  GstBuffer *partialbuf;
+  gboolean have_title;
+
+  guchar subtitle_index[4];
+  guchar menu_index[4];
+  guchar subtitle_alpha[4];
+  guchar menu_alpha[4];
+
+  guint32 current_clut[16];
+  Color_val palette_cache_yuv[4];
+  Color_val hl_palette_cache_yuv[4];
+
+  Color_val palette_cache_rgb[4];
+  Color_val hl_palette_cache_rgb[4];
+
+  gboolean use_ARGB;
+  guint32 out_fourcc;
+  GstClockTime next_ts;
+
+  /*
+   * State info for the current subpicture
+   * buffer
+   */
+  guchar *parse_pos;
+
+  guint16 packet_size;
+  guint16 data_size;
+
+  gint offset[2];
+
+  gboolean forced_display;
+  gboolean visible;
+
+  gint left, top, right, bottom;
+  gint hl_left, hl_top, hl_right, hl_bottom;
+
+  gint current_button;
+
+  GstClockTime next_event_ts;
+
+  gboolean buf_dirty;
+};
+
+struct _GstDvdSubDecClass
+{
+  GstElementClass parent_class;
+};
+
+GType gst_dvd_sub_dec_get_type (void);
diff --git a/gst/dvdsub/gstdvdsubparse.c b/gst/dvdsub/gstdvdsubparse.c
new file mode 100644 (file)
index 0000000..42703a9
--- /dev/null
@@ -0,0 +1,234 @@
+/* GStreamer DVD subtitle parser
+ * Copyright (C) 2007 Mark Nauwelaerts <mnauw@users.sourceforge.net>
+ *
+ * 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 <string.h>
+#include <gst/gst.h>
+#include "gstdvdsubparse.h"
+
+GST_DEBUG_CATEGORY_STATIC (dvdsubparse_debug);
+#define GST_CAT_DEFAULT   dvdsubparse_debug
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-dvd-subpicture, parsed=(boolean)true")
+    );
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-dvd-subpicture")
+    );
+
+static void gst_dvd_sub_parse_finalize (GObject * object);
+
+static void gst_dvd_sub_parse_reset (GstDvdSubParse * parse);
+
+static gboolean gst_dvd_sub_parse_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_dvd_sub_parse_chain (GstPad * pad, GstBuffer * buf);
+
+static GstStateChangeReturn gst_dvd_sub_parse_change_state (GstElement *
+    element, GstStateChange transition);
+GST_BOILERPLATE (GstDvdSubParse, gst_dvd_sub_parse, GstElement,
+    GST_TYPE_ELEMENT);
+
+static void
+gst_dvd_sub_parse_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+
+  gst_element_class_set_details_simple (element_class, "DVD subtitle parser",
+      "Codec/Parser/Subtitle", "Parses and packetizes DVD subtitle streams",
+      "Mark Nauwelaerts <mnauw@users.sourceforge.net>");
+}
+
+static void
+gst_dvd_sub_parse_class_init (GstDvdSubParseClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->finalize = gst_dvd_sub_parse_finalize;
+
+  GST_DEBUG_CATEGORY_INIT (dvdsubparse_debug, "dvdsubparse", 0,
+      "DVD subtitle parser");
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_parse_change_state);
+}
+
+static void
+gst_dvd_sub_parse_finalize (GObject * object)
+{
+  GstDvdSubParse *parse = GST_DVD_SUB_PARSE (object);
+
+  g_object_unref (parse->adapter);
+  parse->adapter = NULL;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_dvd_sub_parse_init (GstDvdSubParse * parse, GstDvdSubParseClass * klass)
+{
+  parse->sinkpad = gst_pad_new_from_static_template (&sink_template, "sink");
+  gst_pad_set_chain_function (parse->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_parse_chain));
+  gst_pad_set_event_function (parse->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_dvd_sub_parse_event));
+  gst_element_add_pad (GST_ELEMENT (parse), parse->sinkpad);
+
+  parse->srcpad = gst_pad_new_from_static_template (&src_template, "src");
+  gst_pad_use_fixed_caps (parse->srcpad);
+  gst_pad_set_caps (parse->srcpad,
+      gst_static_pad_template_get_caps (&src_template));
+  gst_element_add_pad (GST_ELEMENT (parse), parse->srcpad);
+
+  /* remainder */
+  parse->adapter = gst_adapter_new ();
+  gst_dvd_sub_parse_reset (parse);
+}
+
+static void
+gst_dvd_sub_parse_reset (GstDvdSubParse * parse)
+{
+  parse->needed = 0;
+  parse->stamp = GST_CLOCK_TIME_NONE;
+  gst_adapter_clear (parse->adapter);
+}
+
+static gboolean
+gst_dvd_sub_parse_event (GstPad * pad, GstEvent * event)
+{
+  GstDvdSubParse *parse;
+  gboolean ret;
+
+  parse = GST_DVD_SUB_PARSE (gst_pad_get_parent (pad));
+
+  switch GST_EVENT_TYPE
+    (event) {
+    case GST_EVENT_FLUSH_STOP:
+      gst_dvd_sub_parse_reset (parse);
+      /* fall-through */
+    default:
+      ret = gst_pad_event_default (pad, event);
+      break;
+    }
+
+  gst_object_unref (parse);
+  return ret;
+}
+
+
+static GstFlowReturn
+gst_dvd_sub_parse_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstDvdSubParse *parse = GST_DVD_SUB_PARSE (GST_PAD_PARENT (pad));
+  GstAdapter *adapter;
+  GstBuffer *outbuf = NULL;
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  adapter = parse->adapter;
+
+  GST_LOG_OBJECT (parse, "%4u bytes, ts: %" GST_TIME_FORMAT,
+      GST_BUFFER_SIZE (buf), GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
+
+  gst_adapter_push (adapter, buf);
+
+  if (!parse->needed) {
+    const guint8 *data;
+
+    data = gst_adapter_peek (adapter, 2);
+    parse->needed = GST_READ_UINT16_BE (data);
+  }
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    if (GST_CLOCK_TIME_IS_VALID (parse->stamp))
+      /* normally, we expect only the first fragment to carry a timestamp */
+      GST_WARNING_OBJECT (parse, "Received more timestamps than expected.");
+    else
+      parse->stamp = GST_BUFFER_TIMESTAMP (buf);
+  }
+
+  if (parse->needed) {
+    guint av;
+
+    av = gst_adapter_available (adapter);
+    if (av >= parse->needed) {
+      if (av > parse->needed) {
+        /* normally, we expect several fragment, boundary aligned */
+        GST_WARNING_OBJECT (parse, "Unexpected: needed %d, "
+            "but more (%d) is available.", parse->needed, av);
+      }
+      outbuf = gst_adapter_take_buffer (adapter, parse->needed);
+      /* decorate buffer */
+      gst_buffer_set_caps (outbuf, GST_PAD_CAPS (parse->srcpad));
+      GST_BUFFER_TIMESTAMP (outbuf) = parse->stamp;
+      /* reset state */
+      parse->stamp = GST_CLOCK_TIME_NONE;
+      parse->needed = 0;
+      /* and send along */
+      ret = gst_pad_push (parse->srcpad, outbuf);
+    }
+  }
+
+  return ret;
+}
+
+static GstStateChangeReturn
+gst_dvd_sub_parse_change_state (GstElement * element, GstStateChange transition)
+{
+  GstDvdSubParse *parse = GST_DVD_SUB_PARSE (element);
+  GstStateChangeReturn ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+  if (ret != GST_STATE_CHANGE_SUCCESS)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_dvd_sub_parse_reset (parse);
+      break;
+    default:
+      break;
+  }
+
+  return GST_STATE_CHANGE_SUCCESS;
+}
diff --git a/gst/dvdsub/gstdvdsubparse.h b/gst/dvdsub/gstdvdsubparse.h
new file mode 100644 (file)
index 0000000..8bf8987
--- /dev/null
@@ -0,0 +1,65 @@
+/* GStreamer DVD subtitle parser
+ * Copyright (C) 2007 Mark Nauwelaerts <mnauw@users.sourceforge.net>
+ *
+ * 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_DVDSUBPARSE_H__
+#define __GST_DVDSUBPARSE_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DVD_SUB_PARSE \
+  (gst_dvd_sub_parse_get_type())
+#define GST_DVD_SUB_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_DVD_SUB_PARSE, GstDvdSubParse))
+#define GST_DVD_SUB_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_DVD_SUB_PARSE, GstDvdSubParseClass))
+#define GST_DVD_SUB_PARSE_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_DVD_SUB_PARSE, GstDvdSubParseClass))
+#define GST_IS_DVD_SUB_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_DVD_SUB_PARSE))
+#define GST_IS_DVD_SUB_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_DVD_SUB_PARSE))
+
+typedef struct _GstDvdSubParse GstDvdSubParse;
+typedef struct _GstDvdSubParseClass GstDvdSubParseClass;
+
+struct _GstDvdSubParse {
+  GstElement element;
+
+  /*< private >*/
+  GstPad       *srcpad;
+  GstPad       *sinkpad;
+
+  GstAdapter   *adapter;   /* buffer incoming data                   */
+  GstClockTime  stamp;     /* timestamp of current packet            */
+  guint         needed;    /* size of current packet to be assembled */
+};
+
+struct _GstDvdSubParseClass {
+  GstElementClass parent_class;
+};
+
+GType gst_dvd_sub_parse_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DVDSUBPARSE_H__ */
+
diff --git a/gst/iec958/Makefile.am b/gst/iec958/Makefile.am
new file mode 100644 (file)
index 0000000..b3e0406
--- /dev/null
@@ -0,0 +1,23 @@
+plugin_LTLIBRARIES = libgstiec958.la
+
+libgstiec958_la_SOURCES = ac3iec.c ac3_padder.c
+libgstiec958_la_CFLAGS = $(GST_CFLAGS)
+libgstiec958_la_LIBADD = $(GST_LIBS)
+libgstiec958_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstiec958_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = ac3_padder.h ac3iec.h 
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstiec958 -:SHARED libgstiec958 \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstiec958_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstiec958_la_CFLAGS) \
+        -:LDFLAGS $(libgstiec958_la_LDFLAGS) \
+                  $(libgstiec958_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/iec958/Makefile.in b/gst/iec958/Makefile.in
new file mode 100644 (file)
index 0000000..122a65b
--- /dev/null
@@ -0,0 +1,743 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/iec958
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstiec958_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libgstiec958_la_OBJECTS = libgstiec958_la-ac3iec.lo \
+       libgstiec958_la-ac3_padder.lo
+libgstiec958_la_OBJECTS = $(am_libgstiec958_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstiec958_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstiec958_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstiec958_la_CFLAGS) $(CFLAGS) \
+       $(libgstiec958_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstiec958_la_SOURCES)
+DIST_SOURCES = $(libgstiec958_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstiec958.la
+libgstiec958_la_SOURCES = ac3iec.c ac3_padder.c
+libgstiec958_la_CFLAGS = $(GST_CFLAGS)
+libgstiec958_la_LIBADD = $(GST_LIBS)
+libgstiec958_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstiec958_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = ac3_padder.h ac3iec.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/iec958/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/iec958/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
+libgstiec958.la: $(libgstiec958_la_OBJECTS) $(libgstiec958_la_DEPENDENCIES) $(EXTRA_libgstiec958_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstiec958_la_LINK) -rpath $(plugindir) $(libgstiec958_la_OBJECTS) $(libgstiec958_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstiec958_la-ac3_padder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstiec958_la-ac3iec.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstiec958_la-ac3iec.lo: ac3iec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstiec958_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstiec958_la_CFLAGS) $(CFLAGS) -MT libgstiec958_la-ac3iec.lo -MD -MP -MF $(DEPDIR)/libgstiec958_la-ac3iec.Tpo -c -o libgstiec958_la-ac3iec.lo `test -f 'ac3iec.c' || echo '$(srcdir)/'`ac3iec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstiec958_la-ac3iec.Tpo $(DEPDIR)/libgstiec958_la-ac3iec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ac3iec.c' object='libgstiec958_la-ac3iec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstiec958_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstiec958_la_CFLAGS) $(CFLAGS) -c -o libgstiec958_la-ac3iec.lo `test -f 'ac3iec.c' || echo '$(srcdir)/'`ac3iec.c
+
+libgstiec958_la-ac3_padder.lo: ac3_padder.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstiec958_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstiec958_la_CFLAGS) $(CFLAGS) -MT libgstiec958_la-ac3_padder.lo -MD -MP -MF $(DEPDIR)/libgstiec958_la-ac3_padder.Tpo -c -o libgstiec958_la-ac3_padder.lo `test -f 'ac3_padder.c' || echo '$(srcdir)/'`ac3_padder.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstiec958_la-ac3_padder.Tpo $(DEPDIR)/libgstiec958_la-ac3_padder.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ac3_padder.c' object='libgstiec958_la-ac3_padder.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstiec958_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstiec958_la_CFLAGS) $(CFLAGS) -c -o libgstiec958_la-ac3_padder.lo `test -f 'ac3_padder.c' || echo '$(srcdir)/'`ac3_padder.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstiec958 -:SHARED libgstiec958 \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstiec958_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstiec958_la_CFLAGS) \
+        -:LDFLAGS $(libgstiec958_la_LDFLAGS) \
+                  $(libgstiec958_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/iec958/ac3_padder.c b/gst/iec958/ac3_padder.c
new file mode 100644 (file)
index 0000000..21dc4ef
--- /dev/null
@@ -0,0 +1,394 @@
+/* GStreamer
+ * Copyright (C) 2003, 2004 Martin Soto <martinsoto@users.sourceforge.net>
+ *               2005 Michael Smith <msmith@fluendo.com>
+ *
+ * ac3_padder.c: Pad AC3 frames for use with an SPDIF interface.
+ *
+ * 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.
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "ac3_padder.h"
+
+struct frmsize_s
+{
+  unsigned short bit_rate;
+  unsigned short frm_size[3];
+};
+
+static const struct frmsize_s frmsizecod_tbl[] = {
+  {32, {64, 69, 96}},
+  {32, {64, 70, 96}},
+  {40, {80, 87, 120}},
+  {40, {80, 88, 120}},
+  {48, {96, 104, 144}},
+  {48, {96, 105, 144}},
+  {56, {112, 121, 168}},
+  {56, {112, 122, 168}},
+  {64, {128, 139, 192}},
+  {64, {128, 140, 192}},
+  {80, {160, 174, 240}},
+  {80, {160, 175, 240}},
+  {96, {192, 208, 288}},
+  {96, {192, 209, 288}},
+  {112, {224, 243, 336}},
+  {112, {224, 244, 336}},
+  {128, {256, 278, 384}},
+  {128, {256, 279, 384}},
+  {160, {320, 348, 480}},
+  {160, {320, 349, 480}},
+  {192, {384, 417, 576}},
+  {192, {384, 418, 576}},
+  {224, {448, 487, 672}},
+  {224, {448, 488, 672}},
+  {256, {512, 557, 768}},
+  {256, {512, 558, 768}},
+  {320, {640, 696, 960}},
+  {320, {640, 697, 960}},
+  {384, {768, 835, 1152}},
+  {384, {768, 836, 1152}},
+  {448, {896, 975, 1344}},
+  {448, {896, 976, 1344}},
+  {512, {1024, 1114, 1536}},
+  {512, {1024, 1115, 1536}},
+  {576, {1152, 1253, 1728}},
+  {576, {1152, 1254, 1728}},
+  {640, {1280, 1393, 1920}},
+  {640, {1280, 1394, 1920}}
+};
+
+static const guint16 ac3_crc_lut[256] = {
+  0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011,
+  0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022,
+  0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072,
+  0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041,
+  0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2,
+  0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1,
+  0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1,
+  0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082,
+  0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192,
+  0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1,
+  0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1,
+  0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2,
+  0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151,
+  0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162,
+  0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132,
+  0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101,
+  0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312,
+  0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321,
+  0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371,
+  0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342,
+  0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1,
+  0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2,
+  0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2,
+  0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381,
+  0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291,
+  0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2,
+  0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2,
+  0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1,
+  0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252,
+  0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261,
+  0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231,
+  0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202
+};
+
+static gint ac3_sample_rates[] = { 48000, 44100, 32000, -1 };
+
+typedef guint16 ac3_crc_state;
+
+static void
+ac3_crc_init (ac3_crc_state * state)
+{
+  *state = 0;
+}
+
+static void
+ac3_crc_update (ac3_crc_state * state, guint8 * data, guint32 num_bytes)
+{
+  int i;
+
+  for (i = 0; i < num_bytes; i++)
+    *state = ac3_crc_lut[data[i] ^ (*state >> 8)] ^ (*state << 8);
+}
+
+static int
+ac3_crc_validate (ac3_crc_state * state)
+{
+  return (*state == 0);
+}
+
+/**
+ * ac3p_init
+ * @padder: The padder structure to initialize.
+ *
+ * Initializes an AC3 stream padder.  This structure can be
+ * subsequently used to parse an AC3 stream and convert it to IEC958
+ * (S/PDIF) padded packets.
+ */
+void
+ac3p_init (ac3_padder * padder)
+{
+  const guint8 sync[4] = { 0xF8, 0x72, 0x4E, 0x1F };
+
+  padder->state = AC3P_STATE_SYNC1;
+
+  padder->skipped = 0;
+
+  /* No material to read yet. */
+  padder->buffer = NULL;
+  padder->buffer_end = 0;
+  padder->buffer_cur = 0;
+  padder->buffer_size = 0;
+
+  /* Initialize the sync bytes in the frame. */
+  memcpy (padder->frame.header, sync, 4);
+}
+
+void
+ac3p_clear (ac3_padder * padder)
+{
+  g_free (padder->buffer);
+}
+
+static void
+resync (ac3_padder * padder, int offset, int skipped)
+{
+  padder->buffer_cur -= offset;
+  padder->state = AC3P_STATE_SYNC1;
+  padder->skipped += skipped;
+
+  /* We don't want our buffer to grow unboundedly if we fail to find sync, but
+   * nor do we want to do this every time we call resync() */
+  if (padder->buffer_cur > 4096) {
+    memmove (padder->buffer, padder->buffer + padder->buffer_cur,
+        padder->buffer_end - padder->buffer_cur);
+    padder->buffer_end -= padder->buffer_cur;
+    padder->buffer_cur = 0;
+  }
+}
+
+/**
+ * ac3_push_data:
+ * @padder: The padder structure.
+ * @data: A pointer to a buffer with new data to parse.  This should 
+ * correspond to a new piece of a stream containing raw AC3 data.
+ * @size: The number of available bytes in the buffer.
+ *
+ * Pushes a new buffer of data to be parsed by the ac3 padder.  The
+ * ac3_parse() function will actually parse the data and report when
+ * new frames are found.  This funcion should only be called once at
+ * the beginning of the parsing process, or when the ac3_parse()
+ * function returns the %AC3P_EVENT_PUSH event.
+ */
+extern void
+ac3p_push_data (ac3_padder * padder, guchar * data, guint size)
+{
+  if (padder->buffer_end + size > padder->buffer_size) {
+    padder->buffer_size = padder->buffer_end + size;
+    padder->buffer = g_realloc (padder->buffer, padder->buffer_size);
+  }
+
+  memcpy (padder->buffer + padder->buffer_end, data, size);
+  padder->buffer_end += size;
+}
+
+/**
+ * ac3p_parse:
+ * @padder: The padder structure.
+ * 
+ * Parses the bytes already pushed into the padder structure (see
+ * ac3p_push_data()) and returns an event value depending on the
+ * results of the parsing.
+ *
+ * Returns: %AC3P_EVENT_FRAME to indicate that a new AC3 was found and
+ * padded for IEC958 transmission.  This frame can be read inmediatly
+ * with ac3p_frame(). %AC3P_EVENT_PUSH to indicate that new data from
+ * the input stream must be pushed into the padder using
+ * ac3p_push_data().  This function should be called again after
+ * pushing the data.
+ *
+ * Note that the returned data (which naturally comes in 16 bit sub-frames) is
+ * big-endian, and may need to be byte-swapped for little-endian output.
+ */
+extern int
+ac3p_parse (ac3_padder * padder)
+{
+  while (padder->buffer_cur < padder->buffer_end) {
+    switch (padder->state) {
+      case AC3P_STATE_SYNC1:
+        if (padder->buffer[padder->buffer_cur++] == 0x0b) {
+          /* The first sync byte was found.  Go to the next state. */
+          padder->frame.sync_byte1 = 0x0b;
+          padder->state = AC3P_STATE_SYNC2;
+        } else
+          resync (padder, 0, 1);
+        break;
+
+      case AC3P_STATE_SYNC2:
+        if (padder->buffer[padder->buffer_cur++] == 0x77) {
+          /* The second sync byte was seen right after the first.  Go to
+             the next state. */
+          padder->frame.sync_byte2 = 0x77;
+          padder->state = AC3P_STATE_HEADER;
+
+          /* Prepare for reading the header. */
+          padder->out_ptr = (guchar *) & (padder->frame.crc1);
+          /* Discount the 2 sync bytes from the header size. */
+          padder->bytes_to_copy = AC3P_AC3_HEADER_SIZE - 2;
+        } else {
+          /* The second sync byte was not seen.  Go back to the
+             first state. */
+          resync (padder, 0, 2);
+        }
+        break;
+
+      case AC3P_STATE_HEADER:
+        if (padder->bytes_to_copy > 0) {
+          /* Copy one byte. */
+          *(padder->out_ptr++) = padder->buffer[padder->buffer_cur++];
+          padder->bytes_to_copy--;
+        } else {
+          int fscod;
+
+          /* The header is ready: */
+
+          fscod = (padder->frame.code >> 6) & 0x03;
+
+          /* fscod == 3 is a reserved code, we're not meant to do playback in
+           * this case. frmsizecod being out-of-range (there are 38 entries) 
+           * doesn't appear to be well-defined, but treat the same. 
+           * The likely cause of both of these is false sync, so skip back to 
+           * just in front of the previous sync word and start looking again.
+           */
+          if (fscod == 3 || (padder->frame.code & 0x3f) >= 38) {
+            resync (padder, AC3P_AC3_HEADER_SIZE - 2, 2);
+            continue;
+          }
+
+          padder->rate = ac3_sample_rates[fscod];
+
+          /* Calculate the frame size (in 16 bit units). */
+          padder->ac3_frame_size =
+              frmsizecod_tbl[padder->frame.code & 0x3f].frm_size[fscod];
+
+          /* Prepare for reading the body. */
+          padder->bytes_to_copy = padder->ac3_frame_size * 2
+              - AC3P_AC3_HEADER_SIZE;
+
+          padder->state = AC3P_STATE_CONTENT;
+        }
+        break;
+
+      case AC3P_STATE_CONTENT:
+        if (padder->bytes_to_copy > 0) {
+          /* Copy one byte. */
+          *(padder->out_ptr++) = padder->buffer[padder->buffer_cur++];
+          padder->bytes_to_copy--;
+        } else {
+          int framesize;
+          int crclen1, crclen2;
+          guint8 *tmp;
+          ac3_crc_state state;
+
+          /* Frame ready.  Prepare for output: */
+
+          /* Zero the non AC3 portion of the padded frame. */
+          memset (&(padder->frame.sync_byte1) + padder->ac3_frame_size * 2, 0,
+              AC3P_IEC_FRAME_SIZE - AC3P_IEC_HEADER_SIZE -
+              padder->ac3_frame_size * 2);
+
+          /* Now checking the two CRCs. If either fails, then we re-feed all
+           * the data starting immediately after the 16-bit syncword (which we
+           * can now assume was a false sync) */
+
+          /* Length of CRC1 is defined as 
+             truncate(framesize/2) + truncate(framesize/8) 
+             units (each of which is 16 bit, as is 'framesize'), but this 
+             includes the syncword, which is NOT calculated as part of 
+             the CRC. 
+           */
+          framesize = padder->ac3_frame_size;
+          crclen1 = (framesize / 2 + framesize / 8) * 2 - 2;
+          tmp = (guint8 *) (&(padder->frame.crc1));
+
+          ac3_crc_init (&state);
+          ac3_crc_update (&state, tmp, crclen1);
+
+          if (!ac3_crc_validate (&state)) {
+            /* Rewind current stream pointer to immediately following the last 
+             * attempted sync point, then continue parsing in initial state */
+            resync (padder, padder->ac3_frame_size - 2, 2);
+            continue;
+          }
+
+          /* Now check CRC2, which covers the entire frame other than the 
+           * 16-bit syncword */
+          crclen2 = padder->ac3_frame_size * 2 - 2;
+
+          ac3_crc_init (&state);
+          ac3_crc_update (&state, tmp, crclen2);
+
+          if (!ac3_crc_validate (&state)) {
+            /* Rewind current stream pointer to immediately following the last 
+             * attempted sync point, then continue parsing in initial state */
+            resync (padder, padder->ac3_frame_size - 2, 2);
+            continue;
+          }
+
+          /* Now set up the rest of the IEC header (we already filled in the 
+             32 bit sync word. */
+
+          /* Byte 5 has:
+             bits 0-4: data type dependent. For AC3, the bottom 3 of these bits
+             are copied from the AC3 frame (bsmod value), the top 2
+             bits are reserved, and set to zero.
+             bits 5-7: data stream number. We only do one data stream, so it's
+             zero.
+           */
+          padder->frame.header[4] = padder->frame.bsidmod & 0x07;
+
+          /* Byte 6:
+             bits 0-4: data type. 1 for AC3.
+             bits 5-6: reserved, zero.
+             bit  7:   error_flag. Zero if frame contains no errors
+           */
+          padder->frame.header[5] = 1;  /* AC3 is defined as datatype 1 */
+
+          /* Now, 16 bit frame size, in bits. */
+          padder->frame.header[6] = ((padder->ac3_frame_size * 16) >> 8) & 0xFF;
+          padder->frame.header[7] = (padder->ac3_frame_size * 16) & 0xFF;
+
+          /* We're done, reset state and signal that we have a frame */
+          padder->skipped = 0;
+          padder->state = AC3P_STATE_SYNC1;
+
+          memmove (padder->buffer, padder->buffer + padder->buffer_cur,
+              padder->buffer_end - padder->buffer_cur);
+          padder->buffer_end -= padder->buffer_cur;
+          padder->buffer_cur = 0;
+
+          return AC3P_EVENT_FRAME;
+        }
+
+        break;
+    }
+  }
+
+  return AC3P_EVENT_PUSH;
+
+}
diff --git a/gst/iec958/ac3_padder.h b/gst/iec958/ac3_padder.h
new file mode 100644 (file)
index 0000000..0c10f36
--- /dev/null
@@ -0,0 +1,139 @@
+/* GStreamer
+ * Copyright (C) 2003 Martin Soto <martinsoto@users.sourceforge.net>
+ *
+ * ac3_padder.h: Pad AC3 frames for use with an SPDIF interface. 
+ *
+ * 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 AC3_PADDER_INC
+#define AC3_PADDER_INC
+
+#include <glib.h>
+
+
+/* Size of an IEC958 padded AC3 frame. */
+#define AC3P_IEC_FRAME_SIZE 6144
+/* Size of the IEC958 header. */
+#define AC3P_IEC_HEADER_SIZE 8
+/* Size of the AC3 header. */
+#define AC3P_AC3_HEADER_SIZE 7
+
+
+/* An IEC958 padded AC3 frame. */
+typedef struct {
+  /* IEC header. */
+  guchar header[AC3P_IEC_HEADER_SIZE];
+
+  /* Begin of AC3 header. */
+  guchar sync_byte1;
+  guchar sync_byte2;
+
+  guchar crc1[2];
+  guchar code;
+  guchar bsidmod;
+  guchar acmod;
+  /* End of AC3 header. */
+  
+  unsigned char data[AC3P_IEC_FRAME_SIZE - AC3P_IEC_HEADER_SIZE 
+                     - AC3P_AC3_HEADER_SIZE];
+} ac3p_iec958_burst_frame;
+
+
+/* Possible states for the reading automaton: */
+
+/* Searching for sync byte 1. */
+#define AC3P_STATE_SYNC1 1
+/* Searching for sync byte 2. */
+#define AC3P_STATE_SYNC2 2
+/* Reading AC3 header. */
+#define AC3P_STATE_HEADER 3
+/* Reading packet contents.*/
+#define AC3P_STATE_CONTENT 4
+
+
+/* Events generated by the parse function: */
+
+/* The parser needs new data to be pushed. */
+#define AC3P_EVENT_PUSH 1
+/* There is a new padded frame ready to read from the padder structure. */
+#define AC3P_EVENT_FRAME 2
+
+
+/* The internal state for the padder. */
+typedef struct {
+  guint state;       /* State of the reading automaton. */
+
+  guchar *buffer;    /* Input buffer */
+
+  gint buffer_end;   /* End offset, in bytes, of currently valid data in
+                        buffer */
+
+  gint buffer_size;  /* Allocated size of buffer */
+
+  gint buffer_cur;   /* Current position in buffer */
+
+  guchar *out_ptr;   /* Output pointer, marking the current
+                        position in the output frame. */
+  gint bytes_to_copy;
+                     /* Number of bytes that still must be copied
+                        to the output frame *during this reading
+                        stage*. */
+
+  gint ac3_frame_size;
+                     /* The size in 16-bit units of the pure AC3 portion
+                        of the current frame. */
+
+  gint skipped;      /* Number of bytes skipped while trying to find sync */
+
+  gint rate;         /* Sample rate of ac3 data */
+
+  ac3p_iec958_burst_frame frame;
+                     /* The current output frame. */
+} ac3_padder;
+
+
+
+extern void
+ac3p_init(ac3_padder *padder);
+
+extern void
+ac3p_clear(ac3_padder *padder);
+
+extern void
+ac3p_push_data(ac3_padder *padder, guchar *data, guint size);
+
+extern int
+ac3p_parse(ac3_padder *padder);
+
+
+/**
+ * ac3p_frame
+ * @padder: The padder structure.
+ *
+ * Returns: a pointer to the padded frame contained in the padder.
+ */
+#define ac3p_frame(padder) ((guint8 *) &((padder)->frame))
+
+/**
+ * ac3p_frame_size
+ * @padder: The padder structure.
+ *
+ * Returns: the length in bytes of the last read raw AC3 frame.
+ */
+#define ac3p_frame_size(padder) ((padder)->ac3_frame_size * 2)
+
+#endif
diff --git a/gst/iec958/ac3iec.c b/gst/iec958/ac3iec.c
new file mode 100644 (file)
index 0000000..f944380
--- /dev/null
@@ -0,0 +1,463 @@
+/* GStreamer
+ * Copyright (C) 2004 Martin Soto <martinsoto@users.sourceforge.net>
+                 2005 Michael Smith <msmith@fluendo.com>
+ *
+ * ac3iec.c: Pad AC3 frames into IEC958 frames for the S/PDIF interface.
+ *
+ * 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 <string.h>
+
+#include <gst/gst.h>
+
+#include "ac3iec.h"
+
+
+GST_DEBUG_CATEGORY_STATIC (ac3iec_debug);
+#define GST_CAT_DEFAULT (ac3iec_debug)
+
+
+/* The duration of a single IEC958 frame. */
+#define IEC958_FRAME_DURATION (32 * GST_MSECOND)
+
+/* AC3IEC signals and args */
+enum
+{
+  LAST_SIGNAL,
+};
+
+enum
+{
+  PROP_0,
+  PROP_RAW_AUDIO,
+};
+
+
+static GstStaticPadTemplate ac3iec_sink_template =
+    GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-private1-ac3; audio/x-ac3; audio/ac3")
+    );
+
+/* Two different output caps are possible. */
+#define NORMAL_CAPS_DEF "audio/x-iec958, rate = (int){32000, 44100, 48000}"
+#define RAW_AUDIO_CAPS_DEF "audio/x-raw-int, " \
+    "endianness = (int) " G_STRINGIFY (G_BIG_ENDIAN) ", " \
+    "signed = (boolean) true, " \
+    "width = (int) 16, " \
+    "depth = (int) 16, " \
+    "rate = (int){32000, 44100, 48000}, " \
+    "channels = (int) 2"
+
+static GstStaticCaps normal_caps = GST_STATIC_CAPS (NORMAL_CAPS_DEF);
+static GstStaticCaps raw_audio_caps = GST_STATIC_CAPS (RAW_AUDIO_CAPS_DEF);
+
+static GstStaticPadTemplate ac3iec_src_template =
+    GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (NORMAL_CAPS_DEF ";" RAW_AUDIO_CAPS_DEF));
+
+static void ac3iec_base_init (gpointer g_class);
+static void ac3iec_class_init (AC3IECClass * klass);
+static void ac3iec_init (AC3IEC * ac3iec);
+static void ac3iec_finalize (GObject * object);
+
+static void ac3iec_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+static void ac3iec_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+
+static gboolean ac3iec_setcaps (GstPad * pad, GstCaps * caps);
+static GstFlowReturn ac3iec_chain_dvd (GstPad * pad, GstBuffer * buf);
+static GstFlowReturn ac3iec_chain_raw (GstPad * pad, GstBuffer * buf);
+
+static GstStateChangeReturn ac3iec_change_state (GstElement * element,
+    GstStateChange transition);
+
+
+static GstElementClass *parent_class = NULL;
+
+/* static guint ac3iec_signals[LAST_SIGNAL] = { 0 }; */
+
+
+GType
+ac3iec_get_type (void)
+{
+  static GType ac3iec_type = 0;
+
+  if (!ac3iec_type) {
+    static const GTypeInfo ac3iec_info = {
+      sizeof (AC3IECClass),
+      ac3iec_base_init,
+      NULL,
+      (GClassInitFunc) ac3iec_class_init,
+      NULL,
+      NULL,
+      sizeof (AC3IEC),
+      0,
+      (GInstanceInitFunc) ac3iec_init,
+    };
+    ac3iec_type = g_type_register_static (GST_TYPE_ELEMENT,
+        "AC3IEC", &ac3iec_info, 0);
+
+    GST_DEBUG_CATEGORY_INIT (ac3iec_debug, "ac3iec", 0,
+        "AC3 to IEC958 padding element");
+  }
+  return ac3iec_type;
+}
+
+static void
+ac3iec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_set_details_simple (element_class, "AC3 to IEC958 filter",
+      "Codec/Muxer/Audio",
+      "Pads AC3 frames into IEC958 frames suitable for a raw S/PDIF interface",
+      "Martin Soto <martinsoto@users.sourceforge.net>");
+  gst_element_class_add_static_pad_template (element_class,
+      &ac3iec_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &ac3iec_src_template);
+}
+
+
+static void
+ac3iec_class_init (AC3IECClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->set_property = ac3iec_set_property;
+  gobject_class->get_property = ac3iec_get_property;
+  gobject_class->finalize = ac3iec_finalize;
+
+  g_object_class_install_property (gobject_class, PROP_RAW_AUDIO,
+      g_param_spec_boolean ("raw-audio", "raw-audio",
+          "If true, source pad caps are set to raw audio.",
+          FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gstelement_class->change_state = ac3iec_change_state;
+}
+
+
+static void
+ac3iec_init (AC3IEC * ac3iec)
+{
+  ac3iec->sink =
+      gst_pad_new_from_static_template (&ac3iec_sink_template, "sink");
+  gst_pad_set_setcaps_function (ac3iec->sink, ac3iec_setcaps);
+  gst_pad_set_chain_function (ac3iec->sink, ac3iec_chain_dvd);
+  gst_element_add_pad (GST_ELEMENT (ac3iec), ac3iec->sink);
+
+  ac3iec->src = gst_pad_new_from_static_template (&ac3iec_src_template, "src");
+  gst_pad_use_fixed_caps (ac3iec->src);
+  gst_element_add_pad (GST_ELEMENT (ac3iec), ac3iec->src);
+
+  ac3iec->cur_ts = GST_CLOCK_TIME_NONE;
+
+  ac3iec->padder = g_malloc (sizeof (ac3_padder));
+}
+
+
+static void
+ac3iec_finalize (GObject * object)
+{
+  AC3IEC *ac3iec = AC3IEC (object);
+
+  g_free (ac3iec->padder);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+ac3iec_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  AC3IEC *ac3iec = AC3IEC (object);
+
+  switch (prop_id) {
+    case PROP_RAW_AUDIO:
+    {
+      ac3iec->raw_audio = g_value_get_boolean (value);
+      break;
+    }
+    default:
+      break;
+  }
+}
+
+static gboolean
+ac3iec_setcaps (GstPad * pad, GstCaps * caps)
+{
+  AC3IEC *ac3iec = AC3IEC (gst_pad_get_parent (pad));
+  GstStructure *structure = gst_caps_get_structure (caps, 0);
+
+  if (structure && gst_structure_has_name (structure, "audio/x-private1-ac3"))
+    ac3iec->dvdmode = TRUE;
+  else
+    ac3iec->dvdmode = FALSE;
+
+  gst_object_unref (ac3iec);
+
+  return TRUE;
+}
+
+static void
+ac3iec_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  AC3IEC *ac3iec = AC3IEC (object);
+
+  switch (prop_id) {
+    case PROP_RAW_AUDIO:
+      g_value_set_boolean (value, ac3iec->raw_audio);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstFlowReturn
+ac3iec_chain_dvd (GstPad * pad, GstBuffer * buf)
+{
+  guint first_access;
+  guint8 *data;
+  guint size;
+  gint offset;
+  gint len;
+  GstBuffer *subbuf;
+  GstFlowReturn ret;
+  AC3IEC *ac3iec = AC3IEC (gst_pad_get_parent (pad));
+
+  if (ac3iec->dvdmode) {
+    size = GST_BUFFER_SIZE (buf);
+    data = GST_BUFFER_DATA (buf);
+
+    first_access = (data[0] << 8) | data[1];
+
+    /* Skip the first_access header */
+    offset = 2;
+
+    if (first_access > 1) {
+      /* Length of data before first_access */
+      len = first_access - 1;
+
+      /* Ensure we don't crash if fed totally invalid data */
+      if (offset + len > size) {
+        ret = GST_FLOW_ERROR;
+        goto done;
+      }
+
+      if (len > 0) {
+        subbuf = gst_buffer_create_sub (buf, offset, len);
+        GST_BUFFER_TIMESTAMP (subbuf) = GST_CLOCK_TIME_NONE;
+        ret = ac3iec_chain_raw (pad, subbuf);
+        if (ret != GST_FLOW_OK)
+          goto done;
+      }
+
+      offset += len;
+      len = size - offset;
+
+      subbuf = gst_buffer_create_sub (buf, offset, len);
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_BUFFER_TIMESTAMP (buf);
+
+      ret = ac3iec_chain_raw (pad, subbuf);
+    } else {
+      /* Ensure we don't crash if fed totally invalid data */
+      if (size < 2) {
+        ret = GST_FLOW_ERROR;
+        goto done;
+      }
+
+      /* No first_access, so no timestamp */
+      subbuf = gst_buffer_create_sub (buf, offset, size - offset);
+      GST_BUFFER_TIMESTAMP (subbuf) = GST_CLOCK_TIME_NONE;
+      ret = ac3iec_chain_raw (pad, subbuf);
+    }
+  } else {
+    ret = ac3iec_chain_raw (pad, buf);
+    gst_object_unref (ac3iec);
+    return ret;
+  }
+
+done:
+  gst_object_unref (ac3iec);
+  gst_buffer_unref (buf);
+
+  return ret;
+}
+
+static GstFlowReturn
+ac3iec_chain_raw (GstPad * pad, GstBuffer * buf)
+{
+  GstBuffer *new;
+  AC3IEC *ac3iec;
+  int event;
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
+  g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
+  g_return_val_if_fail (buf != NULL, GST_FLOW_ERROR);
+
+  ac3iec = AC3IEC (gst_pad_get_parent (pad));
+
+  if (GST_BUFFER_TIMESTAMP (buf) != GST_CLOCK_TIME_NONE) {
+    /* Whoever tells me why it is necessary to add a frame in order to
+       get synchronized sound will get a beer from me. */
+    ac3iec->cur_ts = GST_BUFFER_TIMESTAMP (buf) + IEC958_FRAME_DURATION;
+  }
+
+  /* Push the new data into the padder. */
+  ac3p_push_data (ac3iec->padder, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
+
+  /* Parse the data. */
+  event = ac3p_parse (ac3iec->padder);
+  while (event != AC3P_EVENT_PUSH) {
+    if (event == AC3P_EVENT_FRAME) {
+      GstCaps *bufcaps = NULL;
+
+      if (ac3iec->caps == NULL) {
+        gint rate = ac3iec->padder->rate;
+
+        if (ac3iec->raw_audio) {
+          ac3iec->caps =
+              gst_caps_make_writable (gst_static_caps_get (&raw_audio_caps));
+        } else {
+          ac3iec->caps =
+              gst_caps_make_writable (gst_static_caps_get (&normal_caps));
+        }
+        gst_structure_set (gst_caps_get_structure (ac3iec->caps, 0), "rate",
+            G_TYPE_INT, rate, NULL);
+        gst_pad_set_caps (ac3iec->src, ac3iec->caps);
+      }
+
+      /* We have a new frame: */
+      bufcaps = GST_PAD_CAPS (ac3iec->src);
+
+      /* Create a new buffer, and copy the frame data into it. */
+      ret =
+          gst_pad_alloc_buffer_and_set_caps (ac3iec->src, 0,
+          AC3P_IEC_FRAME_SIZE, bufcaps, &new);
+      if (ret != GST_FLOW_OK)
+        goto buffer_alloc_failed;
+
+      memcpy (GST_BUFFER_DATA (new), ac3p_frame (ac3iec->padder),
+          AC3P_IEC_FRAME_SIZE);
+
+      /* Set the timestamp. */
+      GST_BUFFER_TIMESTAMP (new) = ac3iec->cur_ts;
+      GST_BUFFER_DURATION (new) = IEC958_FRAME_DURATION;
+      ac3iec->cur_ts = GST_CLOCK_TIME_NONE;
+
+      GST_LOG_OBJECT (ac3iec, "Pushing IEC958 buffer of size %d",
+          GST_BUFFER_SIZE (new));
+      /* Push the buffer to the source pad. */
+      ret = gst_pad_push (ac3iec->src, new);
+    }
+
+    event = ac3p_parse (ac3iec->padder);
+  }
+
+  gst_buffer_unref (buf);
+
+done:
+  gst_object_unref (ac3iec);
+
+  return ret;
+
+buffer_alloc_failed:
+  gst_buffer_unref (buf);
+  goto done;
+
+}
+
+
+static GstStateChangeReturn
+ac3iec_change_state (GstElement * element, GstStateChange transition)
+{
+  AC3IEC *ac3iec;
+  GstStateChangeReturn ret;
+
+  g_return_val_if_fail (GST_IS_AC3IEC (element), GST_STATE_CHANGE_FAILURE);
+
+  ac3iec = AC3IEC (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      ac3p_init (ac3iec->padder);
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      ac3p_clear (ac3iec->padder);
+      if (ac3iec->caps) {
+        gst_caps_unref (ac3iec->caps);
+        ac3iec->caps = NULL;
+      }
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, "ac3iec958", GST_RANK_NONE,
+          GST_TYPE_AC3IEC)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "iec958",
+    "Convert raw AC3 into IEC958 (S/PDIF) frames",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/iec958/ac3iec.h b/gst/iec958/ac3iec.h
new file mode 100644 (file)
index 0000000..45c9a72
--- /dev/null
@@ -0,0 +1,88 @@
+/* GStreamer
+ * Copyright (C) 2004 Martin Soto <martinsoto@users.sourceforge.net>
+ *
+ * ac3iec.h: Pad AC3 frames into IEC958 frames for the SP/DIF interface.
+ *
+ * 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 __AC3IEC_H__
+#define __AC3IEC_H__
+
+#include <gst/gst.h>
+
+#include "ac3_padder.h"
+
+G_BEGIN_DECLS
+
+
+#define GST_TYPE_AC3IEC \
+  (ac3iec_get_type())
+#define AC3IEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AC3IEC,AC3IEC))
+#define AC3IEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AC3IEC,AC3IECClass))
+#define GST_IS_AC3IEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AC3IEC))
+#define GST_IS_AC3IEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AC3IEC))
+
+
+typedef struct _AC3IEC AC3IEC;
+typedef struct _AC3IECClass AC3IECClass;
+
+
+typedef enum {
+  AC3IEC_OPEN           = (GST_ELEMENT_FLAG_LAST << 0),
+  AC3IEC_FLAG_LAST      = (GST_ELEMENT_FLAG_LAST << 2)
+} Ac3iecFlags;
+
+
+struct _AC3IEC {
+  GstElement element;
+
+  GstPad *sink;
+  GstPad *src;
+
+  GstCaps *caps;                /* source pad caps, once known */
+
+  GstClockTime cur_ts;          /* Time stamp for the current
+                                   frame. */
+  GstClockTime next_ts;         /* Time stamp for the next frame. */
+
+  ac3_padder *padder;           /* AC3 to SPDIF padder object. */
+
+  gboolean dvdmode;            /* TRUE if DVD mode (input is
+                                  demultiplexed from a DVD) is
+                                  active. */
+
+  gboolean raw_audio;          /* TRUE if output pad should use raw
+                                  audio capabilities. */
+};
+
+
+struct _AC3IECClass {
+  GstElementClass parent_class;
+
+  /* Signals */
+};
+
+
+extern GType    ac3iec_get_type         (void);
+
+G_END_DECLS
+
+#endif /* __AC3IEC_H__ */
diff --git a/gst/mpegaudioparse/Makefile.am b/gst/mpegaudioparse/Makefile.am
new file mode 100644 (file)
index 0000000..61a00bd
--- /dev/null
@@ -0,0 +1,23 @@
+plugin_LTLIBRARIES = libgstmpegaudioparse.la
+
+libgstmpegaudioparse_la_SOURCES = plugin.c gstmpegaudioparse.c gstxingmux.c
+libgstmpegaudioparse_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstmpegaudioparse_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS)
+libgstmpegaudioparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpegaudioparse_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstmpegaudioparse.h gstxingmux.h
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmpegaudioparse -:SHARED libgstmpegaudioparse \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmpegaudioparse_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmpegaudioparse_la_CFLAGS) \
+        -:LDFLAGS $(libgstmpegaudioparse_la_LDFLAGS) \
+                  $(libgstmpegaudioparse_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/mpegaudioparse/Makefile.in b/gst/mpegaudioparse/Makefile.in
new file mode 100644 (file)
index 0000000..d6e51ac
--- /dev/null
@@ -0,0 +1,755 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/mpegaudioparse
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstmpegaudioparse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libgstmpegaudioparse_la_OBJECTS =  \
+       libgstmpegaudioparse_la-plugin.lo \
+       libgstmpegaudioparse_la-gstmpegaudioparse.lo \
+       libgstmpegaudioparse_la-gstxingmux.lo
+libgstmpegaudioparse_la_OBJECTS =  \
+       $(am_libgstmpegaudioparse_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstmpegaudioparse_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(libgstmpegaudioparse_la_CFLAGS) \
+       $(CFLAGS) $(libgstmpegaudioparse_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstmpegaudioparse_la_SOURCES)
+DIST_SOURCES = $(libgstmpegaudioparse_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstmpegaudioparse.la
+libgstmpegaudioparse_la_SOURCES = plugin.c gstmpegaudioparse.c gstxingmux.c
+libgstmpegaudioparse_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstmpegaudioparse_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS)
+libgstmpegaudioparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpegaudioparse_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstmpegaudioparse.h gstxingmux.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/mpegaudioparse/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/mpegaudioparse/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
+libgstmpegaudioparse.la: $(libgstmpegaudioparse_la_OBJECTS) $(libgstmpegaudioparse_la_DEPENDENCIES) $(EXTRA_libgstmpegaudioparse_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstmpegaudioparse_la_LINK) -rpath $(plugindir) $(libgstmpegaudioparse_la_OBJECTS) $(libgstmpegaudioparse_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegaudioparse_la-gstmpegaudioparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegaudioparse_la-gstxingmux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegaudioparse_la-plugin.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstmpegaudioparse_la-plugin.lo: plugin.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -MT libgstmpegaudioparse_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstmpegaudioparse_la-plugin.Tpo -c -o libgstmpegaudioparse_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegaudioparse_la-plugin.Tpo $(DEPDIR)/libgstmpegaudioparse_la-plugin.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='plugin.c' object='libgstmpegaudioparse_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -c -o libgstmpegaudioparse_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+
+libgstmpegaudioparse_la-gstmpegaudioparse.lo: gstmpegaudioparse.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -MT libgstmpegaudioparse_la-gstmpegaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstmpegaudioparse_la-gstmpegaudioparse.Tpo -c -o libgstmpegaudioparse_la-gstmpegaudioparse.lo `test -f 'gstmpegaudioparse.c' || echo '$(srcdir)/'`gstmpegaudioparse.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegaudioparse_la-gstmpegaudioparse.Tpo $(DEPDIR)/libgstmpegaudioparse_la-gstmpegaudioparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegaudioparse.c' object='libgstmpegaudioparse_la-gstmpegaudioparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -c -o libgstmpegaudioparse_la-gstmpegaudioparse.lo `test -f 'gstmpegaudioparse.c' || echo '$(srcdir)/'`gstmpegaudioparse.c
+
+libgstmpegaudioparse_la-gstxingmux.lo: gstxingmux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -MT libgstmpegaudioparse_la-gstxingmux.lo -MD -MP -MF $(DEPDIR)/libgstmpegaudioparse_la-gstxingmux.Tpo -c -o libgstmpegaudioparse_la-gstxingmux.lo `test -f 'gstxingmux.c' || echo '$(srcdir)/'`gstxingmux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegaudioparse_la-gstxingmux.Tpo $(DEPDIR)/libgstmpegaudioparse_la-gstxingmux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstxingmux.c' object='libgstmpegaudioparse_la-gstxingmux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegaudioparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegaudioparse_la_CFLAGS) $(CFLAGS) -c -o libgstmpegaudioparse_la-gstxingmux.lo `test -f 'gstxingmux.c' || echo '$(srcdir)/'`gstxingmux.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmpegaudioparse -:SHARED libgstmpegaudioparse \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmpegaudioparse_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmpegaudioparse_la_CFLAGS) \
+        -:LDFLAGS $(libgstmpegaudioparse_la_LDFLAGS) \
+                  $(libgstmpegaudioparse_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/mpegaudioparse/gstmpegaudioparse.c b/gst/mpegaudioparse/gstmpegaudioparse.c
new file mode 100644 (file)
index 0000000..bafefab
--- /dev/null
@@ -0,0 +1,2205 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2006-2007> Jan Schmidt <thaytan@mad.scientist.com>
+ *
+ * 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-mp3parse
+ *
+ * Parses and frames mpeg1 audio streams. Provides seeking.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch filesrc location=test.mp3 ! mp3parse ! mad ! autoaudiosink
+ * ]|
+ * </refsect2>
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "gstmpegaudioparse.h"
+
+#include <gst/glib-compat-private.h>
+
+GST_DEBUG_CATEGORY_STATIC (mp3parse_debug);
+#define GST_CAT_DEFAULT mp3parse_debug
+
+#define MP3_CHANNEL_MODE_UNKNOWN -1
+#define MP3_CHANNEL_MODE_STEREO 0
+#define MP3_CHANNEL_MODE_JOINT_STEREO 1
+#define MP3_CHANNEL_MODE_DUAL_CHANNEL 2
+#define MP3_CHANNEL_MODE_MONO 3
+
+#define CRC_UNKNOWN -1
+#define CRC_PROTECTED 0
+#define CRC_NOT_PROTECTED 1
+
+#define XING_FRAMES_FLAG     0x0001
+#define XING_BYTES_FLAG      0x0002
+#define XING_TOC_FLAG        0x0004
+#define XING_VBR_SCALE_FLAG  0x0008
+
+#ifndef GST_READ_UINT24_BE
+#define GST_READ_UINT24_BE(p) (p[2] | (p[1] << 8) | (p[0] << 16))
+#endif
+
+/* Minimum number of consecutive, valid-looking frames to consider
+   for resyncing */
+#define MIN_RESYNC_FRAMES 3
+
+static inline MPEGAudioSeekEntry *
+mpeg_audio_seek_entry_new (void)
+{
+  return g_slice_new (MPEGAudioSeekEntry);
+}
+
+static inline void
+mpeg_audio_seek_entry_free (MPEGAudioSeekEntry * entry)
+{
+  g_slice_free (MPEGAudioSeekEntry, entry);
+}
+
+static GstStaticPadTemplate mp3_src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, "
+        "layer = (int) [ 1, 3 ], "
+        "rate = (int) [ 8000, 48000 ], channels = (int) [ 1, 2 ],"
+        "parsed=(boolean) true")
+    );
+
+static GstStaticPadTemplate mp3_sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, mpegversion = (int) 1, parsed=(boolean)false")
+    );
+
+/* GstMPEGAudioParse signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0,
+  ARG_SKIP,
+  ARG_BIT_RATE
+      /* FILL ME */
+};
+
+
+static gboolean gst_mp3parse_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_mp3parse_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean mp3parse_src_query (GstPad * pad, GstQuery * query);
+static const GstQueryType *mp3parse_get_query_types (GstPad * pad);
+static gboolean mp3parse_src_event (GstPad * pad, GstEvent * event);
+
+static int head_check (GstMPEGAudioParse * mp3parse, unsigned long head);
+
+static void gst_mp3parse_dispose (GObject * object);
+static void gst_mp3parse_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_mp3parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static GstStateChangeReturn gst_mp3parse_change_state (GstElement * element,
+    GstStateChange transition);
+static GstFlowReturn
+gst_mp3parse_handle_data (GstMPEGAudioParse * mp3parse, gboolean at_eos);
+
+static gboolean mp3parse_bytepos_to_time (GstMPEGAudioParse * mp3parse,
+    gint64 bytepos, GstClockTime * ts, gboolean from_total_time);
+static gboolean
+mp3parse_total_bytes (GstMPEGAudioParse * mp3parse, gint64 * total);
+static gboolean
+mp3parse_total_time (GstMPEGAudioParse * mp3parse, GstClockTime * total);
+
+GST_BOILERPLATE (GstMPEGAudioParse, gst_mp3parse, GstElement, GST_TYPE_ELEMENT);
+
+#define GST_TYPE_MP3_CHANNEL_MODE (gst_mp3_channel_mode_get_type())
+
+static const GEnumValue mp3_channel_mode[] = {
+  {MP3_CHANNEL_MODE_UNKNOWN, "Unknown", "unknown"},
+  {MP3_CHANNEL_MODE_MONO, "Mono", "mono"},
+  {MP3_CHANNEL_MODE_DUAL_CHANNEL, "Dual Channel", "dual-channel"},
+  {MP3_CHANNEL_MODE_JOINT_STEREO, "Joint Stereo", "joint-stereo"},
+  {MP3_CHANNEL_MODE_STEREO, "Stereo", "stereo"},
+  {0, NULL, NULL},
+};
+
+static GType
+gst_mp3_channel_mode_get_type (void)
+{
+  static GType mp3_channel_mode_type = 0;
+
+  if (!mp3_channel_mode_type) {
+    mp3_channel_mode_type =
+        g_enum_register_static ("GstMp3ChannelMode", mp3_channel_mode);
+  }
+  return mp3_channel_mode_type;
+}
+
+static const gchar *
+gst_mp3_channel_mode_get_nick (gint mode)
+{
+  guint i;
+  for (i = 0; i < G_N_ELEMENTS (mp3_channel_mode); i++) {
+    if (mp3_channel_mode[i].value == mode)
+      return mp3_channel_mode[i].value_nick;
+  }
+  return NULL;
+}
+
+static const guint mp3types_bitrates[2][3][16] = {
+  {
+        {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,},
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,},
+        {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}
+      },
+  {
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}
+      },
+};
+
+static const guint mp3types_freqs[3][3] = { {44100, 48000, 32000},
+{22050, 24000, 16000},
+{11025, 12000, 8000}
+};
+
+static inline guint
+mp3_type_frame_length_from_header (GstMPEGAudioParse * mp3parse, guint32 header,
+    guint * put_version, guint * put_layer, guint * put_channels,
+    guint * put_bitrate, guint * put_samplerate, guint * put_mode,
+    guint * put_crc)
+{
+  guint length;
+  gulong mode, samplerate, bitrate, layer, channels, padding, crc;
+  gulong version;
+  gint lsf, mpg25;
+
+  if (header & (1 << 20)) {
+    lsf = (header & (1 << 19)) ? 0 : 1;
+    mpg25 = 0;
+  } else {
+    lsf = 1;
+    mpg25 = 1;
+  }
+
+  version = 1 + lsf + mpg25;
+
+  layer = 4 - ((header >> 17) & 0x3);
+
+  crc = (header >> 16) & 0x1;
+
+  bitrate = (header >> 12) & 0xF;
+  bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
+  /* The caller has ensured we have a valid header, so bitrate can't be
+     zero here. */
+  g_assert (bitrate != 0);
+
+  samplerate = (header >> 10) & 0x3;
+  samplerate = mp3types_freqs[lsf + mpg25][samplerate];
+
+  padding = (header >> 9) & 0x1;
+
+  mode = (header >> 6) & 0x3;
+  channels = (mode == 3) ? 1 : 2;
+
+  switch (layer) {
+    case 1:
+      length = 4 * ((bitrate * 12) / samplerate + padding);
+      break;
+    case 2:
+      length = (bitrate * 144) / samplerate + padding;
+      break;
+    default:
+    case 3:
+      length = (bitrate * 144) / (samplerate << lsf) + padding;
+      break;
+  }
+
+  GST_DEBUG_OBJECT (mp3parse, "Calculated mp3 frame length of %u bytes",
+      length);
+  GST_DEBUG_OBJECT (mp3parse, "samplerate = %lu, bitrate = %lu, version = %lu, "
+      "layer = %lu, channels = %lu, mode = %s", samplerate, bitrate, version,
+      layer, channels, gst_mp3_channel_mode_get_nick (mode));
+
+  if (put_version)
+    *put_version = version;
+  if (put_layer)
+    *put_layer = layer;
+  if (put_channels)
+    *put_channels = channels;
+  if (put_bitrate)
+    *put_bitrate = bitrate;
+  if (put_samplerate)
+    *put_samplerate = samplerate;
+  if (put_mode)
+    *put_mode = mode;
+  if (put_crc)
+    *put_crc = crc;
+
+  return length;
+}
+
+static GstCaps *
+mp3_caps_create (guint version, guint layer, guint channels, guint samplerate)
+{
+  GstCaps *new;
+
+  g_assert (version);
+  g_assert (layer);
+  g_assert (samplerate);
+  g_assert (channels);
+
+  new = gst_caps_new_simple ("audio/mpeg",
+      "mpegversion", G_TYPE_INT, 1,
+      "mpegaudioversion", G_TYPE_INT, version,
+      "layer", G_TYPE_INT, layer,
+      "rate", G_TYPE_INT, samplerate,
+      "channels", G_TYPE_INT, channels, "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+  return new;
+}
+
+static void
+gst_mp3parse_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &mp3_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &mp3_src_template);
+
+  GST_DEBUG_CATEGORY_INIT (mp3parse_debug, "mp3parse", 0, "MPEG Audio Parser");
+
+  gst_element_class_set_details_simple (element_class, "MPEG1 Audio Parser",
+      "Codec/Parser/Audio",
+      "Parses and frames mpeg1 audio streams (levels 1-3), provides seek",
+      "Jan Schmidt <thaytan@mad.scientist.com>,"
+      "Erik Walthinsen <omega@cse.ogi.edu>");
+}
+
+static void
+gst_mp3parse_class_init (GstMPEGAudioParseClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->set_property = gst_mp3parse_set_property;
+  gobject_class->get_property = gst_mp3parse_get_property;
+  gobject_class->dispose = gst_mp3parse_dispose;
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SKIP,
+      g_param_spec_int ("skip", "skip", "skip",
+          G_MININT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BIT_RATE,
+      g_param_spec_int ("bitrate", "Bitrate", "Bit Rate",
+          G_MININT, G_MAXINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+  gstelement_class->change_state = gst_mp3parse_change_state;
+
+/* register tags */
+#define GST_TAG_CRC    "has-crc"
+#define GST_TAG_MODE     "channel-mode"
+
+  gst_tag_register (GST_TAG_CRC, GST_TAG_FLAG_META, G_TYPE_BOOLEAN,
+      "has crc", "Using CRC", NULL);
+  gst_tag_register (GST_TAG_MODE, GST_TAG_FLAG_ENCODED, G_TYPE_STRING,
+      "channel mode", "MPEG audio channel mode", NULL);
+
+  g_type_class_ref (GST_TYPE_MP3_CHANNEL_MODE);
+}
+
+static void
+gst_mp3parse_reset (GstMPEGAudioParse * mp3parse)
+{
+  mp3parse->skip = 0;
+  mp3parse->resyncing = TRUE;
+  mp3parse->next_ts = GST_CLOCK_TIME_NONE;
+  mp3parse->cur_offset = -1;
+
+  mp3parse->sync_offset = 0;
+  mp3parse->tracked_offset = 0;
+  mp3parse->pending_ts = GST_CLOCK_TIME_NONE;
+  mp3parse->pending_offset = -1;
+
+  gst_adapter_clear (mp3parse->adapter);
+
+  mp3parse->rate = mp3parse->channels = mp3parse->layer = -1;
+  mp3parse->version = 1;
+  mp3parse->max_bitreservoir = GST_CLOCK_TIME_NONE;
+
+  mp3parse->avg_bitrate = 0;
+  mp3parse->bitrate_sum = 0;
+  mp3parse->last_posted_bitrate = 0;
+  mp3parse->frame_count = 0;
+  mp3parse->sent_codec_tag = FALSE;
+
+  mp3parse->last_posted_crc = CRC_UNKNOWN;
+  mp3parse->last_posted_channel_mode = MP3_CHANNEL_MODE_UNKNOWN;
+
+  mp3parse->xing_flags = 0;
+  mp3parse->xing_bitrate = 0;
+  mp3parse->xing_frames = 0;
+  mp3parse->xing_total_time = 0;
+  mp3parse->xing_bytes = 0;
+  mp3parse->xing_vbr_scale = 0;
+  memset (mp3parse->xing_seek_table, 0, 100);
+  memset (mp3parse->xing_seek_table_inverse, 0, 256);
+
+  mp3parse->vbri_bitrate = 0;
+  mp3parse->vbri_frames = 0;
+  mp3parse->vbri_total_time = 0;
+  mp3parse->vbri_bytes = 0;
+  mp3parse->vbri_seek_points = 0;
+  g_free (mp3parse->vbri_seek_table);
+  mp3parse->vbri_seek_table = NULL;
+
+  if (mp3parse->seek_table) {
+    g_list_foreach (mp3parse->seek_table, (GFunc) mpeg_audio_seek_entry_free,
+        NULL);
+    g_list_free (mp3parse->seek_table);
+    mp3parse->seek_table = NULL;
+  }
+
+  g_mutex_lock (mp3parse->pending_seeks_lock);
+  if (mp3parse->pending_accurate_seeks) {
+    g_slist_foreach (mp3parse->pending_accurate_seeks, (GFunc) g_free, NULL);
+    g_slist_free (mp3parse->pending_accurate_seeks);
+    mp3parse->pending_accurate_seeks = NULL;
+  }
+  if (mp3parse->pending_nonaccurate_seeks) {
+    g_slist_foreach (mp3parse->pending_nonaccurate_seeks, (GFunc) g_free, NULL);
+    g_slist_free (mp3parse->pending_nonaccurate_seeks);
+    mp3parse->pending_nonaccurate_seeks = NULL;
+  }
+  g_mutex_unlock (mp3parse->pending_seeks_lock);
+
+  if (mp3parse->pending_segment) {
+    GstEvent **eventp = &mp3parse->pending_segment;
+
+    gst_event_replace (eventp, NULL);
+  }
+
+  mp3parse->exact_position = FALSE;
+  gst_segment_init (&mp3parse->segment, GST_FORMAT_TIME);
+}
+
+static void
+gst_mp3parse_init (GstMPEGAudioParse * mp3parse, GstMPEGAudioParseClass * klass)
+{
+  mp3parse->sinkpad =
+      gst_pad_new_from_static_template (&mp3_sink_template, "sink");
+  gst_pad_set_event_function (mp3parse->sinkpad, gst_mp3parse_sink_event);
+  gst_pad_set_chain_function (mp3parse->sinkpad, gst_mp3parse_chain);
+  gst_element_add_pad (GST_ELEMENT (mp3parse), mp3parse->sinkpad);
+
+  mp3parse->srcpad =
+      gst_pad_new_from_static_template (&mp3_src_template, "src");
+  gst_pad_use_fixed_caps (mp3parse->srcpad);
+  gst_pad_set_event_function (mp3parse->srcpad, mp3parse_src_event);
+  gst_pad_set_query_function (mp3parse->srcpad, mp3parse_src_query);
+  gst_pad_set_query_type_function (mp3parse->srcpad, mp3parse_get_query_types);
+  gst_element_add_pad (GST_ELEMENT (mp3parse), mp3parse->srcpad);
+
+  mp3parse->adapter = gst_adapter_new ();
+  mp3parse->pending_seeks_lock = g_mutex_new ();
+
+  gst_mp3parse_reset (mp3parse);
+}
+
+static void
+gst_mp3parse_dispose (GObject * object)
+{
+  GstMPEGAudioParse *mp3parse = GST_MP3PARSE (object);
+
+  gst_mp3parse_reset (mp3parse);
+
+  if (mp3parse->adapter) {
+    g_object_unref (mp3parse->adapter);
+    mp3parse->adapter = NULL;
+  }
+  g_mutex_free (mp3parse->pending_seeks_lock);
+  mp3parse->pending_seeks_lock = NULL;
+
+  g_list_foreach (mp3parse->pending_events, (GFunc) gst_mini_object_unref,
+      NULL);
+  g_list_free (mp3parse->pending_events);
+  mp3parse->pending_events = NULL;
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static gboolean
+gst_mp3parse_sink_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res = TRUE;
+  GstMPEGAudioParse *mp3parse;
+  GstEvent **eventp;
+
+  mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gdouble rate, applied_rate;
+      GstFormat format;
+      gint64 start, stop, pos;
+      gboolean update;
+      MPEGAudioPendingAccurateSeek *seek = NULL;
+      GSList *node;
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
+          &format, &start, &stop, &pos);
+
+      g_mutex_lock (mp3parse->pending_seeks_lock);
+      if (format == GST_FORMAT_BYTES && mp3parse->pending_accurate_seeks) {
+
+        for (node = mp3parse->pending_accurate_seeks; node; node = node->next) {
+          MPEGAudioPendingAccurateSeek *tmp = node->data;
+
+          if (tmp->upstream_start == pos) {
+            seek = tmp;
+            break;
+          }
+        }
+        if (seek) {
+          GstSegment *s = &seek->segment;
+
+          event =
+              gst_event_new_new_segment_full (FALSE, s->rate, s->applied_rate,
+              GST_FORMAT_TIME, s->start, s->stop, s->last_stop);
+
+          mp3parse->segment = seek->segment;
+
+          mp3parse->resyncing = FALSE;
+          mp3parse->cur_offset = pos;
+          mp3parse->next_ts = seek->timestamp_start;
+          mp3parse->pending_ts = GST_CLOCK_TIME_NONE;
+          mp3parse->tracked_offset = 0;
+          mp3parse->sync_offset = 0;
+
+          gst_event_parse_new_segment_full (event, &update, &rate,
+              &applied_rate, &format, &start, &stop, &pos);
+
+          GST_DEBUG_OBJECT (mp3parse,
+              "Pushing accurate newseg rate %g, applied rate %g, "
+              "format %d, start %" G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT
+              ", pos %" G_GINT64_FORMAT, rate, applied_rate, format, start,
+              stop, pos);
+
+          g_free (seek);
+          mp3parse->pending_accurate_seeks =
+              g_slist_delete_link (mp3parse->pending_accurate_seeks, node);
+
+          g_mutex_unlock (mp3parse->pending_seeks_lock);
+          res = gst_pad_push_event (mp3parse->srcpad, event);
+
+          return res;
+        } else {
+          GST_WARNING_OBJECT (mp3parse,
+              "Accurate seek not possible, didn't get an appropiate upstream segment");
+        }
+      }
+      g_mutex_unlock (mp3parse->pending_seeks_lock);
+
+      mp3parse->exact_position = FALSE;
+
+      if (format == GST_FORMAT_BYTES) {
+        GstClockTime seg_start, seg_stop, seg_pos;
+
+        /* stop time is allowed to be open-ended, but not start & pos */
+        if (!mp3parse_bytepos_to_time (mp3parse, stop, &seg_stop, FALSE))
+          seg_stop = GST_CLOCK_TIME_NONE;
+        if (mp3parse_bytepos_to_time (mp3parse, start, &seg_start, FALSE) &&
+            mp3parse_bytepos_to_time (mp3parse, pos, &seg_pos, FALSE)) {
+          gst_event_unref (event);
+
+          /* search the pending nonaccurate seeks */
+          g_mutex_lock (mp3parse->pending_seeks_lock);
+          seek = NULL;
+          for (node = mp3parse->pending_nonaccurate_seeks; node;
+              node = node->next) {
+            MPEGAudioPendingAccurateSeek *tmp = node->data;
+
+            if (tmp->upstream_start == pos) {
+              seek = tmp;
+              break;
+            }
+          }
+
+          if (seek) {
+            if (seek->segment.stop == -1) {
+              /* corrent the segment end, because non-accurate seeks might make
+               * our streaming end earlier (see bug #603695) */
+              seg_stop = -1;
+            }
+            g_free (seek);
+            mp3parse->pending_nonaccurate_seeks =
+                g_slist_delete_link (mp3parse->pending_nonaccurate_seeks, node);
+          }
+          g_mutex_unlock (mp3parse->pending_seeks_lock);
+
+          event = gst_event_new_new_segment_full (update, rate, applied_rate,
+              GST_FORMAT_TIME, seg_start, seg_stop, seg_pos);
+          format = GST_FORMAT_TIME;
+          GST_DEBUG_OBJECT (mp3parse, "Converted incoming segment to TIME. "
+              "start = %" GST_TIME_FORMAT ", stop = %" GST_TIME_FORMAT
+              ", pos = %" GST_TIME_FORMAT, GST_TIME_ARGS (seg_start),
+              GST_TIME_ARGS (seg_stop), GST_TIME_ARGS (seg_pos));
+        }
+      }
+
+      if (format != GST_FORMAT_TIME) {
+        /* Unknown incoming segment format. Output a default open-ended 
+         * TIME segment */
+        gst_event_unref (event);
+        event = gst_event_new_new_segment_full (update, rate, applied_rate,
+            GST_FORMAT_TIME, 0, GST_CLOCK_TIME_NONE, 0);
+      }
+
+      mp3parse->resyncing = TRUE;
+      mp3parse->cur_offset = -1;
+      mp3parse->next_ts = GST_CLOCK_TIME_NONE;
+      mp3parse->pending_ts = GST_CLOCK_TIME_NONE;
+      mp3parse->tracked_offset = 0;
+      mp3parse->sync_offset = 0;
+      /* also clear leftover data if clearing so much state */
+      gst_adapter_clear (mp3parse->adapter);
+
+      gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
+          &format, &start, &stop, &pos);
+      GST_DEBUG_OBJECT (mp3parse, "Pushing newseg rate %g, applied rate %g, "
+          "format %d, start %" G_GINT64_FORMAT ", stop %" G_GINT64_FORMAT
+          ", pos %" G_GINT64_FORMAT, rate, applied_rate, format, start, stop,
+          pos);
+
+      gst_segment_set_newsegment_full (&mp3parse->segment, update, rate,
+          applied_rate, format, start, stop, pos);
+
+      /* save the segment for later, right before we push a new buffer so that
+       * the caps are fixed and the next linked element can receive the segment. */
+      eventp = &mp3parse->pending_segment;
+      gst_event_replace (eventp, event);
+      gst_event_unref (event);
+      res = TRUE;
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:
+      /* Clear our adapter and set up for a new position */
+      gst_adapter_clear (mp3parse->adapter);
+      eventp = &mp3parse->pending_segment;
+      gst_event_replace (eventp, NULL);
+      res = gst_pad_push_event (mp3parse->srcpad, event);
+      break;
+    case GST_EVENT_EOS:
+      /* If we haven't processed any frames yet, then make sure we process
+         at least whatever's in our adapter */
+      if (mp3parse->frame_count == 0) {
+        gst_mp3parse_handle_data (mp3parse, TRUE);
+
+        /* If we STILL have zero frames processed, fire an error */
+        if (mp3parse->frame_count == 0) {
+          GST_ELEMENT_ERROR (mp3parse, STREAM, WRONG_TYPE,
+              ("No valid frames found before end of stream"), (NULL));
+        }
+      }
+      /* fall through */
+    default:
+      if (mp3parse->pending_segment &&
+          (GST_EVENT_TYPE (event) != GST_EVENT_EOS) &&
+          (GST_EVENT_TYPE (event) != GST_EVENT_FLUSH_START)) {
+        /* Cache all events except EOS and the ones above if we have
+         * a pending segment */
+        mp3parse->pending_events =
+            g_list_append (mp3parse->pending_events, event);
+      } else {
+        res = gst_pad_push_event (mp3parse->srcpad, event);
+      }
+      break;
+  }
+
+  gst_object_unref (mp3parse);
+
+  return res;
+}
+
+static void
+gst_mp3parse_add_index_entry (GstMPEGAudioParse * mp3parse, guint64 offset,
+    GstClockTime ts)
+{
+  MPEGAudioSeekEntry *entry, *last;
+
+  if (G_LIKELY (mp3parse->seek_table != NULL)) {
+    last = mp3parse->seek_table->data;
+
+    if (last->byte >= offset)
+      return;
+
+    if (GST_CLOCK_DIFF (last->timestamp, ts) < mp3parse->idx_interval)
+      return;
+  }
+
+  entry = mpeg_audio_seek_entry_new ();
+  entry->byte = offset;
+  entry->timestamp = ts;
+  mp3parse->seek_table = g_list_prepend (mp3parse->seek_table, entry);
+
+  GST_LOG_OBJECT (mp3parse, "Adding index entry %" GST_TIME_FORMAT " @ offset "
+      "0x%08" G_GINT64_MODIFIER "x", GST_TIME_ARGS (ts), offset);
+}
+
+/* Prepare a buffer of the indicated size, timestamp it and output */
+static GstFlowReturn
+gst_mp3parse_emit_frame (GstMPEGAudioParse * mp3parse, guint size,
+    guint mode, guint crc)
+{
+  GstBuffer *outbuf;
+  guint bitrate;
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstClockTime push_start;
+  GstTagList *taglist;
+
+  outbuf = gst_adapter_take_buffer (mp3parse->adapter, size);
+
+  GST_BUFFER_DURATION (outbuf) =
+      gst_util_uint64_scale (GST_SECOND, mp3parse->spf, mp3parse->rate);
+
+  GST_BUFFER_OFFSET (outbuf) = mp3parse->cur_offset;
+
+  /* Check if we have a pending timestamp from an incoming buffer to apply
+   * here */
+  if (GST_CLOCK_TIME_IS_VALID (mp3parse->pending_ts)) {
+    if (mp3parse->tracked_offset >= mp3parse->pending_offset) {
+      /* If the incoming timestamp differs from our expected by more than 
+       * half a frame, then take it instead of our calculated timestamp.
+       * This avoids creating imperfect streams just because of 
+       * quantization in the container timestamping */
+      GstClockTimeDiff diff = mp3parse->next_ts - mp3parse->pending_ts;
+      GstClockTimeDiff thresh = GST_BUFFER_DURATION (outbuf) / 2;
+
+      if (diff < -thresh || diff > thresh) {
+        GST_DEBUG_OBJECT (mp3parse, "Updating next_ts from %" GST_TIME_FORMAT
+            " to pending ts %" GST_TIME_FORMAT
+            " at offset %" G_GINT64_FORMAT " (pending offset was %"
+            G_GINT64_FORMAT ")", GST_TIME_ARGS (mp3parse->next_ts),
+            GST_TIME_ARGS (mp3parse->pending_ts), mp3parse->tracked_offset,
+            mp3parse->pending_offset);
+        mp3parse->next_ts = mp3parse->pending_ts;
+      }
+      mp3parse->pending_ts = GST_CLOCK_TIME_NONE;
+    }
+  }
+
+  /* Decide what timestamp we're going to apply */
+  if (GST_CLOCK_TIME_IS_VALID (mp3parse->next_ts)) {
+    GST_BUFFER_TIMESTAMP (outbuf) = mp3parse->next_ts;
+  } else {
+    GstClockTime ts;
+
+    /* No timestamp yet, convert our offset to a timestamp if we can, or
+     * start at 0 */
+    if (mp3parse_bytepos_to_time (mp3parse, mp3parse->cur_offset, &ts, FALSE) &&
+        GST_CLOCK_TIME_IS_VALID (ts))
+      GST_BUFFER_TIMESTAMP (outbuf) = ts;
+    else {
+      GST_BUFFER_TIMESTAMP (outbuf) = 0;
+    }
+  }
+
+  if (GST_BUFFER_TIMESTAMP (outbuf) == 0)
+    mp3parse->exact_position = TRUE;
+
+  if (mp3parse->seekable &&
+      mp3parse->exact_position && GST_BUFFER_TIMESTAMP_IS_VALID (outbuf) &&
+      mp3parse->cur_offset != GST_BUFFER_OFFSET_NONE) {
+    gst_mp3parse_add_index_entry (mp3parse, mp3parse->cur_offset,
+        GST_BUFFER_TIMESTAMP (outbuf));
+  }
+
+  /* Update our byte offset tracking */
+  if (mp3parse->cur_offset != -1) {
+    mp3parse->cur_offset += size;
+  }
+  mp3parse->tracked_offset += size;
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (outbuf))
+    mp3parse->next_ts =
+        GST_BUFFER_TIMESTAMP (outbuf) + GST_BUFFER_DURATION (outbuf);
+
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (mp3parse->srcpad));
+
+  /* Post a bitrate tag if we need to before pushing the buffer */
+  if (mp3parse->xing_bitrate != 0)
+    bitrate = mp3parse->xing_bitrate;
+  else if (mp3parse->vbri_bitrate != 0)
+    bitrate = mp3parse->vbri_bitrate;
+  else
+    bitrate = mp3parse->avg_bitrate;
+
+  /* we will create a taglist (if any of the parameters has changed)
+   * to add the tags that changed */
+  taglist = NULL;
+  if ((mp3parse->last_posted_bitrate / 10000) != (bitrate / 10000)) {
+    taglist = gst_tag_list_new ();
+    mp3parse->last_posted_bitrate = bitrate;
+    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_BITRATE,
+        mp3parse->last_posted_bitrate, NULL);
+
+    /* Post a new duration message if the average bitrate changes that much
+     * so applications can update their cached values
+     */
+    if ((mp3parse->xing_flags & XING_TOC_FLAG) == 0
+        && mp3parse->vbri_total_time == 0) {
+      gst_element_post_message (GST_ELEMENT (mp3parse),
+          gst_message_new_duration (GST_OBJECT (mp3parse), GST_FORMAT_TIME,
+              -1));
+    }
+  }
+
+  if (mp3parse->last_posted_crc != crc) {
+    gboolean using_crc;
+
+    if (!taglist) {
+      taglist = gst_tag_list_new ();
+    }
+    mp3parse->last_posted_crc = crc;
+    if (mp3parse->last_posted_crc == CRC_PROTECTED) {
+      using_crc = TRUE;
+    } else {
+      using_crc = FALSE;
+    }
+    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_CRC,
+        using_crc, NULL);
+  }
+
+  if (mp3parse->last_posted_channel_mode != mode) {
+    if (!taglist) {
+      taglist = gst_tag_list_new ();
+    }
+    mp3parse->last_posted_channel_mode = mode;
+
+    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, GST_TAG_MODE,
+        gst_mp3_channel_mode_get_nick (mode), NULL);
+  }
+
+  /* if the taglist exists, we need to send it */
+  if (taglist) {
+    gst_element_found_tags_for_pad (GST_ELEMENT (mp3parse),
+        mp3parse->srcpad, taglist);
+  }
+
+  /* We start pushing 9 frames earlier (29 frames for MPEG2) than
+   * segment start to be able to decode the first frame we want.
+   * 9 (29) frames are the theoretical maximum of frames that contain
+   * data for the current frame (bit reservoir).
+   */
+  if (mp3parse->segment.start == 0) {
+    push_start = 0;
+  } else if (GST_CLOCK_TIME_IS_VALID (mp3parse->max_bitreservoir)) {
+    if (GST_CLOCK_TIME_IS_VALID (mp3parse->segment.start) &&
+        mp3parse->segment.start > mp3parse->max_bitreservoir)
+      push_start = mp3parse->segment.start - mp3parse->max_bitreservoir;
+    else
+      push_start = 0;
+  } else {
+    push_start = mp3parse->segment.start;
+  }
+
+  if (G_UNLIKELY ((GST_CLOCK_TIME_IS_VALID (push_start) &&
+              GST_BUFFER_TIMESTAMP_IS_VALID (outbuf) &&
+              GST_BUFFER_TIMESTAMP (outbuf) + GST_BUFFER_DURATION (outbuf)
+              < push_start))) {
+    GST_DEBUG_OBJECT (mp3parse,
+        "Buffer before configured segment range %" GST_TIME_FORMAT
+        " to %" GST_TIME_FORMAT ", dropping, timestamp %"
+        GST_TIME_FORMAT " duration %" GST_TIME_FORMAT
+        ", offset 0x%08" G_GINT64_MODIFIER "x", GST_TIME_ARGS (push_start),
+        GST_TIME_ARGS (mp3parse->segment.stop),
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)),
+        GST_BUFFER_OFFSET (outbuf));
+
+    gst_buffer_unref (outbuf);
+    ret = GST_FLOW_OK;
+  } else if (G_UNLIKELY (GST_BUFFER_TIMESTAMP_IS_VALID (outbuf) &&
+          GST_CLOCK_TIME_IS_VALID (mp3parse->segment.stop) &&
+          GST_BUFFER_TIMESTAMP (outbuf) >=
+          mp3parse->segment.stop + GST_BUFFER_DURATION (outbuf))) {
+    /* Some mp3 streams have an offset in the timestamps, for which we have to
+     * push the frame *after* the end position in order for the decoder to be
+     * able to decode everything up until the segment.stop position.
+     * That is the reason of the calculated offset */
+    GST_DEBUG_OBJECT (mp3parse,
+        "Buffer after configured segment range %" GST_TIME_FORMAT " to %"
+        GST_TIME_FORMAT ", returning GST_FLOW_UNEXPECTED, timestamp %"
+        GST_TIME_FORMAT " duration %" GST_TIME_FORMAT ", offset 0x%08"
+        G_GINT64_MODIFIER "x", GST_TIME_ARGS (push_start),
+        GST_TIME_ARGS (mp3parse->segment.stop),
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
+        GST_TIME_ARGS (GST_BUFFER_DURATION (outbuf)),
+        GST_BUFFER_OFFSET (outbuf));
+
+    gst_buffer_unref (outbuf);
+    ret = GST_FLOW_UNEXPECTED;
+  } else {
+    GST_DEBUG_OBJECT (mp3parse,
+        "pushing buffer of %d bytes, timestamp %" GST_TIME_FORMAT
+        ", offset 0x%08" G_GINT64_MODIFIER "x", size,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)),
+        GST_BUFFER_OFFSET (outbuf));
+    mp3parse->segment.last_stop = GST_BUFFER_TIMESTAMP (outbuf);
+    /* push any pending segment now */
+    if (mp3parse->pending_segment) {
+      gst_pad_push_event (mp3parse->srcpad, mp3parse->pending_segment);
+      mp3parse->pending_segment = NULL;
+    }
+    if (mp3parse->pending_events) {
+      GList *l;
+
+      for (l = mp3parse->pending_events; l != NULL; l = l->next) {
+        gst_pad_push_event (mp3parse->srcpad, GST_EVENT (l->data));
+      }
+      g_list_free (mp3parse->pending_events);
+      mp3parse->pending_events = NULL;
+    }
+
+    /* set discont if needed */
+    if (mp3parse->discont) {
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+      mp3parse->discont = FALSE;
+    }
+
+    ret = gst_pad_push (mp3parse->srcpad, outbuf);
+  }
+
+  return ret;
+}
+
+static void
+gst_mp3parse_handle_first_frame (GstMPEGAudioParse * mp3parse)
+{
+  GstTagList *taglist;
+  gchar *codec;
+  const guint32 xing_id = 0x58696e67;   /* 'Xing' in hex */
+  const guint32 info_id = 0x496e666f;   /* 'Info' in hex - found in LAME CBR files */
+  const guint32 vbri_id = 0x56425249;   /* 'VBRI' in hex */
+
+  gint offset;
+
+  guint64 avail;
+  gint64 upstream_total_bytes = 0;
+  guint32 read_id;
+  const guint8 *data;
+
+  /* Output codec tag */
+  if (!mp3parse->sent_codec_tag) {
+    if (mp3parse->layer == 3) {
+      codec = g_strdup_printf ("MPEG %d Audio, Layer %d (MP3)",
+          mp3parse->version, mp3parse->layer);
+    } else {
+      codec = g_strdup_printf ("MPEG %d Audio, Layer %d",
+          mp3parse->version, mp3parse->layer);
+    }
+
+    taglist = gst_tag_list_new ();
+    gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE,
+        GST_TAG_AUDIO_CODEC, codec, NULL);
+    gst_element_found_tags_for_pad (GST_ELEMENT (mp3parse),
+        mp3parse->srcpad, taglist);
+    g_free (codec);
+
+    mp3parse->sent_codec_tag = TRUE;
+  }
+  /* end setting the tag */
+
+  /* Check first frame for Xing info */
+  if (mp3parse->version == 1) { /* MPEG-1 file */
+    if (mp3parse->channels == 1)
+      offset = 0x11;
+    else
+      offset = 0x20;
+  } else {                      /* MPEG-2 header */
+    if (mp3parse->channels == 1)
+      offset = 0x09;
+    else
+      offset = 0x11;
+  }
+  /* Skip the 4 bytes of the MP3 header too */
+  offset += 4;
+
+  /* Check if we have enough data to read the Xing header */
+  avail = gst_adapter_available (mp3parse->adapter);
+
+  if (avail < offset + 8)
+    return;
+
+  data = gst_adapter_peek (mp3parse->adapter, offset + 8);
+  if (data == NULL)
+    return;
+  /* The header starts at the provided offset */
+  data += offset;
+
+  /* obtain real upstream total bytes */
+  mp3parse_total_bytes (mp3parse, &upstream_total_bytes);
+
+  read_id = GST_READ_UINT32_BE (data);
+  if (read_id == xing_id || read_id == info_id) {
+    guint32 xing_flags;
+    guint bytes_needed = offset + 8;
+    gint64 total_bytes;
+    GstClockTime total_time;
+
+    GST_DEBUG_OBJECT (mp3parse, "Found Xing header marker 0x%x", xing_id);
+
+    /* Read 4 base bytes of flags, big-endian */
+    xing_flags = GST_READ_UINT32_BE (data + 4);
+    if (xing_flags & XING_FRAMES_FLAG)
+      bytes_needed += 4;
+    if (xing_flags & XING_BYTES_FLAG)
+      bytes_needed += 4;
+    if (xing_flags & XING_TOC_FLAG)
+      bytes_needed += 100;
+    if (xing_flags & XING_VBR_SCALE_FLAG)
+      bytes_needed += 4;
+    if (avail < bytes_needed) {
+      GST_DEBUG_OBJECT (mp3parse,
+          "Not enough data to read Xing header (need %d)", bytes_needed);
+      return;
+    }
+
+    GST_DEBUG_OBJECT (mp3parse, "Reading Xing header");
+    mp3parse->xing_flags = xing_flags;
+    data = gst_adapter_peek (mp3parse->adapter, bytes_needed);
+    data += offset + 8;
+
+    if (xing_flags & XING_FRAMES_FLAG) {
+      mp3parse->xing_frames = GST_READ_UINT32_BE (data);
+      if (mp3parse->xing_frames == 0) {
+        GST_WARNING_OBJECT (mp3parse,
+            "Invalid number of frames in Xing header");
+        mp3parse->xing_flags &= ~XING_FRAMES_FLAG;
+      } else {
+        mp3parse->xing_total_time = gst_util_uint64_scale (GST_SECOND,
+            (guint64) (mp3parse->xing_frames) * (mp3parse->spf),
+            mp3parse->rate);
+      }
+
+      data += 4;
+    } else {
+      mp3parse->xing_frames = 0;
+      mp3parse->xing_total_time = 0;
+    }
+
+    if (xing_flags & XING_BYTES_FLAG) {
+      mp3parse->xing_bytes = GST_READ_UINT32_BE (data);
+      if (mp3parse->xing_bytes == 0) {
+        GST_WARNING_OBJECT (mp3parse, "Invalid number of bytes in Xing header");
+        mp3parse->xing_flags &= ~XING_BYTES_FLAG;
+      }
+
+      data += 4;
+    } else {
+      mp3parse->xing_bytes = 0;
+    }
+
+    /* If we know the upstream size and duration, compute the
+     * total bitrate, rounded up to the nearest kbit/sec */
+    if ((total_time = mp3parse->xing_total_time) &&
+        (total_bytes = mp3parse->xing_bytes)) {
+      mp3parse->xing_bitrate = gst_util_uint64_scale (total_bytes,
+          8 * GST_SECOND, total_time);
+      mp3parse->xing_bitrate += 500;
+      mp3parse->xing_bitrate -= mp3parse->xing_bitrate % 1000;
+    }
+
+    if (xing_flags & XING_TOC_FLAG) {
+      int i, percent = 0;
+      guchar *table = mp3parse->xing_seek_table;
+      guchar old = 0, new;
+      guint first;
+
+      first = data[0];
+      GST_DEBUG_OBJECT (mp3parse,
+          "Subtracting initial offset of %d bytes from Xing TOC", first);
+
+      /* xing seek table: percent time -> 1/256 bytepos */
+      for (i = 0; i < 100; i++) {
+        new = data[i] - first;
+        if (old > new) {
+          GST_WARNING_OBJECT (mp3parse, "Skipping broken Xing TOC");
+          mp3parse->xing_flags &= ~XING_TOC_FLAG;
+          goto skip_toc;
+        }
+        mp3parse->xing_seek_table[i] = old = new;
+      }
+
+      /* build inverse table: 1/256 bytepos -> 1/100 percent time */
+      for (i = 0; i < 256; i++) {
+        while (percent < 99 && table[percent + 1] <= i)
+          percent++;
+
+        if (table[percent] == i) {
+          mp3parse->xing_seek_table_inverse[i] = percent * 100;
+        } else if (table[percent] < i && percent < 99) {
+          gdouble fa, fb, fx;
+          gint a = percent, b = percent + 1;
+
+          fa = table[a];
+          fb = table[b];
+          fx = (b - a) / (fb - fa) * (i - fa) + a;
+          mp3parse->xing_seek_table_inverse[i] = (guint16) (fx * 100);
+        } else if (percent == 99) {
+          gdouble fa, fb, fx;
+          gint a = percent, b = 100;
+
+          fa = table[a];
+          fb = 256.0;
+          fx = (b - a) / (fb - fa) * (i - fa) + a;
+          mp3parse->xing_seek_table_inverse[i] = (guint16) (fx * 100);
+        }
+      }
+    skip_toc:
+      data += 100;
+    } else {
+      memset (mp3parse->xing_seek_table, 0, 100);
+      memset (mp3parse->xing_seek_table_inverse, 0, 256);
+    }
+
+    if (xing_flags & XING_VBR_SCALE_FLAG) {
+      mp3parse->xing_vbr_scale = GST_READ_UINT32_BE (data);
+    } else
+      mp3parse->xing_vbr_scale = 0;
+
+    GST_DEBUG_OBJECT (mp3parse, "Xing header reported %u frames, time %"
+        GST_TIME_FORMAT ", %u bytes, vbr scale %u", mp3parse->xing_frames,
+        GST_TIME_ARGS (mp3parse->xing_total_time), mp3parse->xing_bytes,
+        mp3parse->xing_vbr_scale);
+
+    /* check for truncated file */
+    if (upstream_total_bytes && mp3parse->xing_bytes &&
+        mp3parse->xing_bytes * 0.8 > upstream_total_bytes) {
+      GST_WARNING_OBJECT (mp3parse, "File appears to have been truncated; "
+          "invalidating Xing header duration and size");
+      mp3parse->xing_flags &= ~XING_BYTES_FLAG;
+      mp3parse->xing_flags &= ~XING_FRAMES_FLAG;
+    }
+  } else if (read_id == vbri_id) {
+    gint64 total_bytes, total_frames;
+    GstClockTime total_time;
+    guint16 nseek_points;
+
+    GST_DEBUG_OBJECT (mp3parse, "Found VBRI header marker 0x%x", vbri_id);
+    if (avail < offset + 26) {
+      GST_DEBUG_OBJECT (mp3parse,
+          "Not enough data to read VBRI header (need %d)", offset + 26);
+      return;
+    }
+
+    GST_DEBUG_OBJECT (mp3parse, "Reading VBRI header");
+    data = gst_adapter_peek (mp3parse->adapter, offset + 26);
+    data += offset + 4;
+
+    if (GST_READ_UINT16_BE (data) != 0x0001) {
+      GST_WARNING_OBJECT (mp3parse,
+          "Unsupported VBRI version 0x%x", GST_READ_UINT16_BE (data));
+      return;
+    }
+    data += 2;
+
+    /* Skip encoder delay */
+    data += 2;
+
+    /* Skip quality */
+    data += 2;
+
+    total_bytes = GST_READ_UINT32_BE (data);
+    if (total_bytes != 0)
+      mp3parse->vbri_bytes = total_bytes;
+    data += 4;
+
+    total_frames = GST_READ_UINT32_BE (data);
+    if (total_frames != 0) {
+      mp3parse->vbri_frames = total_frames;
+      mp3parse->vbri_total_time = gst_util_uint64_scale (GST_SECOND,
+          (guint64) (mp3parse->vbri_frames) * (mp3parse->spf), mp3parse->rate);
+    }
+    data += 4;
+
+    /* If we know the upstream size and duration, compute the 
+     * total bitrate, rounded up to the nearest kbit/sec */
+    if ((total_time = mp3parse->vbri_total_time) &&
+        (total_bytes = mp3parse->vbri_bytes)) {
+      mp3parse->vbri_bitrate = gst_util_uint64_scale (total_bytes,
+          8 * GST_SECOND, total_time);
+      mp3parse->vbri_bitrate += 500;
+      mp3parse->vbri_bitrate -= mp3parse->vbri_bitrate % 1000;
+    }
+
+    nseek_points = GST_READ_UINT16_BE (data);
+    data += 2;
+
+    if (nseek_points > 0) {
+      guint scale, seek_bytes, seek_frames;
+      gint i;
+
+      mp3parse->vbri_seek_points = nseek_points;
+
+      scale = GST_READ_UINT16_BE (data);
+      data += 2;
+
+      seek_bytes = GST_READ_UINT16_BE (data);
+      data += 2;
+
+      seek_frames = GST_READ_UINT16_BE (data);
+
+      if (scale == 0 || seek_bytes == 0 || seek_bytes > 4 || seek_frames == 0) {
+        GST_WARNING_OBJECT (mp3parse, "Unsupported VBRI seek table");
+        goto out_vbri;
+      }
+
+      if (avail < offset + 26 + nseek_points * seek_bytes) {
+        GST_WARNING_OBJECT (mp3parse,
+            "Not enough data to read VBRI seek table (need %d)",
+            offset + 26 + nseek_points * seek_bytes);
+        goto out_vbri;
+      }
+
+      if (seek_frames * nseek_points < total_frames - seek_frames ||
+          seek_frames * nseek_points > total_frames + seek_frames) {
+        GST_WARNING_OBJECT (mp3parse,
+            "VBRI seek table doesn't cover the complete file");
+        goto out_vbri;
+      }
+
+      data =
+          gst_adapter_peek (mp3parse->adapter,
+          offset + 26 + nseek_points * seek_bytes);
+      data += offset + 26;
+
+
+      /* VBRI seek table: frame/seek_frames -> byte */
+      mp3parse->vbri_seek_table = g_new (guint32, nseek_points);
+      if (seek_bytes == 4)
+        for (i = 0; i < nseek_points; i++) {
+          mp3parse->vbri_seek_table[i] = GST_READ_UINT32_BE (data) * scale;
+          data += 4;
+      } else if (seek_bytes == 3)
+        for (i = 0; i < nseek_points; i++) {
+          mp3parse->vbri_seek_table[i] = GST_READ_UINT24_BE (data) * scale;
+          data += 3;
+      } else if (seek_bytes == 2)
+        for (i = 0; i < nseek_points; i++) {
+          mp3parse->vbri_seek_table[i] = GST_READ_UINT16_BE (data) * scale;
+          data += 2;
+      } else                    /* seek_bytes == 1 */
+        for (i = 0; i < nseek_points; i++) {
+          mp3parse->vbri_seek_table[i] = GST_READ_UINT8 (data) * scale;
+          data += 1;
+        }
+    }
+  out_vbri:
+
+    GST_DEBUG_OBJECT (mp3parse, "VBRI header reported %u frames, time %"
+        GST_TIME_FORMAT ", bytes %u", mp3parse->vbri_frames,
+        GST_TIME_ARGS (mp3parse->vbri_total_time), mp3parse->vbri_bytes);
+
+    /* check for truncated file */
+    if (upstream_total_bytes && mp3parse->vbri_bytes &&
+        mp3parse->vbri_bytes * 0.8 > upstream_total_bytes) {
+      GST_WARNING_OBJECT (mp3parse, "File appears to have been truncated; "
+          "invalidating VBRI header duration and size");
+      mp3parse->vbri_valid = FALSE;
+    } else {
+      mp3parse->vbri_valid = TRUE;
+    }
+  } else {
+    GST_DEBUG_OBJECT (mp3parse,
+        "Xing, LAME or VBRI header not found in first frame");
+  }
+}
+
+static void
+gst_mp3parse_check_seekability (GstMPEGAudioParse * mp3parse)
+{
+  GstQuery *query;
+  gboolean seekable = FALSE;
+  gint64 start = -1, stop = -1;
+  guint idx_interval = 0;
+
+  query = gst_query_new_seeking (GST_FORMAT_BYTES);
+  if (!gst_pad_peer_query (mp3parse->sinkpad, query)) {
+    GST_DEBUG_OBJECT (mp3parse, "seeking query failed");
+    goto done;
+  }
+
+  gst_query_parse_seeking (query, NULL, &seekable, &start, &stop);
+
+  /* try harder to query upstream size if we didn't get it the first time */
+  if (seekable && stop == -1) {
+    GstFormat fmt = GST_FORMAT_BYTES;
+
+    GST_DEBUG_OBJECT (mp3parse, "doing duration query to fix up unset stop");
+    gst_pad_query_peer_duration (mp3parse->sinkpad, &fmt, &stop);
+  }
+
+  /* if upstream doesn't know the size, it's likely that it's not seekable in
+   * practice even if it technically may be seekable */
+  if (seekable && (start != 0 || stop <= start)) {
+    GST_DEBUG_OBJECT (mp3parse, "seekable but unknown start/stop -> disable");
+    seekable = FALSE;
+  }
+
+  /* let's not put every single frame into our index */
+  if (seekable) {
+    if (stop < 10 * 1024 * 1024)
+      idx_interval = 100;
+    else if (stop < 100 * 1024 * 1024)
+      idx_interval = 500;
+    else
+      idx_interval = 1000;
+  }
+
+done:
+
+  GST_INFO_OBJECT (mp3parse, "seekable: %d (%" G_GUINT64_FORMAT " - %"
+      G_GUINT64_FORMAT ")", seekable, start, stop);
+  mp3parse->seekable = seekable;
+
+  GST_INFO_OBJECT (mp3parse, "idx_interval: %ums", idx_interval);
+  mp3parse->idx_interval = idx_interval * GST_MSECOND;
+
+  gst_query_unref (query);
+}
+
+/* Flush some number of bytes and update tracked offsets */
+static void
+gst_mp3parse_flush_bytes (GstMPEGAudioParse * mp3parse, int bytes)
+{
+  gst_adapter_flush (mp3parse->adapter, bytes);
+  if (mp3parse->cur_offset != -1)
+    mp3parse->cur_offset += bytes;
+  mp3parse->tracked_offset += bytes;
+}
+
+/* Perform extended validation to check that subsequent headers match
+   the first header given here in important characteristics, to avoid
+   false sync. We look for a minimum of MIN_RESYNC_FRAMES consecutive
+   frames to match their major characteristics.
+
+   If at_eos is set to TRUE, we just check that we don't find any invalid
+   frames in whatever data is available, rather than requiring a full
+   MIN_RESYNC_FRAMES of data.
+
+   Returns TRUE if we've seen enough data to validate or reject the frame.
+   If TRUE is returned, then *valid contains TRUE if it validated, or false
+   if we decided it was false sync.
+ */
+static gboolean
+gst_mp3parse_validate_extended (GstMPEGAudioParse * mp3parse, guint32 header,
+    int bpf, gboolean at_eos, gboolean * valid)
+{
+  guint32 next_header;
+  const guint8 *data;
+  guint available;
+  int frames_found = 1;
+  int offset = bpf;
+
+  while (frames_found < MIN_RESYNC_FRAMES) {
+    /* Check if we have enough data for all these frames, plus the next
+       frame header. */
+    available = gst_adapter_available (mp3parse->adapter);
+    if (available < offset + 4) {
+      if (at_eos) {
+        /* Running out of data at EOS is fine; just accept it */
+        *valid = TRUE;
+        return TRUE;
+      } else {
+        return FALSE;
+      }
+    }
+
+    data = gst_adapter_peek (mp3parse->adapter, offset + 4);
+    next_header = GST_READ_UINT32_BE (data + offset);
+    GST_DEBUG_OBJECT (mp3parse, "At %d: header=%08X, header2=%08X, bpf=%d",
+        offset, (unsigned int) header, (unsigned int) next_header, bpf);
+
+/* mask the bits which are allowed to differ between frames */
+#define HDRMASK ~((0xF << 12)  /* bitrate */ | \
+                  (0x1 <<  9)  /* padding */ | \
+                  (0xf <<  4)  /* mode|mode extension */ | \
+                  (0xf))        /* copyright|emphasis */
+
+    if ((next_header & HDRMASK) != (header & HDRMASK)) {
+      /* If any of the unmasked bits don't match, then it's not valid */
+      GST_DEBUG_OBJECT (mp3parse, "next header doesn't match "
+          "(header=%08X (%08X), header2=%08X (%08X), bpf=%d)",
+          (guint) header, (guint) header & HDRMASK, (guint) next_header,
+          (guint) next_header & HDRMASK, bpf);
+      *valid = FALSE;
+      return TRUE;
+    } else if ((((next_header >> 12) & 0xf) == 0) ||
+        (((next_header >> 12) & 0xf) == 0xf)) {
+      /* The essential parts were the same, but the bitrate held an
+         invalid value - also reject */
+      GST_DEBUG_OBJECT (mp3parse, "next header invalid (bitrate)");
+      *valid = FALSE;
+      return TRUE;
+    }
+
+    bpf = mp3_type_frame_length_from_header (mp3parse, next_header,
+        NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+    offset += bpf;
+    frames_found++;
+  }
+
+  *valid = TRUE;
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_mp3parse_handle_data (GstMPEGAudioParse * mp3parse, gboolean at_eos)
+{
+  GstFlowReturn flow = GST_FLOW_OK;
+  const guchar *data;
+  guint32 header;
+  int bpf;
+  guint available;
+  guint bitrate, layer, rate, channels, version, mode, crc;
+  gboolean caps_change;
+
+  /* while we still have at least 4 bytes (for the header) available */
+  while (gst_adapter_available (mp3parse->adapter) >= 4) {
+    /* Get the header bytes, check if they're potentially valid */
+    data = gst_adapter_peek (mp3parse->adapter, 4);
+    header = GST_READ_UINT32_BE (data);
+
+    if (!head_check (mp3parse, header)) {
+      /* Not a valid MP3 header; we start looking forward byte-by-byte trying to
+         find a place to resync */
+      if (!mp3parse->resyncing)
+        mp3parse->sync_offset = mp3parse->tracked_offset;
+      mp3parse->resyncing = TRUE;
+      gst_mp3parse_flush_bytes (mp3parse, 1);
+      GST_DEBUG_OBJECT (mp3parse, "wrong header, skipping byte");
+      continue;
+    }
+
+    /* We have a potentially valid header.
+       If this is just a normal 'next frame', we go ahead and output it.
+
+       However, sometimes, we do additional validation to ensure we haven't
+       got false sync (common with mp3 due to the short sync word).
+       The additional validation requires that we find several consecutive mp3
+       frames with the same major parameters, or reach EOS with a smaller
+       number of valid-looking frames.
+
+       We do this if:
+       - This is the very first frame we've processed
+       - We're resyncing after a non-accurate seek, or after losing sync
+       due to invalid data.
+       - The format of the stream changes in a major way (number of channels,
+       sample rate, layer, or mpeg version).
+     */
+    available = gst_adapter_available (mp3parse->adapter);
+
+    if (G_UNLIKELY (mp3parse->resyncing &&
+            mp3parse->tracked_offset - mp3parse->sync_offset > 2 * 1024 * 1024))
+      goto sync_failure;
+
+    bpf = mp3_type_frame_length_from_header (mp3parse, header,
+        &version, &layer, &channels, &bitrate, &rate, &mode, &crc);
+    g_assert (bpf != 0);
+
+    if (channels != mp3parse->channels ||
+        rate != mp3parse->rate || layer != mp3parse->layer ||
+        version != mp3parse->version)
+      caps_change = TRUE;
+    else
+      caps_change = FALSE;
+
+    if (mp3parse->resyncing || caps_change) {
+      gboolean valid;
+      if (!gst_mp3parse_validate_extended (mp3parse, header, bpf, at_eos,
+              &valid)) {
+        /* Not enough data to validate; wait for more */
+        break;
+      }
+
+      if (!valid) {
+        /* Extended validation failed; we probably got false sync.
+           Continue searching from the next byte in the stream */
+        if (!mp3parse->resyncing)
+          mp3parse->sync_offset = mp3parse->tracked_offset;
+        mp3parse->resyncing = TRUE;
+        gst_mp3parse_flush_bytes (mp3parse, 1);
+        continue;
+      }
+    }
+
+    /* if we don't have the whole frame... */
+    if (available < bpf) {
+      GST_DEBUG_OBJECT (mp3parse, "insufficient data available, need "
+          "%d bytes, have %d", bpf, available);
+      break;
+    }
+
+    if (caps_change) {
+      GstCaps *caps;
+
+      caps = mp3_caps_create (version, layer, channels, rate);
+      gst_pad_set_caps (mp3parse->srcpad, caps);
+      gst_caps_unref (caps);
+
+      mp3parse->channels = channels;
+      mp3parse->rate = rate;
+
+      mp3parse->layer = layer;
+      mp3parse->version = version;
+
+      /* see http://www.codeproject.com/audio/MPEGAudioInfo.asp */
+      if (mp3parse->layer == 1)
+        mp3parse->spf = 384;
+      else if (mp3parse->layer == 2)
+        mp3parse->spf = 1152;
+      else if (mp3parse->version == 1) {
+        mp3parse->spf = 1152;
+      } else {
+        /* MPEG-2 or "2.5" */
+        mp3parse->spf = 576;
+      }
+
+      mp3parse->max_bitreservoir = gst_util_uint64_scale (GST_SECOND,
+          ((version == 1) ? 10 : 30) * mp3parse->spf, mp3parse->rate);
+    }
+
+    mp3parse->bit_rate = bitrate;
+
+    /* Check the first frame for a Xing header to get our total length */
+    if (mp3parse->frame_count == 0) {
+      /* For the first frame in the file, look for a Xing frame after 
+       * the header, and output a codec tag */
+      gst_mp3parse_handle_first_frame (mp3parse);
+
+      /* Check if we're seekable */
+      gst_mp3parse_check_seekability (mp3parse);
+    }
+
+    /* Update VBR stats */
+    mp3parse->bitrate_sum += mp3parse->bit_rate;
+    mp3parse->frame_count++;
+    /* Compute the average bitrate, rounded up to the nearest 1000 bits */
+    mp3parse->avg_bitrate =
+        (mp3parse->bitrate_sum / mp3parse->frame_count + 500);
+    mp3parse->avg_bitrate -= mp3parse->avg_bitrate % 1000;
+
+    if (!mp3parse->skip) {
+      mp3parse->resyncing = FALSE;
+      flow = gst_mp3parse_emit_frame (mp3parse, bpf, mode, crc);
+      if (flow != GST_FLOW_OK)
+        break;
+    } else {
+      GST_DEBUG_OBJECT (mp3parse, "skipping buffer of %d bytes", bpf);
+      gst_mp3parse_flush_bytes (mp3parse, bpf);
+      mp3parse->skip--;
+    }
+  }
+
+  return flow;
+
+  /* ERRORS */
+sync_failure:
+  {
+    GST_ELEMENT_ERROR (mp3parse, STREAM, DECODE,
+        ("Failed to parse stream"), (NULL));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_mp3parse_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstMPEGAudioParse *mp3parse;
+  GstClockTime timestamp;
+
+  mp3parse = GST_MP3PARSE (GST_PAD_PARENT (pad));
+
+  GST_LOG_OBJECT (mp3parse, "buffer of %d bytes", GST_BUFFER_SIZE (buf));
+
+  timestamp = GST_BUFFER_TIMESTAMP (buf);
+
+  mp3parse->discont |= GST_BUFFER_IS_DISCONT (buf);
+
+  /* If we don't yet have a next timestamp, save it and the incoming offset
+   * so we can apply it to the right outgoing buffer */
+  if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
+    gint64 avail = gst_adapter_available (mp3parse->adapter);
+
+    mp3parse->pending_ts = timestamp;
+    mp3parse->pending_offset = mp3parse->tracked_offset + avail;
+
+    /* If we have no data pending and the next timestamp is
+     * invalid we can use the upstream timestamp for the next frame.
+     *
+     * This will give us a timestamp if we're resyncing and upstream
+     * gave us -1 as offset. */
+    if (avail == 0 && !GST_CLOCK_TIME_IS_VALID (mp3parse->next_ts))
+      mp3parse->next_ts = timestamp;
+
+    GST_LOG_OBJECT (mp3parse, "Have pending ts %" GST_TIME_FORMAT
+        " to apply in %" G_GINT64_FORMAT " bytes (@ off %" G_GINT64_FORMAT ")",
+        GST_TIME_ARGS (mp3parse->pending_ts), avail, mp3parse->pending_offset);
+  }
+
+  /* Update the cur_offset we'll apply to outgoing buffers */
+  if (mp3parse->cur_offset == -1 && GST_BUFFER_OFFSET (buf) != -1)
+    mp3parse->cur_offset = GST_BUFFER_OFFSET (buf);
+
+  /* And add the data to the pool */
+  gst_adapter_push (mp3parse->adapter, buf);
+
+  return gst_mp3parse_handle_data (mp3parse, FALSE);
+}
+
+static gboolean
+head_check (GstMPEGAudioParse * mp3parse, unsigned long head)
+{
+  GST_DEBUG_OBJECT (mp3parse, "checking mp3 header 0x%08lx", head);
+  /* if it's not a valid sync */
+  if ((head & 0xffe00000) != 0xffe00000) {
+    GST_WARNING_OBJECT (mp3parse, "invalid sync");
+    return FALSE;
+  }
+  /* if it's an invalid MPEG version */
+  if (((head >> 19) & 3) == 0x1) {
+    GST_WARNING_OBJECT (mp3parse, "invalid MPEG version: 0x%lx",
+        (head >> 19) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid layer */
+  if (!((head >> 17) & 3)) {
+    GST_WARNING_OBJECT (mp3parse, "invalid layer: 0x%lx", (head >> 17) & 3);
+    return FALSE;
+  }
+  /* if it's an invalid bitrate */
+  if (((head >> 12) & 0xf) == 0x0) {
+    GST_WARNING_OBJECT (mp3parse, "invalid bitrate: 0x%lx."
+        "Free format files are not supported yet", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  if (((head >> 12) & 0xf) == 0xf) {
+    GST_WARNING_OBJECT (mp3parse, "invalid bitrate: 0x%lx", (head >> 12) & 0xf);
+    return FALSE;
+  }
+  /* if it's an invalid samplerate */
+  if (((head >> 10) & 0x3) == 0x3) {
+    GST_WARNING_OBJECT (mp3parse, "invalid samplerate: 0x%lx",
+        (head >> 10) & 0x3);
+    return FALSE;
+  }
+
+  if ((head & 0x3) == 0x2) {
+    /* Ignore this as there are some files with emphasis 0x2 that can
+     * be played fine. See BGO #537235 */
+    GST_WARNING_OBJECT (mp3parse, "invalid emphasis: 0x%lx", head & 0x3);
+  }
+
+  return TRUE;
+}
+
+static void
+gst_mp3parse_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstMPEGAudioParse *src;
+
+  src = GST_MP3PARSE (object);
+
+  switch (prop_id) {
+    case ARG_SKIP:
+      src->skip = g_value_get_int (value);
+      break;
+    default:
+      break;
+  }
+}
+
+static void
+gst_mp3parse_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstMPEGAudioParse *src;
+
+  src = GST_MP3PARSE (object);
+
+  switch (prop_id) {
+    case ARG_SKIP:
+      g_value_set_int (value, src->skip);
+      break;
+    case ARG_BIT_RATE:
+      g_value_set_int (value, src->bit_rate * 1000);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstStateChangeReturn
+gst_mp3parse_change_state (GstElement * element, GstStateChange transition)
+{
+  GstMPEGAudioParse *mp3parse;
+  GstStateChangeReturn result;
+
+  mp3parse = GST_MP3PARSE (element);
+
+  result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_mp3parse_reset (mp3parse);
+      break;
+    default:
+      break;
+  }
+
+  return result;
+}
+
+static gboolean
+mp3parse_total_bytes (GstMPEGAudioParse * mp3parse, gint64 * total)
+{
+  GstFormat fmt = GST_FORMAT_BYTES;
+
+  if (gst_pad_query_peer_duration (mp3parse->sinkpad, &fmt, total))
+    return TRUE;
+
+  if (mp3parse->xing_flags & XING_BYTES_FLAG) {
+    *total = mp3parse->xing_bytes;
+    return TRUE;
+  }
+
+  if (mp3parse->vbri_bytes != 0 && mp3parse->vbri_valid) {
+    *total = mp3parse->vbri_bytes;
+    return TRUE;
+  }
+
+  return FALSE;
+}
+
+static gboolean
+mp3parse_total_time (GstMPEGAudioParse * mp3parse, GstClockTime * total)
+{
+  gint64 total_bytes;
+
+  *total = GST_CLOCK_TIME_NONE;
+
+  if (mp3parse->xing_flags & XING_FRAMES_FLAG) {
+    *total = mp3parse->xing_total_time;
+    return TRUE;
+  }
+
+  if (mp3parse->vbri_total_time != 0 && mp3parse->vbri_valid) {
+    *total = mp3parse->vbri_total_time;
+    return TRUE;
+  }
+
+  /* Calculate time from the measured bitrate */
+  if (!mp3parse_total_bytes (mp3parse, &total_bytes))
+    return FALSE;
+
+  if (total_bytes != -1
+      && !mp3parse_bytepos_to_time (mp3parse, total_bytes, total, TRUE))
+    return FALSE;
+
+  return TRUE;
+}
+
+/* Convert a timestamp to the file position required to start decoding that
+ * timestamp. For now, this just uses the avg bitrate. Later, use an 
+ * incrementally accumulated seek table */
+static gboolean
+mp3parse_time_to_bytepos (GstMPEGAudioParse * mp3parse, GstClockTime ts,
+    gint64 * bytepos)
+{
+  gint64 total_bytes;
+  GstClockTime total_time;
+
+  /* -1 always maps to -1 */
+  if (ts == -1) {
+    *bytepos = -1;
+    return TRUE;
+  }
+
+  /* If XING seek table exists use this for time->byte conversion */
+  if ((mp3parse->xing_flags & XING_TOC_FLAG) &&
+      (total_bytes = mp3parse->xing_bytes) &&
+      (total_time = mp3parse->xing_total_time)) {
+    gdouble fa, fb, fx;
+    gdouble percent =
+        CLAMP ((100.0 * gst_util_guint64_to_gdouble (ts)) /
+        gst_util_guint64_to_gdouble (total_time), 0.0, 100.0);
+    gint index = CLAMP (percent, 0, 99);
+
+    fa = mp3parse->xing_seek_table[index];
+    if (index < 99)
+      fb = mp3parse->xing_seek_table[index + 1];
+    else
+      fb = 256.0;
+
+    fx = fa + (fb - fa) * (percent - index);
+
+    *bytepos = (1.0 / 256.0) * fx * total_bytes;
+
+    return TRUE;
+  }
+
+  if (mp3parse->vbri_seek_table && (total_bytes = mp3parse->vbri_bytes) &&
+      (total_time = mp3parse->vbri_total_time)) {
+    gint i, j;
+    gdouble a, b, fa, fb;
+
+    i = gst_util_uint64_scale (ts, mp3parse->vbri_seek_points - 1, total_time);
+    i = CLAMP (i, 0, mp3parse->vbri_seek_points - 1);
+
+    a = gst_guint64_to_gdouble (gst_util_uint64_scale (i, total_time,
+            mp3parse->vbri_seek_points));
+    fa = 0.0;
+    for (j = i; j >= 0; j--)
+      fa += mp3parse->vbri_seek_table[j];
+
+    if (i + 1 < mp3parse->vbri_seek_points) {
+      b = gst_guint64_to_gdouble (gst_util_uint64_scale (i + 1, total_time,
+              mp3parse->vbri_seek_points));
+      fb = fa + mp3parse->vbri_seek_table[i + 1];
+    } else {
+      b = gst_guint64_to_gdouble (total_time);
+      fb = total_bytes;
+    }
+
+    *bytepos = fa + ((fb - fa) / (b - a)) * (gst_guint64_to_gdouble (ts) - a);
+
+    return TRUE;
+  }
+
+  if (mp3parse->avg_bitrate == 0)
+    goto no_bitrate;
+
+  *bytepos =
+      gst_util_uint64_scale (ts, mp3parse->avg_bitrate, (8 * GST_SECOND));
+  return TRUE;
+no_bitrate:
+  GST_DEBUG_OBJECT (mp3parse, "Cannot seek yet - no average bitrate");
+  return FALSE;
+}
+
+static gboolean
+mp3parse_bytepos_to_time (GstMPEGAudioParse * mp3parse,
+    gint64 bytepos, GstClockTime * ts, gboolean from_total_time)
+{
+  gint64 total_bytes;
+  GstClockTime total_time;
+
+  if (bytepos == -1) {
+    *ts = GST_CLOCK_TIME_NONE;
+    return TRUE;
+  }
+
+  if (bytepos == 0) {
+    *ts = 0;
+    return TRUE;
+  }
+
+  /* If XING seek table exists use this for byte->time conversion */
+  if (!from_total_time && (mp3parse->xing_flags & XING_TOC_FLAG) &&
+      (total_bytes = mp3parse->xing_bytes) &&
+      (total_time = mp3parse->xing_total_time)) {
+    gdouble fa, fb, fx;
+    gdouble pos;
+    gint index;
+
+    pos = CLAMP ((bytepos * 256.0) / total_bytes, 0.0, 256.0);
+    index = CLAMP (pos, 0, 255);
+    fa = mp3parse->xing_seek_table_inverse[index];
+    if (index < 255)
+      fb = mp3parse->xing_seek_table_inverse[index + 1];
+    else
+      fb = 10000.0;
+
+    fx = fa + (fb - fa) * (pos - index);
+
+    *ts = (1.0 / 10000.0) * fx * gst_util_guint64_to_gdouble (total_time);
+
+    return TRUE;
+  }
+
+  if (!from_total_time && mp3parse->vbri_seek_table &&
+      (total_bytes = mp3parse->vbri_bytes) &&
+      (total_time = mp3parse->vbri_total_time)) {
+    gint i = 0;
+    guint64 sum = 0;
+    gdouble a, b, fa, fb;
+
+    do {
+      sum += mp3parse->vbri_seek_table[i];
+      i++;
+    } while (i + 1 < mp3parse->vbri_seek_points
+        && sum + mp3parse->vbri_seek_table[i] < bytepos);
+    i--;
+
+    a = gst_guint64_to_gdouble (sum);
+    fa = gst_guint64_to_gdouble (gst_util_uint64_scale (i, total_time,
+            mp3parse->vbri_seek_points));
+
+    if (i + 1 < mp3parse->vbri_seek_points) {
+      b = a + mp3parse->vbri_seek_table[i + 1];
+      fb = gst_guint64_to_gdouble (gst_util_uint64_scale (i + 1, total_time,
+              mp3parse->vbri_seek_points));
+    } else {
+      b = total_bytes;
+      fb = gst_guint64_to_gdouble (total_time);
+    }
+
+    *ts = gst_gdouble_to_guint64 (fa + ((fb - fa) / (b - a)) * (bytepos - a));
+
+    return TRUE;
+  }
+
+  /* Cannot convert anything except 0 if we don't have a bitrate yet */
+  if (mp3parse->avg_bitrate == 0)
+    return FALSE;
+
+  *ts = (GstClockTime) gst_util_uint64_scale (GST_SECOND, bytepos * 8,
+      mp3parse->avg_bitrate);
+  return TRUE;
+}
+
+static gboolean
+mp3parse_handle_seek (GstMPEGAudioParse * mp3parse, GstEvent * event)
+{
+  GstFormat format;
+  gdouble rate;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  gint64 byte_cur, byte_stop;
+  MPEGAudioPendingAccurateSeek *seek;
+  GstClockTime start;
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &cur_type, &cur,
+      &stop_type, &stop);
+
+  GST_DEBUG_OBJECT (mp3parse, "Performing seek to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (cur));
+
+  /* For any format other than TIME, see if upstream handles
+   * it directly or fail. For TIME, try upstream, but do it ourselves if
+   * it fails upstream */
+  if (format != GST_FORMAT_TIME) {
+    gst_event_ref (event);
+    return gst_pad_push_event (mp3parse->sinkpad, event);
+  } else {
+    gst_event_ref (event);
+    if (gst_pad_push_event (mp3parse->sinkpad, event))
+      return TRUE;
+  }
+
+  seek = g_new0 (MPEGAudioPendingAccurateSeek, 1);
+
+  seek->segment = mp3parse->segment;
+
+  gst_segment_set_seek (&seek->segment, rate, GST_FORMAT_TIME,
+      flags, cur_type, cur, stop_type, stop, NULL);
+
+  /* Handle TIME based seeks by converting to a BYTE position */
+
+  /* For accurate seeking get the frame 9 (MPEG1) or 29 (MPEG2) frames
+   * before the one we want to seek to and push them all to the decoder.
+   *
+   * This is necessary because of the bit reservoir. See
+   * http://www.mars.org/mailman/public/mad-dev/2002-May/000634.html
+   *
+   */
+
+  if (flags & GST_SEEK_FLAG_ACCURATE) {
+    if (!mp3parse->seek_table) {
+      byte_cur = 0;
+      byte_stop = -1;
+      start = 0;
+    } else {
+      MPEGAudioSeekEntry *entry = NULL, *start_entry = NULL, *stop_entry = NULL;
+      GList *start_node, *stop_node;
+      gint64 seek_ts = (cur > mp3parse->max_bitreservoir) ?
+          (cur - mp3parse->max_bitreservoir) : 0;
+
+      for (start_node = mp3parse->seek_table; start_node;
+          start_node = start_node->next) {
+        entry = start_node->data;
+
+        if (seek_ts >= entry->timestamp) {
+          start_entry = entry;
+          break;
+        }
+      }
+
+      if (!start_entry) {
+        start_entry = mp3parse->seek_table->data;
+        start = start_entry->timestamp;
+        byte_cur = start_entry->byte;
+      } else {
+        start = start_entry->timestamp;
+        byte_cur = start_entry->byte;
+      }
+
+      for (stop_node = mp3parse->seek_table; stop_node;
+          stop_node = stop_node->next) {
+        entry = stop_node->data;
+
+        if (stop >= entry->timestamp) {
+          stop_node = stop_node->prev;
+          stop_entry = (stop_node) ? stop_node->data : NULL;
+          break;
+        }
+      }
+
+      if (!stop_entry) {
+        byte_stop = -1;
+      } else {
+        byte_stop = stop_entry->byte;
+      }
+
+    }
+    event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, cur_type,
+        byte_cur, stop_type, byte_stop);
+    g_mutex_lock (mp3parse->pending_seeks_lock);
+    seek->upstream_start = byte_cur;
+    seek->timestamp_start = start;
+    mp3parse->pending_accurate_seeks =
+        g_slist_prepend (mp3parse->pending_accurate_seeks, seek);
+    g_mutex_unlock (mp3parse->pending_seeks_lock);
+    if (gst_pad_push_event (mp3parse->sinkpad, event)) {
+      mp3parse->exact_position = TRUE;
+      return TRUE;
+    } else {
+      mp3parse->exact_position = TRUE;
+      g_mutex_lock (mp3parse->pending_seeks_lock);
+      mp3parse->pending_accurate_seeks =
+          g_slist_remove (mp3parse->pending_accurate_seeks, seek);
+      g_mutex_unlock (mp3parse->pending_seeks_lock);
+      g_free (seek);
+      return FALSE;
+    }
+  }
+
+  mp3parse->exact_position = FALSE;
+
+  /* Convert the TIME to the appropriate BYTE position at which to resume
+   * decoding. */
+  if (!mp3parse_time_to_bytepos (mp3parse, (GstClockTime) cur, &byte_cur))
+    goto no_pos;
+  if (!mp3parse_time_to_bytepos (mp3parse, (GstClockTime) stop, &byte_stop))
+    goto no_pos;
+
+  GST_DEBUG_OBJECT (mp3parse, "Seeking to byte range %" G_GINT64_FORMAT
+      " to %" G_GINT64_FORMAT, byte_cur, byte_stop);
+
+  /* Send BYTE based seek upstream */
+  event = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, cur_type,
+      byte_cur, stop_type, byte_stop);
+
+  GST_LOG_OBJECT (mp3parse, "Storing pending seek");
+  g_mutex_lock (mp3parse->pending_seeks_lock);
+  seek->upstream_start = byte_cur;
+  seek->timestamp_start = cur;
+  mp3parse->pending_nonaccurate_seeks =
+      g_slist_prepend (mp3parse->pending_nonaccurate_seeks, seek);
+  g_mutex_unlock (mp3parse->pending_seeks_lock);
+  if (gst_pad_push_event (mp3parse->sinkpad, event)) {
+    return TRUE;
+  } else {
+    g_mutex_lock (mp3parse->pending_seeks_lock);
+    mp3parse->pending_nonaccurate_seeks =
+        g_slist_remove (mp3parse->pending_nonaccurate_seeks, seek);
+    g_mutex_unlock (mp3parse->pending_seeks_lock);
+    g_free (seek);
+    return FALSE;
+  }
+
+no_pos:
+  GST_DEBUG_OBJECT (mp3parse,
+      "Could not determine byte position for desired time");
+  return FALSE;
+}
+
+static gboolean
+mp3parse_src_event (GstPad * pad, GstEvent * event)
+{
+  GstMPEGAudioParse *mp3parse;
+  gboolean res = FALSE;
+
+  mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+      res = mp3parse_handle_seek (mp3parse, event);
+      gst_event_unref (event);
+      break;
+    default:
+      res = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (mp3parse);
+  return res;
+}
+
+static gboolean
+mp3parse_src_query (GstPad * pad, GstQuery * query)
+{
+  GstFormat format;
+  GstClockTime total;
+  GstMPEGAudioParse *mp3parse;
+  gboolean res = FALSE;
+  GstPad *peer;
+
+  mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad));
+
+  GST_LOG_OBJECT (pad, "%s query", GST_QUERY_TYPE_NAME (query));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+      gst_query_parse_position (query, &format, NULL);
+
+      if (format == GST_FORMAT_BYTES || format == GST_FORMAT_DEFAULT) {
+        if (mp3parse->cur_offset != -1) {
+          gst_query_set_position (query, GST_FORMAT_BYTES,
+              mp3parse->cur_offset);
+          res = TRUE;
+        }
+      } else if (format == GST_FORMAT_TIME) {
+        if (mp3parse->next_ts == GST_CLOCK_TIME_NONE)
+          goto out;
+        gst_query_set_position (query, GST_FORMAT_TIME, mp3parse->next_ts);
+        res = TRUE;
+      }
+
+      /* If no answer above, see if upstream knows */
+      if (!res) {
+        if ((peer = gst_pad_get_peer (mp3parse->sinkpad)) != NULL) {
+          res = gst_pad_query (peer, query);
+          gst_object_unref (peer);
+          if (res)
+            goto out;
+        }
+      }
+      break;
+    case GST_QUERY_DURATION:
+      gst_query_parse_duration (query, &format, NULL);
+
+      /* First, see if upstream knows */
+      if ((peer = gst_pad_get_peer (mp3parse->sinkpad)) != NULL) {
+        res = gst_pad_query (peer, query);
+        gst_object_unref (peer);
+        if (res)
+          goto out;
+      }
+
+      if (format == GST_FORMAT_TIME) {
+        if (!mp3parse_total_time (mp3parse, &total) || total == -1)
+          goto out;
+        gst_query_set_duration (query, format, total);
+        res = TRUE;
+      }
+      break;
+    case GST_QUERY_SEEKING:
+      gst_query_parse_seeking (query, &format, NULL, NULL, NULL);
+
+      /* does upstream handle ? */
+      if ((peer = gst_pad_get_peer (mp3parse->sinkpad)) != NULL) {
+        res = gst_pad_query (peer, query);
+        gst_object_unref (peer);
+      }
+      /* we may be able to help if in TIME */
+      if (format == GST_FORMAT_TIME) {
+        gboolean seekable;
+
+        gst_query_parse_seeking (query, &format, &seekable, NULL, NULL);
+        /* already OK if upstream takes care */
+        if (!(res && seekable)) {
+          gint64 pos;
+
+          seekable = TRUE;
+          if (!mp3parse_total_time (mp3parse, &total) || total == -1) {
+            seekable = FALSE;
+          } else if (!mp3parse_time_to_bytepos (mp3parse, 0, &pos)) {
+            seekable = FALSE;
+          } else {
+            GstQuery *q;
+
+            q = gst_query_new_seeking (GST_FORMAT_BYTES);
+            if (!gst_pad_peer_query (mp3parse->sinkpad, q)) {
+              seekable = FALSE;
+            } else {
+              gst_query_parse_seeking (q, &format, &seekable, NULL, NULL);
+            }
+            gst_query_unref (q);
+          }
+          gst_query_set_seeking (query, GST_FORMAT_TIME, seekable, 0, total);
+          res = TRUE;
+        }
+      }
+      break;
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+
+out:
+  gst_object_unref (mp3parse);
+  return res;
+}
+
+static const GstQueryType *
+mp3parse_get_query_types (GstPad * pad G_GNUC_UNUSED)
+{
+  static const GstQueryType query_types[] = {
+    GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
+    0
+  };
+
+  return query_types;
+}
diff --git a/gst/mpegaudioparse/gstmpegaudioparse.h b/gst/mpegaudioparse/gstmpegaudioparse.h
new file mode 100644 (file)
index 0000000..3a2852d
--- /dev/null
@@ -0,0 +1,151 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __MP3PARSE_H__
+#define __MP3PARSE_H__
+
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MP3PARSE \
+  (gst_mp3parse_get_type())
+#define GST_MP3PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MP3PARSE,GstMPEGAudioParse))
+#define GST_MP3PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MP3PARSE,GstMPEGAudioParseClass))
+#define GST_IS_MP3PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MP3PARSE))
+#define GST_IS_MP3PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MP3PARSE))
+
+typedef struct _GstMPEGAudioParse GstMPEGAudioParse;
+typedef struct _GstMPEGAudioParseClass GstMPEGAudioParseClass;
+typedef struct _MPEGAudioSeekEntry MPEGAudioSeekEntry;
+typedef struct _MPEGAudioPendingAccurateSeek MPEGAudioPendingAccurateSeek;
+
+
+struct _MPEGAudioSeekEntry {
+  gint64 byte;
+  GstClockTime timestamp;
+};
+
+struct _MPEGAudioPendingAccurateSeek {
+  GstSegment segment;
+  gint64 upstream_start;
+  GstClockTime timestamp_start;
+};
+
+struct _GstMPEGAudioParse {
+  GstElement element;
+
+  GstPad *sinkpad, *srcpad;
+
+  GstSegment segment;
+  GstClockTime next_ts;
+  gboolean discont;
+
+  /* Offset as supplied by incoming buffers */
+  gint64 cur_offset;
+
+  /* Upcoming timestamp given on an incoming buffer and
+   * the offset at which it becomes active */
+  GstClockTime pending_ts;
+  gint64 pending_offset;
+  /* Offset since the last newseg */
+  gint64 tracked_offset;
+  /* tracked_offset when resyncing started */
+  gint64 sync_offset;
+
+  GstAdapter *adapter;
+
+  guint skip; /* number of frames to skip */
+  guint bit_rate; /* in kbps */
+  gint channels, rate, layer, version;
+  GstClockTime max_bitreservoir;
+  gint spf; /* Samples per frame */
+
+  gboolean resyncing; /* True when attempting to resync (stricter checks are
+                         performed) */
+  gboolean sent_codec_tag;
+
+  /* VBR tracking */
+  guint   avg_bitrate;
+  guint64 bitrate_sum;
+  guint   frame_count;
+  guint   last_posted_bitrate;
+  gint    last_posted_crc;
+  guint   last_posted_channel_mode;
+
+  /* Xing info */
+  guint32 xing_flags;
+  guint32 xing_frames;
+  GstClockTime xing_total_time;
+  guint32 xing_bytes;
+  /* percent -> filepos mapping */
+  guchar xing_seek_table[100];
+  /* filepos -> percent mapping */
+  guint16 xing_seek_table_inverse[256];
+  guint32 xing_vbr_scale;
+  guint   xing_bitrate;
+
+  /* VBRI info */
+  guint32 vbri_frames;
+  GstClockTime vbri_total_time;
+  guint32 vbri_bytes;
+  guint vbri_bitrate;
+  guint vbri_seek_points;
+  guint32 *vbri_seek_table;
+  gboolean vbri_valid;
+
+  /* Accurate seeking */
+  GList *seek_table;
+  GMutex *pending_seeks_lock;
+  GSList *pending_accurate_seeks;
+  gboolean exact_position;
+
+  GSList *pending_nonaccurate_seeks;
+
+  /* Track whether we're seekable (in BYTES format, if upstream operates in
+   * TIME format, we don't care about seekability and assume upstream handles
+   * it). The seek table for accurate seeking is not maintained if we're not
+   * seekable. */
+  gboolean seekable;
+
+  /* minimum distance between two index entries */
+  GstClockTimeDiff idx_interval;
+
+  /* pending segment */
+  GstEvent *pending_segment;
+  /* pending events */
+  GList *pending_events;
+};
+
+struct _GstMPEGAudioParseClass {
+  GstElementClass parent_class;
+};
+
+GType gst_mp3parse_get_type(void);
+
+G_END_DECLS
+
+#endif /* __MP3PARSE_H__ */
diff --git a/gst/mpegaudioparse/gstxingmux.c b/gst/mpegaudioparse/gstxingmux.c
new file mode 100644 (file)
index 0000000..e0207c2
--- /dev/null
@@ -0,0 +1,678 @@
+/*
+ * Copyright (c) 2006 Christophe Fergeau  <teuf@gnome.org>
+ * Copyright (c) 2008 Sebastian Dröge  <slomo@circular-chaos.org>
+ *
+ * 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.
+ */
+
+/* Xing SDK: http://www.mp3-tech.org/programmer/sources/vbrheadersdk.zip */
+
+
+/**
+ * SECTION:element-xingmux
+ *
+ * xingmux adds a Xing header to MP3 files. This contains information about the duration and size
+ * of the file and a seek table and is very useful for getting an almost correct duration and better
+ * seeking on VBR MP3 files.
+ * 
+ * This element will remove any existing Xing, LAME or VBRI headers from the beginning of the file.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch audiotestsrc num-buffers=1000 ! audioconvert ! lame ! xingmux ! filesink location=test.mp3
+ * gst-launch filesrc location=test.mp3 ! xingmux ! filesink location=test2.mp3
+ * gst-launch filesrc location=test.mp3 ! mp3parse ! xingmux ! filesink location=test2.mp3
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include "gstxingmux.h"
+
+GST_DEBUG_CATEGORY_STATIC (xing_mux_debug);
+#define GST_CAT_DEFAULT xing_mux_debug
+
+GST_BOILERPLATE (GstXingMux, gst_xing_mux, GstElement, GST_TYPE_ELEMENT);
+
+/* Xing Header stuff */
+#define GST_XING_FRAME_FIELD   (1 << 0)
+#define GST_XING_BYTES_FIELD   (1 << 1)
+#define GST_XING_TOC_FIELD     (1 << 2)
+#define GST_XING_QUALITY_FIELD (1 << 3)
+
+typedef struct _GstXingSeekEntry
+{
+  gint64 timestamp;
+  gint byte;
+} GstXingSeekEntry;
+
+static inline GstXingSeekEntry *
+gst_xing_seek_entry_new (void)
+{
+  return g_slice_new (GstXingSeekEntry);
+}
+
+static inline void
+gst_xing_seek_entry_free (GstXingSeekEntry * entry)
+{
+  g_slice_free (GstXingSeekEntry, entry);
+}
+
+static void gst_xing_mux_finalize (GObject * obj);
+static GstStateChangeReturn
+gst_xing_mux_change_state (GstElement * element, GstStateChange transition);
+static GstFlowReturn gst_xing_mux_chain (GstPad * pad, GstBuffer * buffer);
+static gboolean gst_xing_mux_sink_event (GstPad * pad, GstEvent * event);
+
+static GstStaticPadTemplate gst_xing_mux_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, " "layer = (int) [ 1, 3 ]"));
+
+
+static GstStaticPadTemplate gst_xing_mux_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 1, " "layer = (int) [ 1, 3 ]"));
+static const guint mp3types_bitrates[2][3][16] = {
+  {
+        {0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,},
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,},
+        {0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320,}
+      },
+  {
+        {0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,},
+        {0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,}
+      },
+};
+
+static const guint mp3types_freqs[3][3] = { {44100, 48000, 32000},
+{22050, 24000, 16000},
+{11025, 12000, 8000}
+};
+
+static gboolean
+parse_header (guint32 header, guint * ret_size, guint * ret_spf,
+    gulong * ret_rate)
+{
+  guint length, spf;
+  gulong samplerate, bitrate, layer, padding;
+  gint lsf, mpg25;
+
+  if ((header & 0xffe00000) != 0xffe00000) {
+    g_warning ("invalid sync");
+    return FALSE;
+  }
+
+  if (((header >> 19) & 3) == 0x01) {
+    g_warning ("invalid MPEG version");
+    return FALSE;
+  }
+
+  if (((header >> 17) & 3) == 0x00) {
+    g_warning ("invalid MPEG layer");
+    return FALSE;
+  }
+
+  if (((header >> 12) & 0xf) == 0xf || ((header >> 12) & 0xf) == 0x0) {
+    g_warning ("invalid bitrate");
+    return FALSE;
+  }
+
+  if (((header >> 10) & 0x3) == 0x3) {
+    g_warning ("invalid sampling rate");
+    return FALSE;
+  }
+
+  if (header & 0x00000002) {
+    g_warning ("invalid emphasis");
+    return FALSE;
+  }
+
+  if (header & (1 << 20)) {
+    lsf = (header & (1 << 19)) ? 0 : 1;
+    mpg25 = 0;
+  } else {
+    lsf = 1;
+    mpg25 = 1;
+  }
+
+  layer = 4 - ((header >> 17) & 0x3);
+
+  bitrate = (header >> 12) & 0xF;
+  bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
+  if (bitrate == 0)
+    return FALSE;
+
+  samplerate = (header >> 10) & 0x3;
+  samplerate = mp3types_freqs[lsf + mpg25][samplerate];
+
+  padding = (header >> 9) & 0x1;
+
+  switch (layer) {
+    case 1:
+      length = 4 * ((bitrate * 12) / samplerate + padding);
+      break;
+    case 2:
+      length = (bitrate * 144) / samplerate + padding;
+      break;
+    default:
+    case 3:
+      length = (bitrate * 144) / (samplerate << lsf) + padding;
+      break;
+  }
+
+  if (layer == 1)
+    spf = 384;
+  else if (layer == 2 || lsf == 0)
+    spf = 1152;
+  else
+    spf = 576;
+
+  if (ret_size)
+    *ret_size = length;
+  if (ret_spf)
+    *ret_spf = spf;
+  if (ret_rate)
+    *ret_rate = samplerate;
+
+  return TRUE;
+}
+
+static guint
+get_xing_offset (guint32 header)
+{
+  guint mpeg_version = (header >> 19) & 0x3;
+  guint channel_mode = (header >> 6) & 0x3;
+
+  if (mpeg_version == 0x3) {
+    if (channel_mode == 0x3) {
+      return 0x11;
+    } else {
+      return 0x20;
+    }
+  } else {
+    if (channel_mode == 0x3) {
+      return 0x09;
+    } else {
+      return 0x11;
+    }
+  }
+}
+
+static gboolean
+has_xing_header (guint32 header, guchar * data, gsize size)
+{
+  data += 4;
+  data += get_xing_offset (header);
+
+  if (memcmp (data, "Xing", 4) == 0 ||
+      memcmp (data, "Info", 4) == 0 || memcmp (data, "VBRI", 4) == 0)
+    return TRUE;
+  else
+    return FALSE;
+}
+
+static GstBuffer *
+generate_xing_header (GstXingMux * xing)
+{
+  guint8 *xing_flags;
+  guint32 xing_flags_tmp = 0;
+  GstBuffer *xing_header;
+  guchar *data;
+
+  guint32 header;
+  guint32 header_be;
+  guint size, spf, xing_offset;
+  gulong rate;
+  guint bitrate = 0x00;
+
+  gint64 duration;
+  gint64 byte_count;
+
+  header = xing->first_header;
+
+  /* Set bitrate and choose lowest possible size */
+  do {
+    bitrate++;
+
+    header &= 0xffff0fff;
+    header |= bitrate << 12;
+
+    parse_header (header, &size, &spf, &rate);
+    xing_offset = get_xing_offset (header);
+  } while (size < (4 + xing_offset + 4 + 4 + 4 + 4 + 100) && bitrate < 0xe);
+
+  if (bitrate == 0xe) {
+    GST_ERROR ("No usable bitrate found!");
+    return NULL;
+  }
+
+  if (gst_pad_alloc_buffer_and_set_caps (xing->srcpad, 0, size,
+          GST_PAD_CAPS (xing->srcpad), &xing_header) != GST_FLOW_OK) {
+    xing_header = gst_buffer_new_and_alloc (size);
+    gst_buffer_set_caps (xing_header, GST_PAD_CAPS (xing->srcpad));
+  }
+
+  data = GST_BUFFER_DATA (xing_header);
+  memset (data, 0, size);
+  header_be = GUINT32_TO_BE (header);
+  memcpy (data, &header_be, 4);
+
+  data += 4;
+  data += xing_offset;
+
+  memcpy (data, "Xing", 4);
+  data += 4;
+
+  xing_flags = data;
+  data += 4;
+
+  if (xing->duration != GST_CLOCK_TIME_NONE) {
+    duration = xing->duration;
+  } else {
+    GstFormat fmt = GST_FORMAT_TIME;
+
+    if (!gst_pad_query_peer_duration (xing->sinkpad, &fmt, &duration))
+      duration = GST_CLOCK_TIME_NONE;
+  }
+
+  if (duration != GST_CLOCK_TIME_NONE) {
+    guint32 number_of_frames;
+
+    /* The Xing Header contains a NumberOfFrames field, which verifies to:
+     * Duration = NumberOfFrames *SamplesPerFrame/SamplingRate
+     * SamplesPerFrame and SamplingRate are values for the current frame. 
+     */
+    number_of_frames = gst_util_uint64_scale (duration, rate, GST_SECOND) / spf;
+    GST_DEBUG ("Setting number of frames to %u", number_of_frames);
+    number_of_frames = GUINT32_TO_BE (number_of_frames);
+    memcpy (data, &number_of_frames, 4);
+    xing_flags_tmp |= GST_XING_FRAME_FIELD;
+    data += 4;
+  }
+
+  if (xing->byte_count != 0) {
+    byte_count = xing->byte_count;
+  } else {
+    GstFormat fmt = GST_FORMAT_BYTES;
+
+    if (!gst_pad_query_peer_duration (xing->sinkpad, &fmt, &byte_count))
+      byte_count = 0;
+    if (byte_count == -1)
+      byte_count = 0;
+  }
+
+  if (byte_count != 0) {
+    guint32 nbytes;
+
+    if (byte_count > G_MAXUINT32) {
+      GST_DEBUG ("Too large stream: %" G_GINT64_FORMAT " > %u bytes",
+          byte_count, G_MAXUINT32);
+    } else {
+      nbytes = byte_count;
+      GST_DEBUG ("Setting number of bytes to %u", nbytes);
+      nbytes = GUINT32_TO_BE (nbytes);
+      memcpy (data, &nbytes, 4);
+      xing_flags_tmp |= GST_XING_BYTES_FIELD;
+      data += 4;
+    }
+  }
+
+  if (xing->seek_table != NULL && byte_count != 0
+      && duration != GST_CLOCK_TIME_NONE) {
+    GList *it;
+    gint percent = 0;
+
+    xing_flags_tmp |= GST_XING_TOC_FIELD;
+
+    GST_DEBUG ("Writing seek table");
+    for (it = xing->seek_table; it != NULL && percent < 100; it = it->next) {
+      GstXingSeekEntry *entry = (GstXingSeekEntry *) it->data;
+      gint64 pos;
+      guchar byte;
+
+      while ((entry->timestamp * 100) / duration >= percent) {
+        pos = (entry->byte * 256) / byte_count;
+        GST_DEBUG ("  %d %% -- %" G_GINT64_FORMAT " 1/256", percent, pos);
+        byte = (guchar) pos;
+        memcpy (data, &byte, 1);
+        data++;
+        percent++;
+      }
+    }
+
+    if (percent < 100) {
+      guchar b;
+      gint i;
+
+      memcpy (&b, data - 1, 1);
+
+      for (i = percent; i < 100; i++) {
+        GST_DEBUG ("  %d %% -- %d 1/256", i, b);
+        memcpy (data, &b, 1);
+        data++;
+      }
+    }
+  }
+
+  GST_DEBUG ("Setting Xing flags to 0x%x\n", xing_flags_tmp);
+  xing_flags_tmp = GUINT32_TO_BE (xing_flags_tmp);
+  memcpy (xing_flags, &xing_flags_tmp, 4);
+  return xing_header;
+}
+
+static void
+gst_xing_mux_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_xing_mux_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_xing_mux_sink_template);
+
+  GST_DEBUG_CATEGORY_INIT (xing_mux_debug, "xingmux", 0, "Xing Header Muxer");
+
+  gst_element_class_set_details_simple (element_class, "MP3 Xing muxer",
+      "Formatter/Metadata",
+      "Adds a Xing header to the beginning of a VBR MP3 file",
+      "Christophe Fergeau <teuf@gnome.org>");
+}
+
+static void
+gst_xing_mux_class_init (GstXingMuxClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_xing_mux_finalize);
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_xing_mux_change_state);
+}
+
+static void
+gst_xing_mux_finalize (GObject * obj)
+{
+  GstXingMux *xing = GST_XING_MUX (obj);
+
+  if (xing->adapter) {
+    g_object_unref (xing->adapter);
+    xing->adapter = NULL;
+  }
+
+  if (xing->seek_table) {
+    g_list_foreach (xing->seek_table, (GFunc) gst_xing_seek_entry_free, NULL);
+    g_list_free (xing->seek_table);
+    xing->seek_table = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+xing_reset (GstXingMux * xing)
+{
+  xing->duration = GST_CLOCK_TIME_NONE;
+  xing->byte_count = 0;
+
+  gst_adapter_clear (xing->adapter);
+
+  if (xing->seek_table) {
+    g_list_foreach (xing->seek_table, (GFunc) gst_xing_seek_entry_free, NULL);
+    g_list_free (xing->seek_table);
+    xing->seek_table = NULL;
+  }
+
+  xing->sent_xing = FALSE;
+}
+
+
+static void
+gst_xing_mux_init (GstXingMux * xing, GstXingMuxClass * xingmux_class)
+{
+  GstElementClass *klass = GST_ELEMENT_CLASS (xingmux_class);
+
+  /* pad through which data comes in to the element */
+  xing->sinkpad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+          "sink"), "sink");
+  gst_pad_set_setcaps_function (xing->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_pad_proxy_setcaps));
+  gst_pad_set_chain_function (xing->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_xing_mux_chain));
+  gst_pad_set_event_function (xing->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_xing_mux_sink_event));
+  gst_element_add_pad (GST_ELEMENT (xing), xing->sinkpad);
+
+  /* pad through which data goes out of the element */
+  xing->srcpad =
+      gst_pad_new_from_template (gst_element_class_get_pad_template (klass,
+          "src"), "src");
+  gst_element_add_pad (GST_ELEMENT (xing), xing->srcpad);
+
+  xing->adapter = gst_adapter_new ();
+
+  xing_reset (xing);
+}
+
+static GstFlowReturn
+gst_xing_mux_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstXingMux *xing = GST_XING_MUX (GST_PAD_PARENT (pad));
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  gst_adapter_push (xing->adapter, buffer);
+
+  while (gst_adapter_available (xing->adapter) >= 4) {
+    const guchar *data = gst_adapter_peek (xing->adapter, 4);
+    guint32 header;
+    GstBuffer *outbuf;
+    GstClockTime duration;
+    guint size, spf;
+    gulong rate;
+    GstXingSeekEntry *seek_entry;
+
+    header = GST_READ_UINT32_BE (data);
+
+    if (!parse_header (header, &size, &spf, &rate)) {
+      GST_DEBUG ("Lost sync, resyncing");
+      gst_adapter_flush (xing->adapter, 1);
+      continue;
+    }
+
+    if (gst_adapter_available (xing->adapter) < size)
+      break;
+
+    outbuf = gst_adapter_take_buffer (xing->adapter, size);
+    gst_buffer_set_caps (outbuf, GST_PAD_CAPS (xing->srcpad));
+
+    if (!xing->sent_xing) {
+      if (has_xing_header (header, GST_BUFFER_DATA (outbuf), size)) {
+        GST_LOG_OBJECT (xing, "Dropping old Xing header");
+        gst_buffer_unref (outbuf);
+        continue;
+      } else {
+        GstBuffer *xing_header;
+        guint64 xing_header_size;
+
+        xing->first_header = header;
+
+        xing_header = generate_xing_header (xing);
+
+        if (xing_header == NULL) {
+          GST_ERROR ("Can't generate Xing header");
+          gst_buffer_unref (outbuf);
+          return GST_FLOW_ERROR;
+        }
+
+        xing_header_size = GST_BUFFER_SIZE (xing_header);
+
+        if ((ret = gst_pad_push (xing->srcpad, xing_header)) != GST_FLOW_OK) {
+          GST_ERROR_OBJECT (xing, "Failed to push Xing header: %s",
+              gst_flow_get_name (ret));
+          gst_buffer_unref (xing_header);
+          gst_buffer_unref (outbuf);
+          return ret;
+        }
+
+        xing->byte_count += xing_header_size;
+        xing->sent_xing = TRUE;
+      }
+    }
+
+    seek_entry = gst_xing_seek_entry_new ();
+    seek_entry->timestamp =
+        (xing->duration == GST_CLOCK_TIME_NONE) ? 0 : xing->duration;
+    /* Workaround for parsers checking that the first seek table entry is 0 */
+    seek_entry->byte = (seek_entry->timestamp == 0) ? 0 : xing->byte_count;
+    xing->seek_table = g_list_append (xing->seek_table, seek_entry);
+
+    duration = gst_util_uint64_scale (spf, GST_SECOND, rate);
+
+    GST_BUFFER_TIMESTAMP (outbuf) =
+        (xing->duration == GST_CLOCK_TIME_NONE) ? 0 : xing->duration;
+    GST_BUFFER_DURATION (outbuf) = duration;
+    GST_BUFFER_OFFSET (outbuf) = xing->byte_count;
+    GST_BUFFER_OFFSET_END (outbuf) =
+        xing->byte_count + GST_BUFFER_SIZE (outbuf);
+
+    xing->byte_count += GST_BUFFER_SIZE (outbuf);
+
+    if (xing->duration == GST_CLOCK_TIME_NONE)
+      xing->duration = duration;
+    else
+      xing->duration += duration;
+
+    if ((ret = gst_pad_push (xing->srcpad, outbuf)) != GST_FLOW_OK) {
+      GST_ERROR_OBJECT (xing, "Failed to push MP3 frame: %s",
+          gst_flow_get_name (ret));
+      return ret;
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_xing_mux_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstXingMux *xing;
+  gboolean result;
+
+  xing = GST_XING_MUX (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+      if (xing->sent_xing) {
+        GST_ERROR ("Already sent Xing header, dropping NEWSEGMENT event!");
+        gst_event_unref (event);
+        result = FALSE;
+      } else {
+        GstFormat fmt;
+
+        gst_event_parse_new_segment (event, NULL, NULL, &fmt, NULL, NULL, NULL);
+
+        if (fmt == GST_FORMAT_BYTES) {
+          result = gst_pad_push_event (xing->srcpad, event);
+        } else {
+          gst_event_unref (event);
+
+          event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES,
+              0, GST_CLOCK_TIME_NONE, 0);
+
+          result = gst_pad_push_event (xing->srcpad, event);
+        }
+      }
+      break;
+
+    case GST_EVENT_EOS:{
+      GstEvent *n_event;
+
+      GST_DEBUG_OBJECT (xing, "handling EOS event");
+
+      if (xing->sent_xing) {
+
+        n_event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_BYTES,
+            0, GST_CLOCK_TIME_NONE, 0);
+
+        if (G_UNLIKELY (!gst_pad_push_event (xing->srcpad, n_event))) {
+          GST_WARNING
+              ("Failed to seek to position 0 for pushing the Xing header");
+        } else {
+          GstBuffer *header;
+          GstFlowReturn ret;
+
+          header = generate_xing_header (xing);
+
+          if (header == NULL) {
+            GST_ERROR ("Can't generate Xing header");
+          } else {
+
+            GST_INFO ("Writing real Xing header to beginning of stream");
+
+            if ((ret = gst_pad_push (xing->srcpad, header)) != GST_FLOW_OK)
+              GST_WARNING ("Failed to push updated Xing header: %s\n",
+                  gst_flow_get_name (ret));
+          }
+        }
+      }
+      result = gst_pad_push_event (xing->srcpad, event);
+      break;
+    }
+    default:
+      result = gst_pad_event_default (pad, event);
+      break;
+  }
+  gst_object_unref (GST_OBJECT (xing));
+
+  return result;
+}
+
+
+static GstStateChangeReturn
+gst_xing_mux_change_state (GstElement * element, GstStateChange transition)
+{
+  GstXingMux *xing;
+  GstStateChangeReturn result;
+
+  xing = GST_XING_MUX (element);
+
+  result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      xing_reset (xing);
+      break;
+    default:
+      break;
+  }
+
+  return result;
+}
diff --git a/gst/mpegaudioparse/gstxingmux.h b/gst/mpegaudioparse/gstxingmux.h
new file mode 100644 (file)
index 0000000..197fc6f
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2006 Christophe Fergeau  <teuf@gnome.org>
+ * Copyright (c) 2008 Sebastian Dröge  <slomo@circular-chaos.org>
+ *
+ * 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.
+ */
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+#ifndef __GST_XINGMUX_H__
+#define __GST_XINGMUX_H__
+
+G_BEGIN_DECLS
+
+/* Standard macros for defining types for this element.  */
+#define GST_TYPE_XING_MUX \
+  (gst_xing_mux_get_type())
+#define GST_XING_MUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_XING_MUX,GstXingMux))
+#define GST_XING_MUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_XING_MUX,GstXingMuxClass))
+#define GST_IS_XING_MUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_XING_MUX))
+#define GST_IS_XING_MUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_XING_MUX))
+
+typedef struct _GstXingMux GstXingMux;
+typedef struct _GstXingMuxClass GstXingMuxClass;
+
+/* Definition of structure storing data for this element. */
+
+/**
+ * GstXingMux:
+ *
+ * Opaque data structure.
+ */
+struct _GstXingMux {
+  GstElement element;
+
+  GstPad *sinkpad, *srcpad;
+
+  /* < private > */
+
+  GstAdapter *adapter;
+  GstClockTime duration;
+  guint64 byte_count;
+  guint64 frame_count;
+  GList *seek_table;
+  gboolean sent_xing;
+
+  /* Copy of the first frame header */
+  guint32 first_header;
+};
+
+/* Standard definition defining a class for this element. */
+
+/**
+ * GstXingMuxClass:
+ *
+ * Opaque data structure.
+ */
+struct _GstXingMuxClass {
+  GstElementClass parent_class;
+};
+
+/* Standard function returning type information. */
+GType gst_xing_mux_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_XINGMUX_H__ */
diff --git a/gst/mpegaudioparse/plugin.c b/gst/mpegaudioparse/plugin.c
new file mode 100644 (file)
index 0000000..0e7d652
--- /dev/null
@@ -0,0 +1,45 @@
+/* GStreamer
+ * Copyright (C) <2008> Jan Schmidt <jan.schmidt@sun.com>
+ *
+ * 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 <gst/gst.h>
+#include "gstmpegaudioparse.h"
+#include "gstxingmux.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, "xingmux", GST_RANK_NONE,
+          GST_TYPE_XING_MUX))
+    return FALSE;
+  if (!gst_element_register (plugin, "mp3parse", GST_RANK_PRIMARY + 1,
+          GST_TYPE_MP3PARSE))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "mpegaudioparse",
+    "MPEG-1 layer 1/2/3 audio stream elements",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/mpegstream/Makefile.am b/gst/mpegstream/Makefile.am
new file mode 100644 (file)
index 0000000..7f7166f
--- /dev/null
@@ -0,0 +1,36 @@
+plugin_LTLIBRARIES = libgstmpegstream.la
+
+libgstmpegstream_la_SOURCES = gstmpegstream.c \
+                              gstmpegparse.c \
+                              gstmpegdemux.c \
+                              gstdvddemux.c \
+                              gstmpegpacketize.c \
+                              gstmpegclock.c
+# gstrfc2250enc.c
+libgstmpegstream_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+libgstmpegstream_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@
+libgstmpegstream_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpegstream_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = gstmpegparse.h \
+                 gstmpegdemux.h \
+                 gstdvddemux.h \
+                 gstmpegpacketize.h \
+                 gstmpegclock.h \
+                gstrfc2250enc.h
+
+EXTRA_DIST = README notes
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmpegstream -:SHARED libgstmpegstream \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmpegstream_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmpegstream_la_CFLAGS) \
+        -:LDFLAGS $(libgstmpegstream_la_LDFLAGS) \
+                  $(libgstmpegstream_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/mpegstream/Makefile.in b/gst/mpegstream/Makefile.in
new file mode 100644 (file)
index 0000000..6e39b52
--- /dev/null
@@ -0,0 +1,793 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/mpegstream
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstmpegstream_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libgstmpegstream_la_OBJECTS = libgstmpegstream_la-gstmpegstream.lo \
+       libgstmpegstream_la-gstmpegparse.lo \
+       libgstmpegstream_la-gstmpegdemux.lo \
+       libgstmpegstream_la-gstdvddemux.lo \
+       libgstmpegstream_la-gstmpegpacketize.lo \
+       libgstmpegstream_la-gstmpegclock.lo
+libgstmpegstream_la_OBJECTS = $(am_libgstmpegstream_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstmpegstream_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) \
+       $(libgstmpegstream_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstmpegstream_la_SOURCES)
+DIST_SOURCES = $(libgstmpegstream_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstmpegstream.la
+libgstmpegstream_la_SOURCES = gstmpegstream.c \
+                              gstmpegparse.c \
+                              gstmpegdemux.c \
+                              gstdvddemux.c \
+                              gstmpegpacketize.c \
+                              gstmpegclock.c
+
+# gstrfc2250enc.c
+libgstmpegstream_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+libgstmpegstream_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_MAJORMINOR@
+libgstmpegstream_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmpegstream_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = gstmpegparse.h \
+                 gstmpegdemux.h \
+                 gstdvddemux.h \
+                 gstmpegpacketize.h \
+                 gstmpegclock.h \
+                gstrfc2250enc.h
+
+EXTRA_DIST = README notes
+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/mpegstream/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/mpegstream/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
+libgstmpegstream.la: $(libgstmpegstream_la_OBJECTS) $(libgstmpegstream_la_DEPENDENCIES) $(EXTRA_libgstmpegstream_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstmpegstream_la_LINK) -rpath $(plugindir) $(libgstmpegstream_la_OBJECTS) $(libgstmpegstream_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstdvddemux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstmpegclock.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstmpegdemux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstmpegpacketize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstmpegparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpegstream_la-gstmpegstream.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstmpegstream_la-gstmpegstream.lo: gstmpegstream.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstmpegstream.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstmpegstream.Tpo -c -o libgstmpegstream_la-gstmpegstream.lo `test -f 'gstmpegstream.c' || echo '$(srcdir)/'`gstmpegstream.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstmpegstream.Tpo $(DEPDIR)/libgstmpegstream_la-gstmpegstream.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegstream.c' object='libgstmpegstream_la-gstmpegstream.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstmpegstream.lo `test -f 'gstmpegstream.c' || echo '$(srcdir)/'`gstmpegstream.c
+
+libgstmpegstream_la-gstmpegparse.lo: gstmpegparse.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstmpegparse.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstmpegparse.Tpo -c -o libgstmpegstream_la-gstmpegparse.lo `test -f 'gstmpegparse.c' || echo '$(srcdir)/'`gstmpegparse.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstmpegparse.Tpo $(DEPDIR)/libgstmpegstream_la-gstmpegparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegparse.c' object='libgstmpegstream_la-gstmpegparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstmpegparse.lo `test -f 'gstmpegparse.c' || echo '$(srcdir)/'`gstmpegparse.c
+
+libgstmpegstream_la-gstmpegdemux.lo: gstmpegdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstmpegdemux.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstmpegdemux.Tpo -c -o libgstmpegstream_la-gstmpegdemux.lo `test -f 'gstmpegdemux.c' || echo '$(srcdir)/'`gstmpegdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstmpegdemux.Tpo $(DEPDIR)/libgstmpegstream_la-gstmpegdemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegdemux.c' object='libgstmpegstream_la-gstmpegdemux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstmpegdemux.lo `test -f 'gstmpegdemux.c' || echo '$(srcdir)/'`gstmpegdemux.c
+
+libgstmpegstream_la-gstdvddemux.lo: gstdvddemux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstdvddemux.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstdvddemux.Tpo -c -o libgstmpegstream_la-gstdvddemux.lo `test -f 'gstdvddemux.c' || echo '$(srcdir)/'`gstdvddemux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstdvddemux.Tpo $(DEPDIR)/libgstmpegstream_la-gstdvddemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstdvddemux.c' object='libgstmpegstream_la-gstdvddemux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstdvddemux.lo `test -f 'gstdvddemux.c' || echo '$(srcdir)/'`gstdvddemux.c
+
+libgstmpegstream_la-gstmpegpacketize.lo: gstmpegpacketize.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstmpegpacketize.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstmpegpacketize.Tpo -c -o libgstmpegstream_la-gstmpegpacketize.lo `test -f 'gstmpegpacketize.c' || echo '$(srcdir)/'`gstmpegpacketize.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstmpegpacketize.Tpo $(DEPDIR)/libgstmpegstream_la-gstmpegpacketize.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegpacketize.c' object='libgstmpegstream_la-gstmpegpacketize.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstmpegpacketize.lo `test -f 'gstmpegpacketize.c' || echo '$(srcdir)/'`gstmpegpacketize.c
+
+libgstmpegstream_la-gstmpegclock.lo: gstmpegclock.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -MT libgstmpegstream_la-gstmpegclock.lo -MD -MP -MF $(DEPDIR)/libgstmpegstream_la-gstmpegclock.Tpo -c -o libgstmpegstream_la-gstmpegclock.lo `test -f 'gstmpegclock.c' || echo '$(srcdir)/'`gstmpegclock.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpegstream_la-gstmpegclock.Tpo $(DEPDIR)/libgstmpegstream_la-gstmpegclock.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstmpegclock.c' object='libgstmpegstream_la-gstmpegclock.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpegstream_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpegstream_la_CFLAGS) $(CFLAGS) -c -o libgstmpegstream_la-gstmpegclock.lo `test -f 'gstmpegclock.c' || echo '$(srcdir)/'`gstmpegclock.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstmpegstream -:SHARED libgstmpegstream \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstmpegstream_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstmpegstream_la_CFLAGS) \
+        -:LDFLAGS $(libgstmpegstream_la_LDFLAGS) \
+                  $(libgstmpegstream_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/mpegstream/README b/gst/mpegstream/README
new file mode 100644 (file)
index 0000000..db2b5c0
--- /dev/null
@@ -0,0 +1,6 @@
+MPEG-2 System Stream Parser
+===========================
+
+This element will parse MPEG-2 Program Streams (and eventually Transport
+Streams, though likely as a second element) into its elemental streams.
+
diff --git a/gst/mpegstream/gstdvddemux.c b/gst/mpegstream/gstdvddemux.c
new file mode 100644 (file)
index 0000000..bfed3e7
--- /dev/null
@@ -0,0 +1,1284 @@
+/* GStreamer
+ * Copyright (C) 2005 Martin Soto <martinsoto@users.sourceforge.net>
+ *
+ * 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 <string.h>
+
+#include "gstdvddemux.h"
+
+/* 
+ * Move PTM discont back by 0.3 seconds to allow for strange audio
+ * timestamps when audio crosses a VOBU 
+ */
+#define PTM_DISCONT_ADJUST (0.3 * GST_SECOND)
+#define INITIAL_END_PTM (-1)
+#define MAX_GAP ( 3 * GST_SECOND / 2 )
+#define MAX_GAP_TOLERANCE ( GST_SECOND / 20 )
+
+GST_DEBUG_CATEGORY_STATIC (gstdvddemux_debug);
+#define GST_CAT_DEFAULT (gstdvddemux_debug)
+
+
+#define PARSE_CLASS(o)  GST_MPEG_PARSE_CLASS (G_OBJECT_GET_CLASS (o))
+#define DEMUX_CLASS(o)  GST_MPEG_DEMUX_CLASS (G_OBJECT_GET_CLASS (o))
+#define CLASS(o)  GST_DVD_DEMUX_CLASS (G_OBJECT_GET_CLASS (o))
+
+/* DVDDemux signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0
+      /* FILL ME */
+};
+
+
+/* Define the capabilities separately, to be able to reuse them. */
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) 2, " "systemstream = (boolean) TRUE")
+    );
+
+#define VIDEO_CAPS \
+  GST_STATIC_CAPS ("video/mpeg, " \
+    "mpegversion = (int) { 1, 2 }, " \
+    "systemstream = (boolean) FALSE" \
+  )
+
+#define AUDIO_CAPS \
+  GST_STATIC_CAPS ( \
+    "audio/mpeg, " \
+      "mpegversion = (int) 1;" \
+    "audio/x-lpcm, " \
+      "width = (int) { 16, 20, 24 }, " \
+      "rate = (int) { 48000, 96000 }, " \
+      "channels = (int) [ 1, 8 ], " \
+      "dynamic_range = (int) [ 0, 255 ], " \
+      "emphasis = (boolean) { FALSE, TRUE }, " \
+      "mute = (boolean) { FALSE, TRUE }; " \
+    "audio/x-ac3;" \
+    "audio/x-dts" \
+  )
+
+#define SUBPICTURE_CAPS \
+  GST_STATIC_CAPS ("video/x-dvd-subpicture")
+
+static GstStaticPadTemplate cur_video_template =
+GST_STATIC_PAD_TEMPLATE ("current_video",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    VIDEO_CAPS);
+
+static GstStaticPadTemplate audio_template =
+GST_STATIC_PAD_TEMPLATE ("dvd_audio_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    AUDIO_CAPS);
+
+static GstStaticPadTemplate cur_audio_template =
+GST_STATIC_PAD_TEMPLATE ("current_audio",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    AUDIO_CAPS);
+
+static GstStaticPadTemplate subpicture_template =
+GST_STATIC_PAD_TEMPLATE ("subpicture_%d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    SUBPICTURE_CAPS);
+
+static GstStaticPadTemplate cur_subpicture_template =
+GST_STATIC_PAD_TEMPLATE ("current_subpicture",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    SUBPICTURE_CAPS);
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gstdvddemux_debug, "dvddemux", 0, \
+        "DVD (VOB) demultiplexer element");
+
+GST_BOILERPLATE_FULL (GstDVDDemux, gst_dvd_demux, GstMPEGDemux,
+    GST_TYPE_MPEG_DEMUX, _do_init);
+
+static gboolean gst_dvd_demux_process_event (GstMPEGParse * mpeg_parse,
+    GstEvent * event);
+static gboolean gst_dvd_demux_parse_packhead (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+
+static gboolean gst_dvd_demux_handle_dvd_event
+    (GstDVDDemux * dvd_demux, GstEvent * event);
+
+static GstMPEGStream *gst_dvd_demux_get_video_stream
+    (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info);
+static GstMPEGStream *gst_dvd_demux_get_audio_stream
+    (GstMPEGDemux * dvd_demux,
+    guint8 stream_nr, gint type, const gpointer info);
+static GstMPEGStream *gst_dvd_demux_get_subpicture_stream
+    (GstMPEGDemux * dvd_demux,
+    guint8 stream_nr, gint type, const gpointer info);
+
+static GstFlowReturn gst_dvd_demux_process_private
+    (GstMPEGDemux * mpeg_demux,
+    GstBuffer * buffer,
+    guint stream_nr, GstClockTime timestamp, guint headerlen, guint datalen);
+
+static GstFlowReturn gst_dvd_demux_send_subbuffer
+    (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * outstream,
+    GstBuffer * buffer, GstClockTime timestamp, guint offset, guint size);
+
+static GstFlowReturn gst_dvd_demux_combine_flows (GstMPEGDemux * mpegdemux,
+    GstMPEGStream * stream, GstFlowReturn flow);
+
+static void gst_dvd_demux_set_cur_audio
+    (GstDVDDemux * dvd_demux, gint stream_nr);
+static void gst_dvd_demux_set_cur_subpicture
+    (GstDVDDemux * dvd_demux, gint stream_nr);
+
+static void gst_dvd_demux_reset (GstDVDDemux * dvd_demux);
+static void gst_dvd_demux_synchronise_pads (GstMPEGDemux * mpeg_demux,
+    GstClockTime threshold, GstClockTime new_ts);
+static void gst_dvd_demux_sync_stream_to_time (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * stream, GstClockTime last_ts);
+
+static GstStateChangeReturn gst_dvd_demux_change_state (GstElement * element,
+    GstStateChange transition);
+
+/*static guint gst_dvd_demux_signals[LAST_SIGNAL] = { 0 };*/
+
+
+static void
+gst_dvd_demux_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstMPEGParseClass *mpeg_parse_class = GST_MPEG_PARSE_CLASS (klass);
+  GstMPEGDemuxClass *demux_class = GST_MPEG_DEMUX_CLASS (klass);
+  GstDVDDemuxClass *dvd_demux_class = GST_DVD_DEMUX_CLASS (klass);
+
+  mpeg_parse_class->send_buffer = NULL;
+  mpeg_parse_class->process_event = gst_dvd_demux_process_event;
+  mpeg_parse_class->parse_packhead = gst_dvd_demux_parse_packhead;
+
+  /* sink pad */
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+
+  demux_class->audio_template = gst_static_pad_template_get (&audio_template);
+
+  dvd_demux_class->cur_video_template =
+      gst_static_pad_template_get (&cur_video_template);
+  dvd_demux_class->cur_audio_template =
+      gst_static_pad_template_get (&cur_audio_template);
+  dvd_demux_class->subpicture_template =
+      gst_static_pad_template_get (&subpicture_template);
+  dvd_demux_class->cur_subpicture_template =
+      gst_static_pad_template_get (&cur_subpicture_template);
+
+  gst_element_class_add_pad_template (element_class,
+      demux_class->audio_template);
+
+  gst_element_class_add_pad_template (element_class,
+      dvd_demux_class->cur_video_template);
+  gst_element_class_add_pad_template (element_class,
+      dvd_demux_class->cur_audio_template);
+
+  gst_element_class_add_pad_template (element_class,
+      dvd_demux_class->subpicture_template);
+  gst_element_class_add_pad_template (element_class,
+      dvd_demux_class->cur_subpicture_template);
+
+  gst_element_class_set_details_simple (element_class, "DVD Demuxer",
+      "Codec/Demuxer",
+      "Demultiplexes DVD (VOB) MPEG2 streams",
+      "Martin Soto <martinsoto@users.sourceforge.net>");
+}
+
+
+static void
+gst_dvd_demux_class_init (GstDVDDemuxClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GstMPEGDemuxClass *mpeg_demux_class;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gstelement_class = (GstElementClass *) klass;
+  mpeg_demux_class = (GstMPEGDemuxClass *) klass;
+
+  gstelement_class->change_state = gst_dvd_demux_change_state;
+
+  mpeg_demux_class->get_audio_stream = gst_dvd_demux_get_audio_stream;
+  mpeg_demux_class->get_video_stream = gst_dvd_demux_get_video_stream;
+  mpeg_demux_class->send_subbuffer = gst_dvd_demux_send_subbuffer;
+  mpeg_demux_class->combine_flows = gst_dvd_demux_combine_flows;
+  mpeg_demux_class->process_private = gst_dvd_demux_process_private;
+  mpeg_demux_class->synchronise_pads = gst_dvd_demux_synchronise_pads;
+  mpeg_demux_class->sync_stream_to_time = gst_dvd_demux_sync_stream_to_time;
+
+  klass->get_subpicture_stream = gst_dvd_demux_get_subpicture_stream;
+}
+
+
+static void
+gst_dvd_demux_init (GstDVDDemux * dvd_demux, GstDVDDemuxClass * klass)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (dvd_demux);
+  gint i;
+
+  /* Create the pads for the current streams. */
+  dvd_demux->cur_video =
+      DEMUX_CLASS (dvd_demux)->new_output_pad (mpeg_demux, "current_video",
+      CLASS (dvd_demux)->cur_video_template);
+  gst_element_add_pad (GST_ELEMENT (mpeg_demux), dvd_demux->cur_video);
+  dvd_demux->cur_audio =
+      DEMUX_CLASS (dvd_demux)->new_output_pad (mpeg_demux, "current_audio",
+      CLASS (dvd_demux)->cur_audio_template);
+  gst_element_add_pad (GST_ELEMENT (mpeg_demux), dvd_demux->cur_audio);
+  dvd_demux->cur_subpicture =
+      DEMUX_CLASS (dvd_demux)->new_output_pad (mpeg_demux, "current_subpicture",
+      CLASS (dvd_demux)->cur_subpicture_template);
+  gst_element_add_pad (GST_ELEMENT (mpeg_demux), dvd_demux->cur_subpicture);
+
+  dvd_demux->mpeg_version = 0;
+  dvd_demux->cur_video_nr = 0;
+  dvd_demux->cur_audio_nr = 0;
+  dvd_demux->cur_subpicture_nr = 0;
+
+  for (i = 0; i < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS; i++) {
+    dvd_demux->subpicture_stream[i] = NULL;
+  }
+
+  /* Directly after starting we operate as if we had just flushed. */
+  dvd_demux->segment_filter = TRUE;
+
+  dvd_demux->langcodes = NULL;
+}
+
+static gboolean
+gst_dvd_demux_process_event (GstMPEGParse * mpeg_parse, GstEvent * event)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_parse);
+  gboolean ret = TRUE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gboolean update;
+
+      gst_event_parse_new_segment (event, &update, NULL, NULL,
+          NULL, NULL, NULL);
+
+      if (!update) {
+        /* This is a discontinuity in the timestamp sequence. which
+           may mean that we find some audio blocks lying outside the
+           segment. Filter them. */
+        dvd_demux->segment_filter = TRUE;
+
+        /* reset stream synchronization; parent handles other streams */
+        gst_mpeg_streams_reset_cur_ts (dvd_demux->subpicture_stream,
+            GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS, 0);
+      }
+
+      ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+          event);
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:
+      dvd_demux->segment_filter = TRUE;
+      ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+          event);
+
+      /* parent class will have reset the other streams */
+      gst_mpeg_streams_reset_last_flow (dvd_demux->subpicture_stream,
+          GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS);
+      break;
+    case GST_EVENT_CUSTOM_DOWNSTREAM:
+    case GST_EVENT_CUSTOM_DOWNSTREAM_OOB:
+      if (event->structure != NULL &&
+          gst_structure_has_name (event->structure, "application/x-gst-dvd")) {
+        ret = gst_dvd_demux_handle_dvd_event (dvd_demux, event);
+      } else {
+        ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+            event);
+      }
+      break;
+    default:
+      ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+          event);
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_dvd_demux_handle_dvd_event (GstDVDDemux * dvd_demux, GstEvent * event)
+{
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (dvd_demux);
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (dvd_demux);
+  const GstStructure *structure = gst_event_get_structure (event);
+  const char *event_type = gst_structure_get_string (structure, "event");
+
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  GST_LOG_OBJECT (dvd_demux, "dvd event %" GST_PTR_FORMAT, structure);
+
+  if (strcmp (event_type, "dvd-audio-stream-change") == 0) {
+    gint stream_nr;
+
+    gst_structure_get_int (structure, "physical", &stream_nr);
+    if (stream_nr < -1 || stream_nr >= GST_MPEG_DEMUX_NUM_AUDIO_STREAMS) {
+      GST_ERROR_OBJECT (dvd_demux,
+          "GstDVDDemux: Invalid audio stream %02d", stream_nr);
+      return FALSE;
+    }
+    gst_dvd_demux_set_cur_audio (dvd_demux, stream_nr);
+    gst_event_unref (event);
+  } else if (strcmp (event_type, "dvd-spu-stream-change") == 0) {
+    gint stream_nr;
+
+    gst_structure_get_int (structure, "physical", &stream_nr);
+    if (stream_nr < -1 || stream_nr >= GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS) {
+      GST_ERROR_OBJECT (dvd_demux,
+          "GstDVDDemux: Invalid subpicture stream %02d", stream_nr);
+      return FALSE;
+    }
+    gst_dvd_demux_set_cur_subpicture (dvd_demux, stream_nr);
+    gst_event_unref (event);
+  } else if (!strcmp (event_type, "dvd-lang-codes")) {
+    gint num_substreams = 0, num_audstreams = 0, n;
+    gchar *t;
+
+    /* reset */
+    if (dvd_demux->langcodes)
+      gst_event_unref (dvd_demux->langcodes);
+
+    /* see what kind of streams we have */
+    dvd_demux->langcodes = event;
+
+    /* now create pads for each; first video */
+    n = 2;
+    DEMUX_CLASS (dvd_demux)->get_video_stream (mpeg_demux,
+        0, GST_MPEG_DEMUX_VIDEO_MPEG, &n);
+
+    /* audio */
+    for (n = 0;; n++) {
+      gint fmt, ifo = 0;
+
+      t = g_strdup_printf ("audio-%d-format", num_audstreams);
+      if (!gst_structure_get_int (structure, t, &fmt)) {
+        g_free (t);
+        break;
+      }
+      g_free (t);
+      switch (fmt) {
+        case 0x0:              /* AC-3 */
+          fmt = GST_DVD_DEMUX_AUDIO_AC3;
+          break;
+        case 0x2:
+        case 0x3:              /* MPEG */
+          fmt = GST_MPEG_DEMUX_AUDIO_MPEG;
+          break;
+        case 0x4:
+          fmt = GST_DVD_DEMUX_AUDIO_LPCM;
+          break;
+        case 0x6:
+          fmt = GST_DVD_DEMUX_AUDIO_DTS;
+          break;
+        default:
+          fmt = GST_MPEG_DEMUX_AUDIO_UNKNOWN;
+          break;
+      }
+      DEMUX_CLASS (dvd_demux)->get_audio_stream (mpeg_demux,
+          num_audstreams++, fmt, &ifo);
+    }
+
+    /* subtitle */
+    for (n = 0; n < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS; n++) {
+      t = g_strdup_printf ("subtitle-%d-language", n);
+      if (!gst_structure_get_value (structure, t)) {
+        g_free (t);
+        continue;
+      }
+      g_free (t);
+      num_substreams = n + 1;
+    }
+
+    /* now we have a maximum,
+     * and can also fill empty slots in case of cranky DVD */
+    for (n = 0; n < num_substreams; n++)
+      CLASS (dvd_demux)->get_subpicture_stream (mpeg_demux,
+          n, GST_DVD_DEMUX_SUBP_DVD, NULL);
+
+    GST_DEBUG_OBJECT (dvd_demux,
+        "Created 1 video stream, %d audio streams and %d subpicture streams "
+        "based on DVD lang codes event; now signalling no-more-pads",
+        num_audstreams, num_substreams);
+
+    /* we know this will be all */
+    gst_element_no_more_pads (GST_ELEMENT (dvd_demux));
+
+    /* Keep video/audio/subtitle pads within 1/2 sec of the SCR */
+    mpeg_demux->max_gap = MAX_GAP;
+    mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
+  } else {
+    GST_DEBUG_OBJECT (dvd_demux, "dvddemux Forwarding DVD event %s to all pads",
+        event_type);
+
+    PARSE_CLASS (dvd_demux)->send_event (mpeg_parse, event);
+  }
+
+  return TRUE;
+}
+
+static GstMPEGStream *
+gst_dvd_demux_get_video_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  GstMPEGStream *str =
+      parent_class->get_video_stream (mpeg_demux, stream_nr, type, info);
+  gint mpeg_version = *((gint *) info);
+
+  if (dvd_demux->mpeg_version != mpeg_version) {
+    if (str->caps)
+      gst_caps_unref (str->caps);
+    str->caps = gst_caps_new_simple ("video/mpeg",
+        "mpegversion", G_TYPE_INT, mpeg_version,
+        "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+
+    if (!gst_pad_set_caps (dvd_demux->cur_video, str->caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+          CORE, NEGOTIATION, (NULL), ("failed to set caps"));
+      gst_caps_unref (str->caps);
+      str->caps = NULL;
+      return str;
+    } else {
+      dvd_demux->mpeg_version = mpeg_version;
+    }
+  }
+
+  dvd_demux->mpeg_version = mpeg_version;
+  return str;
+}
+
+static GstMPEGStream *
+gst_dvd_demux_get_audio_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  guint32 sample_info = 0;
+  GstMPEGStream *str;
+  GstDVDLPCMStream *lpcm_str = NULL;
+  gboolean add_pad = FALSE;
+  const gchar *codec = NULL, *lang_code = NULL;
+
+  g_return_val_if_fail (stream_nr < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS, NULL);
+  g_return_val_if_fail (type > GST_MPEG_DEMUX_AUDIO_UNKNOWN &&
+      type < GST_DVD_DEMUX_AUDIO_LAST, NULL);
+
+  if (type < GST_MPEG_DEMUX_AUDIO_LAST) {
+    /* FIXME: language codes on MPEG audio streams */
+    return parent_class->get_audio_stream (mpeg_demux, stream_nr, type, info);
+  }
+
+  if (type == GST_DVD_DEMUX_AUDIO_LPCM) {
+    sample_info = *((guint32 *) info);
+  }
+
+  str = mpeg_demux->audio_stream[stream_nr];
+
+  /* If the stream type is changing, recreate the pad */
+  if (str && str->type != type) {
+    gst_element_remove_pad (GST_ELEMENT (mpeg_demux), str->pad);
+    g_free (str);
+    str = mpeg_demux->audio_stream[stream_nr] = NULL;
+  }
+
+  if (str == NULL) {
+    gchar *name;
+
+    if (type != GST_DVD_DEMUX_AUDIO_LPCM) {
+      str = g_new0 (GstMPEGStream, 1);
+    } else {
+      lpcm_str = g_new0 (GstDVDLPCMStream, 1);
+      str = (GstMPEGStream *) lpcm_str;
+    }
+
+    name = g_strdup_printf ("audio_%02d", stream_nr);
+    DEMUX_CLASS (dvd_demux)->init_stream (mpeg_demux, type, str, stream_nr,
+        name, DEMUX_CLASS (dvd_demux)->audio_template);
+    /* update caps */
+    str->type = GST_MPEG_DEMUX_AUDIO_UNKNOWN;
+    g_free (name);
+    add_pad = TRUE;
+  } else {
+    /* Stream size may have changed, reset it. */
+    if (type != GST_DVD_DEMUX_AUDIO_LPCM) {
+      str = g_renew (GstMPEGStream, str, 1);
+    } else {
+      lpcm_str = g_renew (GstDVDLPCMStream, str, 1);
+      str = (GstMPEGStream *) lpcm_str;
+    }
+  }
+
+  mpeg_demux->audio_stream[stream_nr] = str;
+
+  if (type != str->type ||
+      (type == GST_DVD_DEMUX_AUDIO_LPCM &&
+          sample_info != lpcm_str->sample_info)) {
+    gint width, rate, channels, dynamic_range;
+    gboolean emphasis, mute;
+
+    /* We need to set new caps for this pad. */
+    switch (type) {
+      case GST_DVD_DEMUX_AUDIO_LPCM:
+        /* Dynamic range in the lower byte */
+        dynamic_range = sample_info & 0xff;
+
+        /* Determine the sample width. */
+        switch (sample_info & 0xC000) {
+          case 0x8000:
+            width = 24;
+            break;
+          case 0x4000:
+            width = 20;
+            break;
+          default:
+            width = 16;
+            break;
+        }
+
+        /* Determine the rate. */
+        if (sample_info & 0x1000) {
+          rate = 96000;
+        } else {
+          rate = 48000;
+        }
+
+        mute = ((sample_info & 0x400000) != 0);
+        emphasis = ((sample_info & 0x800000) != 0);
+
+        /* Determine the number of channels. */
+        channels = ((sample_info >> 8) & 0x7) + 1;
+
+        if (str->caps)
+          gst_caps_unref (str->caps);
+        str->caps = gst_caps_new_simple ("audio/x-lpcm",
+            "width", G_TYPE_INT, width,
+            "rate", G_TYPE_INT, rate,
+            "channels", G_TYPE_INT, channels,
+            "dynamic_range", G_TYPE_INT, dynamic_range,
+            "emphasis", G_TYPE_BOOLEAN, emphasis,
+            "mute", G_TYPE_BOOLEAN, mute, NULL);
+
+        lpcm_str->sample_info = sample_info;
+        lpcm_str->width = width;
+        lpcm_str->rate = rate;
+        lpcm_str->channels = channels;
+        lpcm_str->dynamic_range = dynamic_range;
+        lpcm_str->mute = mute;
+        lpcm_str->emphasis = emphasis;
+        codec = "LPCM audio";
+        break;
+
+      case GST_DVD_DEMUX_AUDIO_AC3:
+        if (str->caps)
+          gst_caps_unref (str->caps);
+        str->caps = gst_caps_new_simple ("audio/x-ac3", NULL);
+        codec = "AC-3 audio";
+        break;
+
+      case GST_DVD_DEMUX_AUDIO_DTS:
+        if (str->caps)
+          gst_caps_unref (str->caps);
+        str->caps = gst_caps_new_simple ("audio/x-dts", NULL);
+        codec = "DTS audio";
+        break;
+
+      default:
+        g_return_val_if_reached (NULL);
+        break;
+    }
+
+    if (!gst_pad_set_caps (str->pad, str->caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+          CORE, NEGOTIATION, (NULL),
+          ("failed to set caps on pad %s:%s", GST_DEBUG_PAD_NAME (str->pad)));
+      gst_caps_unref (str->caps);
+      str->caps = NULL;
+      return str;
+    }
+
+    if (str->number == dvd_demux->cur_audio_nr) {
+      /* This is the current audio stream.  Use the same caps. */
+      if (!gst_pad_set_caps (dvd_demux->cur_audio, str->caps)) {
+        GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+            CORE, NEGOTIATION, (NULL), ("failed to set caps on pad %s:%s",
+                GST_DEBUG_PAD_NAME (dvd_demux->cur_audio)));
+      }
+    }
+
+    if (add_pad) {
+      if (dvd_demux->langcodes) {
+        gchar *t;
+
+        t = g_strdup_printf ("audio-%d-language", stream_nr);
+        lang_code =
+            gst_structure_get_string (gst_event_get_structure
+            (dvd_demux->langcodes), t);
+        g_free (t);
+      }
+
+      GST_DEBUG_OBJECT (mpeg_demux, "adding pad %s with language = %s",
+          GST_PAD_NAME (str->pad), (lang_code) ? lang_code : "(unknown)");
+
+      gst_pad_set_active (str->pad, TRUE);
+      gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+
+      if (codec || lang_code) {
+        GstTagList *list = gst_tag_list_new ();
+
+        if (codec) {
+          gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+              GST_TAG_AUDIO_CODEC, codec, NULL);
+        }
+        if (lang_code) {
+          gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+              GST_TAG_LANGUAGE_CODE, lang_code, NULL);
+        }
+        str->tags = gst_tag_list_copy (list);
+        gst_element_found_tags_for_pad (GST_ELEMENT (mpeg_demux),
+            str->pad, list);
+      }
+    }
+
+    str->type = type;
+  }
+
+  return str;
+}
+
+
+static GstMPEGStream *
+gst_dvd_demux_get_subpicture_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  GstMPEGStream *str;
+  gchar *name;
+  gboolean add_pad = FALSE;
+  const gchar *lang_code = NULL;
+
+  g_return_val_if_fail (stream_nr < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS, NULL);
+  g_return_val_if_fail (type > GST_DVD_DEMUX_SUBP_UNKNOWN &&
+      type < GST_DVD_DEMUX_SUBP_LAST, NULL);
+
+  str = dvd_demux->subpicture_stream[stream_nr];
+
+  if (str == NULL) {
+    str = g_new0 (GstMPEGStream, 1);
+
+    name = g_strdup_printf ("subpicture_%02d", stream_nr);
+    DEMUX_CLASS (dvd_demux)->init_stream (mpeg_demux, type, str, stream_nr,
+        name, CLASS (dvd_demux)->subpicture_template);
+    str->type = GST_DVD_DEMUX_SUBP_UNKNOWN;
+    g_free (name);
+    add_pad = TRUE;
+  } else {
+    /* This stream may have been created by a derived class, reset the
+       size. */
+    str = g_renew (GstMPEGStream, str, 1);
+  }
+
+  dvd_demux->subpicture_stream[stream_nr] = str;
+
+  if (str->type != GST_DVD_DEMUX_SUBP_DVD) {
+    /* We need to set new caps for this pad. */
+    if (str->caps)
+      gst_caps_unref (str->caps);
+    str->caps = gst_caps_new_simple ("video/x-dvd-subpicture", NULL);
+
+    if (!gst_pad_set_caps (str->pad, str->caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+          CORE, NEGOTIATION, (NULL),
+          ("failed to set caps on pad %s:%s", GST_DEBUG_PAD_NAME (str->pad)));
+      gst_caps_unref (str->caps);
+      str->caps = NULL;
+      return str;
+    }
+
+    if (str->number == dvd_demux->cur_subpicture_nr) {
+      /* This is the current subpicture stream.  Use the same caps. */
+      if (!gst_pad_set_caps (dvd_demux->cur_subpicture, str->caps)) {
+        GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+            CORE, NEGOTIATION, (NULL),
+            ("failed to set caps on pad %s:%s", GST_DEBUG_PAD_NAME (str->pad)));
+      }
+    }
+
+    if (add_pad) {
+      if (dvd_demux->langcodes) {
+        gchar *t;
+
+        t = g_strdup_printf ("subtitle-%d-language", stream_nr);
+        lang_code =
+            gst_structure_get_string (gst_event_get_structure
+            (dvd_demux->langcodes), t);
+        g_free (t);
+      }
+
+      GST_DEBUG_OBJECT (mpeg_demux, "adding pad %s with language = %s",
+          GST_PAD_NAME (str->pad), (lang_code) ? lang_code : "(unknown)");
+
+      gst_pad_set_active (str->pad, TRUE);
+      gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+
+      if (lang_code) {
+        GstTagList *list = gst_tag_list_new ();
+
+        gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+            GST_TAG_LANGUAGE_CODE, lang_code, NULL);
+        str->tags = gst_tag_list_copy (list);
+        gst_element_found_tags_for_pad (GST_ELEMENT (mpeg_demux),
+            str->pad, list);
+      }
+    }
+    str->type = GST_DVD_DEMUX_SUBP_DVD;
+  }
+
+  return str;
+}
+
+static gboolean
+gst_dvd_demux_parse_packhead (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (mpeg_parse);
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_parse);
+  gboolean pending_tags = mpeg_demux->pending_tags;
+
+  GST_MPEG_PARSE_CLASS (parent_class)->parse_packhead (mpeg_parse, buffer);
+
+  if (pending_tags) {
+    GstMPEGStream **streams;
+    guint i, num;
+
+    streams = dvd_demux->subpicture_stream;
+    num = GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS;
+    for (i = 0; i < num; ++i) {
+      if (streams[i] != NULL && streams[i]->tags != NULL)
+        gst_pad_push_event (streams[i]->pad,
+            gst_event_new_tag (gst_tag_list_copy (streams[i]->tags)));
+    }
+  }
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_dvd_demux_process_private (GstMPEGDemux * mpeg_demux,
+    GstBuffer * buffer,
+    guint stream_nr, GstClockTime timestamp, guint headerlen, guint datalen)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint8 *basebuf;
+  guint8 ps_id_code;
+  GstMPEGStream *outstream = NULL;
+  guint first_access = 0;
+  gint align = 1, len, off;
+
+  basebuf = GST_BUFFER_DATA (buffer);
+
+  /* Determine the substream number. */
+  ps_id_code = basebuf[headerlen + 4];
+
+  /* In the following, the "first access" refers to the location in a
+     buffer the time stamp is associated to.  DVDs include this
+     information explicitely. */
+  switch (stream_nr) {
+    case 0:
+      /* Private stream 1. */
+
+      if (ps_id_code >= 0x80 && ps_id_code <= 0x87) {
+        GST_LOG_OBJECT (dvd_demux,
+            "we have an audio (AC3) packet, track %d", ps_id_code - 0x80);
+        outstream = DEMUX_CLASS (dvd_demux)->get_audio_stream (mpeg_demux,
+            ps_id_code - 0x80, GST_DVD_DEMUX_AUDIO_AC3, NULL);
+
+        /* Determine the position of the "first access".  This
+           should always be the beginning of an AC3 frame. */
+        first_access = (basebuf[headerlen + 6] << 8) | basebuf[headerlen + 7];
+
+        headerlen += 4;
+        datalen -= 4;
+      } else if (ps_id_code >= 0x88 && ps_id_code <= 0x8f) {
+        GST_LOG_OBJECT (dvd_demux,
+            "we have an audio (DTS) packet, track %d", ps_id_code - 0x88);
+        outstream = DEMUX_CLASS (dvd_demux)->get_audio_stream (mpeg_demux,
+            ps_id_code - 0x88, GST_DVD_DEMUX_AUDIO_DTS, NULL);
+
+        /* Determine the position of the "first access".  This
+           should always be the beginning of a DTS frame. */
+        first_access = (basebuf[headerlen + 6] << 8) | basebuf[headerlen + 7];
+
+        headerlen += 4;
+        datalen -= 4;
+      } else if (ps_id_code >= 0xA0 && ps_id_code <= 0xA7) {
+        GstDVDLPCMStream *lpcm_str;
+        guint32 lpcm_sample_info;
+
+        GST_LOG_OBJECT (dvd_demux,
+            "we have an audio (LPCM) packet, track %d", ps_id_code - 0xA0);
+
+        /* Compose the sample info from the LPCM header, masking out the frame_num */
+        lpcm_sample_info =
+            basebuf[headerlen + 10] | (basebuf[headerlen +
+                9] << 8) | ((basebuf[headerlen + 8] & 0xc0) << 16);
+
+        outstream = DEMUX_CLASS (dvd_demux)->get_audio_stream (mpeg_demux,
+            ps_id_code - 0xA0, GST_DVD_DEMUX_AUDIO_LPCM, &lpcm_sample_info);
+        lpcm_str = (GstDVDLPCMStream *) outstream;
+
+        /* Determine the position of the "first access". */
+        first_access = (basebuf[headerlen + 6] << 8) | basebuf[headerlen + 7];
+
+        /* Get rid of the LPCM header. */
+        headerlen += 7;
+        datalen -= 7;
+
+        /* align by frame round up to nearest byte */
+        align = (lpcm_str->width * lpcm_str->channels + 7) / 8;
+      } else if (ps_id_code >= 0x20 && ps_id_code <= 0x3F) {
+        GST_LOG_OBJECT (dvd_demux,
+            "we have a subpicture packet, track %d", ps_id_code - 0x20);
+        outstream = CLASS (dvd_demux)->get_subpicture_stream (mpeg_demux,
+            ps_id_code - 0x20, GST_DVD_DEMUX_SUBP_DVD, NULL);
+
+        headerlen += 1;
+        datalen -= 1;
+      } else {
+        GST_WARNING_OBJECT (dvd_demux,
+            "unknown DVD (private 1) id 0x%02x", ps_id_code);
+      }
+      break;
+
+    case 1:
+      /* Private stream 2 */
+
+      switch (ps_id_code) {
+        case 0:
+          GST_LOG_OBJECT (dvd_demux, "we have a PCI nav packet");
+
+          outstream = DEMUX_CLASS (mpeg_demux)->get_private_stream (mpeg_demux,
+              1, GST_MPEG_DEMUX_PRIVATE_UNKNOWN, NULL);
+          break;
+
+        case 1:
+          GST_LOG_OBJECT (dvd_demux, "we have a DSI nav packet");
+
+          outstream = DEMUX_CLASS (mpeg_demux)->get_private_stream (mpeg_demux,
+              1, GST_MPEG_DEMUX_PRIVATE_UNKNOWN, NULL);
+          break;
+
+        default:
+          GST_WARNING_OBJECT (dvd_demux,
+              "unknown DVD (private 2) id 0x%02x", ps_id_code);
+          break;
+      }
+      break;
+
+    default:
+      g_return_val_if_reached (GST_FLOW_UNEXPECTED);
+      break;
+  }
+
+  if (outstream == NULL) {
+    return GST_FLOW_OK;
+  }
+
+  if (timestamp != GST_CLOCK_TIME_NONE && first_access > 1) {
+    /* We have a first access location.  Since GStreamer doesn't have
+       a means to associate a timestamp to the middle of a buffer, we
+       send two separate buffers and put the timestamp in the second
+       one. */
+    off = headerlen + 4;
+    len = first_access - 1;
+    len -= len % align;
+    if (len > 0) {
+      ret = DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
+          buffer, GST_CLOCK_TIME_NONE, off, len);
+    }
+    off += len;
+    len = datalen - len;
+    len -= len % align;
+    if (len > 0) {
+      ret = DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
+          buffer, timestamp, off, len);
+    }
+  } else {
+    off = headerlen + 4;
+    len = datalen;
+    len -= len % align;
+    if (len > 0) {
+      ret = DEMUX_CLASS (dvd_demux)->send_subbuffer (mpeg_demux, outstream,
+          buffer, timestamp, off, len);
+    }
+  }
+
+  return ret;
+}
+
+/* random magic value */
+#define MIN_BUFS_FOR_NO_MORE_PADS 100
+
+static GstFlowReturn
+gst_dvd_demux_combine_flows (GstMPEGDemux * mpegdemux, GstMPEGStream * stream,
+    GstFlowReturn flow)
+{
+  GstDVDDemux *demux = (GstDVDDemux *) mpegdemux;
+  gint i;
+
+  /* store the value */
+  stream->last_flow = flow;
+
+  /* if it's success we can return the value right away */
+  if (flow == GST_FLOW_OK)
+    goto done;
+
+  /* any other error that is not-linked can be returned right
+   * away */
+  if (flow != GST_FLOW_NOT_LINKED) {
+    GST_DEBUG_OBJECT (demux, "flow %s on pad %" GST_PTR_FORMAT,
+        gst_flow_get_name (flow), stream->pad);
+    goto done;
+  }
+
+  /* let parent class check for anything non-not-linked for its streams */
+  flow =
+      GST_MPEG_DEMUX_CLASS (parent_class)->combine_flows (mpegdemux, stream,
+      flow);
+  if (flow != GST_FLOW_NOT_LINKED)
+    goto done;
+
+  /* only return NOT_LINKED if all other pads returned NOT_LINKED */
+  for (i = 0; i < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS; i++) {
+    if (demux->subpicture_stream[i] != NULL) {
+      flow = demux->subpicture_stream[i]->last_flow;
+      /* some other return value (must be SUCCESS but we can return
+       * other values as well) */
+      if (flow != GST_FLOW_NOT_LINKED)
+        goto done;
+      if (demux->subpicture_stream[i]->buffers_sent < MIN_BUFS_FOR_NO_MORE_PADS) {
+        flow = GST_FLOW_OK;
+        goto done;
+      }
+    }
+  }
+  /* if we get here, all other pads were unlinked and we return
+   * NOT_LINKED then */
+  GST_DEBUG_OBJECT (demux, "all pads combined have not-linked flow");
+
+done:
+  return flow;
+}
+
+static GstFlowReturn
+gst_dvd_demux_send_subbuffer (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * outstream, GstBuffer * buffer,
+    GstClockTime timestamp, guint offset, guint size)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  GstFlowReturn ret;
+  GstPad *outpad;
+  gint cur_nr;
+
+  if (dvd_demux->segment_filter &&
+      GST_MPEG_DEMUX_STREAM_KIND (outstream->type) ==
+      GST_MPEG_DEMUX_STREAM_AUDIO) {
+    /* We are in segment_filter mode and have an audio buffer. */
+    if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
+      /* This is the first valid audio buffer after the flush. */
+      dvd_demux->segment_filter = FALSE;
+    } else {
+      /* Discard the buffer. */
+      return GST_FLOW_OK;
+    }
+  }
+
+  /* You never know what happens to a buffer when you send it.  Just
+     in case, we keep a reference to the buffer during the execution
+     of this function. */
+  gst_buffer_ref (buffer);
+
+  /* Send the buffer to the standard output pad. */
+  ret = parent_class->send_subbuffer (mpeg_demux, outstream, buffer,
+      timestamp, offset, size);
+
+  /* Determine the current output pad and stream number for the given
+     type of stream. */
+  switch (GST_MPEG_DEMUX_STREAM_KIND (outstream->type)) {
+    case GST_MPEG_DEMUX_STREAM_VIDEO:
+      outpad = dvd_demux->cur_video;
+      cur_nr = dvd_demux->cur_video_nr;
+      break;
+    case GST_MPEG_DEMUX_STREAM_AUDIO:
+      outpad = dvd_demux->cur_audio;
+      cur_nr = dvd_demux->cur_audio_nr;
+      break;
+    case GST_MPEG_DEMUX_STREAM_PRIVATE:
+      outpad = NULL;
+      cur_nr = 0;
+      break;
+    case GST_DVD_DEMUX_STREAM_SUBPICTURE:
+      outpad = dvd_demux->cur_subpicture;
+      cur_nr = dvd_demux->cur_subpicture_nr;
+      break;
+    default:
+      g_return_val_if_reached (GST_FLOW_UNEXPECTED);
+      break;
+  }
+
+  if (outpad != NULL && cur_nr == outstream->number && size > 0) {
+    GstBuffer *outbuf;
+
+    /* We have a packet of the current stream. Send it to the
+       corresponding pad as well. */
+    outbuf = gst_buffer_create_sub (buffer, offset, size);
+    g_return_val_if_fail (outbuf != NULL, GST_FLOW_UNEXPECTED);
+
+    GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
+    GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buffer) + offset;
+    gst_buffer_set_caps (outbuf, outstream->caps);
+
+    ret = gst_pad_push (outpad, outbuf);
+
+    /* this was one of the current_foo pads, which is shadowing one of the
+     * foo_%02d pads, so since we keep track of the last flow value in the
+     * stream structure we need to combine the OK/NOT_LINKED flows here
+     * (because both pads share the same stream structure) */
+    if ((ret == GST_FLOW_NOT_LINKED && outstream->last_flow == GST_FLOW_OK) ||
+        (ret == GST_FLOW_OK && outstream->last_flow == GST_FLOW_NOT_LINKED)) {
+      outstream->last_flow = GST_FLOW_OK;
+      ret = GST_FLOW_OK;
+    }
+  }
+
+  gst_buffer_unref (buffer);
+
+  ret = DEMUX_CLASS (dvd_demux)->combine_flows (mpeg_demux, outstream, ret);
+
+  return ret;
+}
+
+static void
+gst_dvd_demux_set_cur_audio (GstDVDDemux * dvd_demux, gint stream_nr)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (dvd_demux);
+  GstMPEGStream *str;
+  GstCaps *caps;
+
+  g_return_if_fail (stream_nr >= -1 &&
+      stream_nr < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS);
+
+  GST_DEBUG_OBJECT (dvd_demux, "changing current audio to %02d", stream_nr);
+
+  dvd_demux->cur_audio_nr = stream_nr;
+
+  if (stream_nr == -1) {
+    return;
+  }
+
+  str = mpeg_demux->audio_stream[stream_nr];
+  if (str != NULL) {
+    /* (Re)set the caps in the "current" pad. */
+    caps = GST_PAD_CAPS (str->pad);
+    if (caps != NULL) {
+      gst_pad_set_caps (dvd_demux->cur_audio, caps);
+    }
+  }
+}
+
+static void
+gst_dvd_demux_set_cur_subpicture (GstDVDDemux * dvd_demux, gint stream_nr)
+{
+  GstMPEGStream *str;
+
+  g_return_if_fail (stream_nr >= -1 &&
+      stream_nr < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS);
+
+  GST_DEBUG_OBJECT (dvd_demux, "changing current subpicture to %02d",
+      stream_nr);
+
+  dvd_demux->cur_subpicture_nr = stream_nr;
+
+  if (stream_nr == -1) {
+    return;
+  }
+
+  str = dvd_demux->subpicture_stream[stream_nr];
+  if (str != NULL) {
+    GstCaps *caps = NULL;
+
+    /* (Re)set the caps in the "current" pad. */
+    caps = GST_PAD_CAPS (str->pad);
+    gst_pad_set_caps (dvd_demux->cur_subpicture, caps);
+  }
+}
+
+static void
+gst_dvd_demux_reset (GstDVDDemux * dvd_demux)
+{
+  int i;
+
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (dvd_demux);
+
+  GST_INFO ("Resetting the dvd demuxer");
+  for (i = 0; i < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS; i++) {
+    if (dvd_demux->subpicture_stream[i]) {
+      gst_pad_push_event (dvd_demux->subpicture_stream[i]->pad,
+          gst_event_new_eos ());
+
+      gst_element_remove_pad (GST_ELEMENT (dvd_demux),
+          dvd_demux->subpicture_stream[i]->pad);
+      if (dvd_demux->subpicture_stream[i]->caps)
+        gst_caps_unref (dvd_demux->subpicture_stream[i]->caps);
+      if (dvd_demux->subpicture_stream[i]->tags)
+        gst_tag_list_free (dvd_demux->subpicture_stream[i]->tags);
+      g_free (dvd_demux->subpicture_stream[i]);
+      dvd_demux->subpicture_stream[i] = NULL;
+    }
+  }
+  gst_pad_set_caps (dvd_demux->cur_video, NULL);
+  gst_pad_set_caps (dvd_demux->cur_audio, NULL);
+  gst_pad_set_caps (dvd_demux->cur_subpicture, NULL);
+
+  dvd_demux->cur_video_nr = 0;
+  dvd_demux->cur_audio_nr = 0;
+  dvd_demux->cur_subpicture_nr = 0;
+  dvd_demux->mpeg_version = 0;
+
+  /* Reset max_gap handling */
+  mpeg_demux->max_gap = MAX_GAP;
+  mpeg_demux->max_gap_tolerance = MAX_GAP_TOLERANCE;
+}
+
+static void
+gst_dvd_demux_synchronise_pads (GstMPEGDemux * mpeg_demux,
+    GstClockTime threshold, GstClockTime new_ts)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  int i;
+
+  parent_class->synchronise_pads (mpeg_demux, threshold, new_ts);
+
+  for (i = 0; i < GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS; i++) {
+    if (dvd_demux->subpicture_stream[i]) {
+      GST_LOG_OBJECT (mpeg_demux, "stream: %d, current: %" GST_TIME_FORMAT
+          ", threshold %" GST_TIME_FORMAT, i,
+          GST_TIME_ARGS (dvd_demux->subpicture_stream[i]->cur_ts),
+          GST_TIME_ARGS (threshold));
+      if (dvd_demux->subpicture_stream[i]->cur_ts < threshold) {
+        DEMUX_CLASS (mpeg_demux)->sync_stream_to_time (mpeg_demux,
+            dvd_demux->subpicture_stream[i], new_ts);
+        dvd_demux->subpicture_stream[i]->cur_ts = new_ts;
+      }
+    }
+  }
+}
+
+static void
+gst_dvd_demux_sync_stream_to_time (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * stream, GstClockTime last_ts)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (mpeg_demux);
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (mpeg_demux);
+  GstPad *outpad;
+  gint cur_nr;
+
+  parent_class->sync_stream_to_time (mpeg_demux, stream, last_ts);
+
+  switch (GST_MPEG_DEMUX_STREAM_KIND (stream->type)) {
+    case GST_MPEG_DEMUX_STREAM_VIDEO:
+      outpad = dvd_demux->cur_video;
+      cur_nr = dvd_demux->cur_video_nr;
+      break;
+    case GST_MPEG_DEMUX_STREAM_AUDIO:
+      outpad = dvd_demux->cur_audio;
+      cur_nr = dvd_demux->cur_audio_nr;
+      break;
+    case GST_DVD_DEMUX_STREAM_SUBPICTURE:
+      outpad = dvd_demux->cur_subpicture;
+      cur_nr = dvd_demux->cur_subpicture_nr;
+      break;
+    default:
+      return;
+  }
+
+  if (outpad && (cur_nr == stream->number)) {
+    guint64 update_time;
+
+    update_time =
+        MIN ((guint64) last_ts, (guint64) mpeg_parse->current_segment.stop);
+    gst_pad_push_event (outpad, gst_event_new_new_segment (TRUE,
+            mpeg_parse->current_segment.rate, GST_FORMAT_TIME,
+            update_time, mpeg_parse->current_segment.stop, update_time));
+  }
+}
+
+static GstStateChangeReturn
+gst_dvd_demux_change_state (GstElement * element, GstStateChange transition)
+{
+  GstDVDDemux *dvd_demux = GST_DVD_DEMUX (element);
+  GstStateChangeReturn ret;
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_dvd_demux_reset (dvd_demux);
+      if (dvd_demux->langcodes) {
+        gst_event_unref (dvd_demux->langcodes);
+        dvd_demux->langcodes = NULL;
+      }
+      break;
+    default:
+      break;
+  }
+  return ret;
+}
+
+gboolean
+gst_dvd_demux_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "dvddemux",
+      GST_RANK_SECONDARY + 1, GST_TYPE_DVD_DEMUX);
+}
diff --git a/gst/mpegstream/gstdvddemux.h b/gst/mpegstream/gstdvddemux.h
new file mode 100644 (file)
index 0000000..5f283e6
--- /dev/null
@@ -0,0 +1,138 @@
+/* GStreamer
+ * Copyright (C) 2004 Martin Soto <martinsoto@users.sourceforge.net>
+ *
+ * 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 __DVD_DEMUX_H__
+#define __DVD_DEMUX_H__
+
+
+#include <gst/gst.h>
+#include "gstmpegdemux.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DVD_DEMUX \
+  (gst_dvd_demux_get_type())
+#define GST_DVD_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DVD_DEMUX,GstDVDDemux))
+#define GST_DVD_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DVD_DEMUX,GstDVDDemuxClass))
+#define GST_IS_DVD_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DVD_DEMUX))
+#define GST_IS_DVD_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVD_DEMUX))
+
+
+/* Supported kinds of streams in addition to what mpegdemux already
+   does. */
+enum {
+  GST_DVD_DEMUX_STREAM_SUBPICTURE = GST_MPEG_DEMUX_STREAM_LAST,
+  GST_DVD_DEMUX_STREAM_LAST
+};
+
+/* Supported number of streams. */
+#define GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS    32
+#define GST_DVD_DEMUX_MAX_SUBPICTURE_DELAY 0
+
+typedef struct _GstDVDLPCMStream GstDVDLPCMStream ;
+typedef struct _GstDVDDemux GstDVDDemux;
+typedef struct _GstDVDDemuxClass GstDVDDemuxClass;
+
+
+/* Additional recognized audio types. */
+enum {
+  GST_DVD_DEMUX_AUDIO_LPCM = GST_MPEG_DEMUX_AUDIO_LAST,
+  GST_DVD_DEMUX_AUDIO_AC3,
+  GST_DVD_DEMUX_AUDIO_DTS,
+  GST_DVD_DEMUX_AUDIO_LAST
+};
+
+
+/* The recognized subpicture types. */
+enum {
+  GST_DVD_DEMUX_SUBP_UNKNOWN =
+    GST_MPEG_DEMUX_STREAM_TYPE (GST_DVD_DEMUX_STREAM_SUBPICTURE, 1),
+  GST_DVD_DEMUX_SUBP_DVD,
+  GST_DVD_DEMUX_SUBP_LAST
+};
+
+
+/* Extended structure to hold additional information for linear PCM
+   streams. */
+struct _GstDVDLPCMStream {
+  GstMPEGStream  parent;
+  guint32        sample_info;   /* The type of linear PCM samples
+                                   associated to this stream. The
+                                   values are bit fields with the same
+                                   format of the sample_info field in
+                                   the linear PCM header. */
+  gint rate, channels, width,
+    dynamic_range;
+  gboolean mute, emphasis;
+};
+
+
+struct _GstDVDDemux {
+  GstMPEGDemux   parent;
+
+  GstPad *cur_video;            /* Current video stream pad. */
+  GstPad *cur_audio;            /* Current audio stream pad. */
+  GstPad *cur_subpicture;       /* Current subpicture stream pad. */
+
+  gint cur_video_nr;            /* Current video stream number. */
+  gint cur_audio_nr;            /* Current audio stream number. */
+  gint cur_subpicture_nr;       /* Current subpicture stream number. */
+
+  gint mpeg_version;            /* Version of the MPEG video stream */
+
+  GstMPEGStream *subpicture_stream[GST_DVD_DEMUX_NUM_SUBPICTURE_STREAMS];
+                                /* Subpicture output streams. */
+
+  gboolean segment_filter;     /* If TRUE, the demuxer refrains from
+                                  sending any audio packets until it
+                                  sees one with a timestamp lying
+                                  inside the current segment. */
+
+  GstEvent *langcodes;
+};
+
+
+struct _GstDVDDemuxClass {
+  GstMPEGDemuxClass parent_class;
+
+  GstPadTemplate *cur_video_template;
+  GstPadTemplate *cur_audio_template;
+  GstPadTemplate *subpicture_template;
+  GstPadTemplate *cur_subpicture_template;
+
+  GstMPEGStream *
+                (*get_subpicture_stream)(GstMPEGDemux *mpeg_demux,
+                                         guint8 stream_nr,
+                                         gint type,
+                                         const gpointer info);
+};
+
+
+GType           gst_dvd_demux_get_type          (void);
+
+gboolean        gst_dvd_demux_plugin_init       (GstPlugin *plugin);
+
+G_END_DECLS
+
+#endif /* __DVD_DEMUX_H__ */
diff --git a/gst/mpegstream/gstmpegclock.c b/gst/mpegstream/gstmpegclock.c
new file mode 100644 (file)
index 0000000..ed627c6
--- /dev/null
@@ -0,0 +1,101 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2000 Wim Taymans <wtay@chello.be>
+ *
+ * gstclock.c: Clock subsystem for maintaining time sync
+ *
+ * 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 "gstmpegclock.h"
+
+static void gst_mpeg_clock_class_init (GstMPEGClockClass * klass);
+static void gst_mpeg_clock_init (GstMPEGClock * clock);
+
+static GstClockTime gst_mpeg_clock_get_internal_time (GstClock * clock);
+
+static GstSystemClockClass *parent_class = NULL;
+
+/* static guint gst_mpeg_clock_signals[LAST_SIGNAL] = { 0 }; */
+
+GType
+gst_mpeg_clock_get_type (void)
+{
+  static GType clock_type = 0;
+
+  if (!clock_type) {
+    static const GTypeInfo clock_info = {
+      sizeof (GstMPEGClockClass),
+      NULL,
+      NULL,
+      (GClassInitFunc) gst_mpeg_clock_class_init,
+      NULL,
+      NULL,
+      sizeof (GstMPEGClock),
+      4,
+      (GInstanceInitFunc) gst_mpeg_clock_init,
+      NULL
+    };
+
+    clock_type = g_type_register_static (GST_TYPE_SYSTEM_CLOCK, "GstMPEGClock",
+        &clock_info, 0);
+  }
+  return clock_type;
+}
+
+
+static void
+gst_mpeg_clock_class_init (GstMPEGClockClass * klass)
+{
+  GstClockClass *gstclock_class;
+
+  gstclock_class = (GstClockClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gstclock_class->get_internal_time = gst_mpeg_clock_get_internal_time;
+}
+
+static void
+gst_mpeg_clock_init (GstMPEGClock * clock)
+{
+  gst_object_set_name (GST_OBJECT (clock), "GstMPEGClock");
+}
+
+GstClock *
+gst_mpeg_clock_new (gchar * name, GstMPEGClockGetTimeFunc func,
+    gpointer user_data)
+{
+  GstMPEGClock *mpeg_clock =
+      GST_MPEG_CLOCK (g_object_new (GST_TYPE_MPEG_CLOCK, NULL));
+
+  mpeg_clock->func = func;
+  mpeg_clock->user_data = user_data;
+
+  return GST_CLOCK (mpeg_clock);
+}
+
+static GstClockTime
+gst_mpeg_clock_get_internal_time (GstClock * clock)
+{
+  GstMPEGClock *mpeg_clock = GST_MPEG_CLOCK (clock);
+
+  return mpeg_clock->func (clock, mpeg_clock->user_data);
+}
diff --git a/gst/mpegstream/gstmpegclock.h b/gst/mpegstream/gstmpegclock.h
new file mode 100644 (file)
index 0000000..c0025fd
--- /dev/null
@@ -0,0 +1,65 @@
+/* GStreamer
+ * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
+ *                    2000 Wim Taymans <wtay@chello.be>
+ *
+ * gstclock.h: Header for clock subsystem
+ *
+ * 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_MPEG_CLOCK_H__
+#define __GST_MPEG_CLOCK_H__
+
+#include <gst/gstsystemclock.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MPEG_CLOCK \
+  (gst_mpeg_clock_get_type())
+#define GST_MPEG_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MPEG_CLOCK,GstMPEGClock))
+#define GST_MPEG_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MPEG_CLOCK,GstMPEGClockClass))
+#define GST_IS_MPEG_CLOCK(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MPEG_CLOCK))
+#define GST_IS_MPEG_CLOCK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MPEG_CLOCK))
+
+typedef struct _GstMPEGClock GstMPEGClock;
+typedef struct _GstMPEGClockClass GstMPEGClockClass;
+
+typedef GstClockTime (*GstMPEGClockGetTimeFunc) (GstClock *clock, gpointer user_data);
+
+
+struct _GstMPEGClock {
+  GstSystemClock clock;
+
+  GstMPEGClockGetTimeFunc func;
+  gpointer user_data;
+};
+
+struct _GstMPEGClockClass {
+  GstSystemClockClass parent_class;
+};
+
+GType                   gst_mpeg_clock_get_type         (void);
+GstClock*               gst_mpeg_clock_new              (gchar *name, GstMPEGClockGetTimeFunc func,
+                                                         gpointer user_data);
+
+G_END_DECLS
+
+#endif /* __GST_MPEG_CLOCK_H__ */
diff --git a/gst/mpegstream/gstmpegdemux.c b/gst/mpegstream/gstmpegdemux.c
new file mode 100644 (file)
index 0000000..e0df0fb
--- /dev/null
@@ -0,0 +1,1458 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 "gstmpegdemux.h"
+
+
+GST_DEBUG_CATEGORY_STATIC (gstmpegdemux_debug);
+#define GST_CAT_DEFAULT (gstmpegdemux_debug)
+
+#define PARSE_CLASS(o)  GST_MPEG_PARSE_CLASS (G_OBJECT_GET_CLASS (o))
+#define CLASS(o)  GST_MPEG_DEMUX_CLASS (G_OBJECT_GET_CLASS (o))
+
+/* MPEG2Demux signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0,
+  ARG_BIT_RATE,
+  ARG_MPEG2
+      /* FILL ME */
+};
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) { 1, 2 }, " "systemstream = (boolean) TRUE")
+    );
+
+static GstStaticPadTemplate video_template =
+GST_STATIC_PAD_TEMPLATE ("video_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) { 1, 2 }, " "systemstream = (boolean) FALSE")
+    );
+
+static GstStaticPadTemplate audio_template =
+GST_STATIC_PAD_TEMPLATE ("audio_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS ("audio/mpeg, " "mpegversion = (int) 1"
+        /* FIXME "layer = (int) { 1, 2 }" */
+    )
+    );
+
+static GstStaticPadTemplate private_template =
+GST_STATIC_PAD_TEMPLATE ("private_%d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gstmpegdemux_debug, "mpegdemux", 0, \
+        "MPEG demuxer element");
+
+GST_BOILERPLATE_FULL (GstMPEGDemux, gst_mpeg_demux, GstMPEGParse,
+    GST_TYPE_MPEG_PARSE, _do_init);
+
+static gboolean gst_mpeg_demux_process_event (GstMPEGParse * mpeg_parse,
+    GstEvent * event);
+
+static GstPad *gst_mpeg_demux_new_output_pad (GstMPEGDemux * mpeg_demux,
+    const gchar * name, GstPadTemplate * temp);
+static void gst_mpeg_demux_init_stream (GstMPEGDemux * mpeg_demux,
+    gint type,
+    GstMPEGStream * str,
+    gint number, const gchar * name, GstPadTemplate * temp);
+static GstMPEGStream *gst_mpeg_demux_get_video_stream (GstMPEGDemux *
+    mpeg_demux, guint8 stream_nr, gint type, const gpointer info);
+static GstMPEGStream *gst_mpeg_demux_get_audio_stream (GstMPEGDemux *
+    mpeg_demux, guint8 stream_nr, gint type, const gpointer info);
+static GstMPEGStream *gst_mpeg_demux_get_private_stream (GstMPEGDemux *
+    mpeg_demux, guint8 stream_nr, gint type, const gpointer info);
+
+static gboolean gst_mpeg_demux_parse_packhead (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+static gboolean gst_mpeg_demux_parse_syshead (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+static GstFlowReturn gst_mpeg_demux_parse_packet (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+static GstFlowReturn gst_mpeg_demux_parse_pes (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+
+static GstFlowReturn gst_mpeg_demux_send_subbuffer (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * outstream, GstBuffer * buffer,
+    GstClockTime timestamp, guint offset, guint size);
+static GstFlowReturn gst_mpeg_demux_combine_flows (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * stream, GstFlowReturn flow);
+static GstFlowReturn gst_mpeg_demux_process_private (GstMPEGDemux * mpeg_demux,
+    GstBuffer * buffer,
+    guint stream_nr, GstClockTime timestamp, guint headerlen, guint datalen);
+static void gst_mpeg_demux_synchronise_pads (GstMPEGDemux * mpeg_demux,
+    GstClockTime threshold, GstClockTime new_ts);
+static void gst_mpeg_demux_sync_stream_to_time (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * stream, GstClockTime last_ts);
+
+#if 0
+const GstFormat *gst_mpeg_demux_get_src_formats (GstPad * pad);
+
+static gboolean index_seek (GstPad * pad, GstEvent * event, gint64 * offset);
+static gboolean normal_seek (GstPad * pad, GstEvent * event, gint64 * offset);
+
+static gboolean gst_mpeg_demux_handle_src_event (GstPad * pad,
+    GstEvent * event);
+#endif
+static void gst_mpeg_demux_reset (GstMPEGDemux * mpeg_demux);
+
+#if 0
+static gboolean gst_mpeg_demux_handle_src_query (GstPad * pad,
+    GstQueryType type, GstFormat * format, gint64 * value);
+#endif
+
+static GstStateChangeReturn gst_mpeg_demux_change_state (GstElement * element,
+    GstStateChange transition);
+
+static void gst_mpeg_demux_set_index (GstElement * element, GstIndex * index);
+static GstIndex *gst_mpeg_demux_get_index (GstElement * element);
+
+
+/*static guint gst_mpeg_demux_signals[LAST_SIGNAL] = { 0 };*/
+
+static void
+gst_mpeg_demux_base_init (gpointer klass_ptr)
+{
+  GstMPEGDemuxClass *klass = GST_MPEG_DEMUX_CLASS (klass_ptr);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass_ptr);
+
+  klass->video_template = gst_static_pad_template_get (&video_template);
+  klass->audio_template = gst_static_pad_template_get (&audio_template);
+  klass->private_template = gst_static_pad_template_get (&private_template);
+
+  gst_element_class_add_pad_template (element_class, klass->video_template);
+  gst_element_class_add_pad_template (element_class, klass->audio_template);
+  gst_element_class_add_pad_template (element_class, klass->private_template);
+
+  gst_element_class_set_details_simple (element_class, "MPEG Demuxer",
+      "Codec/Demuxer",
+      "Demultiplexes MPEG1 and MPEG2 System Streams",
+      "Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim.taymans@chello.be>");
+}
+
+static void
+gst_mpeg_demux_class_init (GstMPEGDemuxClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GstMPEGParseClass *mpeg_parse_class;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gstelement_class = (GstElementClass *) klass;
+  mpeg_parse_class = (GstMPEGParseClass *) klass;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_mpeg_demux_change_state);
+  gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_mpeg_demux_set_index);
+  gstelement_class->get_index = GST_DEBUG_FUNCPTR (gst_mpeg_demux_get_index);
+
+  mpeg_parse_class->parse_packhead = gst_mpeg_demux_parse_packhead;
+  mpeg_parse_class->parse_syshead = gst_mpeg_demux_parse_syshead;
+  mpeg_parse_class->parse_packet = gst_mpeg_demux_parse_packet;
+  mpeg_parse_class->parse_pes = gst_mpeg_demux_parse_pes;
+  mpeg_parse_class->send_buffer = NULL;
+  mpeg_parse_class->process_event = gst_mpeg_demux_process_event;
+
+  klass->new_output_pad = gst_mpeg_demux_new_output_pad;
+  klass->init_stream = gst_mpeg_demux_init_stream;
+  klass->get_video_stream = gst_mpeg_demux_get_video_stream;
+  klass->get_audio_stream = gst_mpeg_demux_get_audio_stream;
+  klass->get_private_stream = gst_mpeg_demux_get_private_stream;
+  klass->send_subbuffer = gst_mpeg_demux_send_subbuffer;
+  klass->combine_flows = gst_mpeg_demux_combine_flows;
+  klass->process_private = gst_mpeg_demux_process_private;
+  klass->synchronise_pads = gst_mpeg_demux_synchronise_pads;
+  klass->sync_stream_to_time = gst_mpeg_demux_sync_stream_to_time;
+
+  /* we have our own sink pad template, but don't use it in subclasses */
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_template);
+}
+
+static void
+gst_mpeg_demux_init (GstMPEGDemux * mpeg_demux, GstMPEGDemuxClass * klass)
+{
+  gint i;
+
+  /* i think everything is already zero'd, but oh well */
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_VIDEO_STREAMS; i++) {
+    mpeg_demux->video_stream[i] = NULL;
+  }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS; i++) {
+    mpeg_demux->audio_stream[i] = NULL;
+  }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS; i++) {
+    mpeg_demux->private_stream[i] = NULL;
+  }
+
+  mpeg_demux->max_gap = GST_CLOCK_TIME_NONE;
+  mpeg_demux->max_gap_tolerance = GST_CLOCK_TIME_NONE;
+
+  mpeg_demux->last_pts = -1;
+  mpeg_demux->pending_tags = FALSE;
+}
+
+
+static gboolean
+gst_mpeg_demux_process_event (GstMPEGParse * mpeg_parse, GstEvent * event)
+{
+  GstMPEGDemux *demux = GST_MPEG_DEMUX (mpeg_parse);
+  gboolean ret;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_STOP:
+      ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+          event);
+
+      demux->pending_tags = TRUE;
+
+      gst_mpeg_streams_reset_last_flow (demux->video_stream,
+          GST_MPEG_DEMUX_NUM_VIDEO_STREAMS);
+      gst_mpeg_streams_reset_last_flow (demux->audio_stream,
+          GST_MPEG_DEMUX_NUM_AUDIO_STREAMS);
+      gst_mpeg_streams_reset_last_flow (demux->private_stream,
+          GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS);
+      break;
+    case GST_EVENT_NEWSEGMENT:
+      /* reset stream synchronization */
+      gst_mpeg_streams_reset_cur_ts (demux->video_stream,
+          GST_MPEG_DEMUX_NUM_VIDEO_STREAMS, 0);
+      gst_mpeg_streams_reset_cur_ts (demux->audio_stream,
+          GST_MPEG_DEMUX_NUM_AUDIO_STREAMS, 0);
+      gst_mpeg_streams_reset_cur_ts (demux->private_stream,
+          GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS, 0);
+      /* fallthrough */
+    default:
+      ret = GST_MPEG_PARSE_CLASS (parent_class)->process_event (mpeg_parse,
+          event);
+      break;
+  }
+
+  return ret;
+}
+
+static gint
+_demux_get_writer_id (GstIndex * index, GstPad * pad)
+{
+  gint id;
+
+  if (!gst_index_get_writer_id (index, GST_OBJECT (pad), &id)) {
+    GST_WARNING_OBJECT (index,
+        "can't get index id for %s:%s", GST_DEBUG_PAD_NAME (pad));
+    return -1;
+  } else {
+    GST_LOG_OBJECT (index,
+        "got index id %d for %s:%s", id, GST_DEBUG_PAD_NAME (pad));
+    return id;
+  }
+}
+
+static GstPad *
+gst_mpeg_demux_new_output_pad (GstMPEGDemux * mpeg_demux,
+    const gchar * name, GstPadTemplate * temp)
+{
+  GstPad *pad;
+
+  pad = gst_pad_new_from_template (temp, name);
+
+#if 0
+  gst_pad_set_event_function (pad,
+      GST_DEBUG_FUNCPTR (gst_mpeg_demux_handle_src_event));
+#endif
+  gst_pad_set_query_type_function (pad,
+      GST_DEBUG_FUNCPTR (gst_mpeg_parse_get_src_query_types));
+  gst_pad_set_query_function (pad,
+      GST_DEBUG_FUNCPTR (gst_mpeg_parse_handle_src_query));
+  gst_pad_use_fixed_caps (pad);
+
+  return pad;
+}
+
+static void
+gst_mpeg_demux_init_stream (GstMPEGDemux * mpeg_demux,
+    gint type,
+    GstMPEGStream * str, gint number, const gchar * name, GstPadTemplate * temp)
+{
+  str->type = type;
+  str->number = number;
+
+  str->pad = CLASS (mpeg_demux)->new_output_pad (mpeg_demux, name, temp);
+  gst_pad_set_element_private (str->pad, str);
+
+  if (mpeg_demux->index) {
+    str->index_id = _demux_get_writer_id (mpeg_demux->index, str->pad);
+  }
+
+  str->cur_ts = 0;
+  str->scr_offs = 0;
+
+  str->last_flow = GST_FLOW_OK;
+  str->buffers_sent = 0;
+  str->tags = NULL;
+  str->caps = NULL;
+}
+
+static GstMPEGStream *
+gst_mpeg_demux_get_video_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  gint mpeg_version = *((gint *) info);
+  GstMPEGStream *str;
+  GstMPEGVideoStream *video_str;
+  gchar *name;
+  gboolean set_caps = FALSE;
+
+  g_return_val_if_fail (stream_nr < GST_MPEG_DEMUX_NUM_VIDEO_STREAMS, NULL);
+  g_return_val_if_fail (type > GST_MPEG_DEMUX_VIDEO_UNKNOWN &&
+      type < GST_MPEG_DEMUX_VIDEO_LAST, NULL);
+
+  str = mpeg_demux->video_stream[stream_nr];
+
+  if (str == NULL) {
+    video_str = g_new0 (GstMPEGVideoStream, 1);
+    str = (GstMPEGStream *) video_str;
+
+    name = g_strdup_printf ("video_%02d", stream_nr);
+    CLASS (mpeg_demux)->init_stream (mpeg_demux, type, str, stream_nr, name,
+        CLASS (mpeg_demux)->video_template);
+    g_free (name);
+
+    set_caps = TRUE;
+  } else {
+    /* This stream may have been created by a derived class, reset the
+       size. */
+    video_str = g_renew (GstMPEGVideoStream, str, 1);
+    str = (GstMPEGStream *) video_str;
+  }
+
+  mpeg_demux->video_stream[stream_nr] = str;
+
+  if (set_caps || video_str->mpeg_version != mpeg_version) {
+    gchar *codec;
+    GstTagList *list;
+
+    /* We need to set new caps for this pad. */
+    if (str->caps)
+      gst_caps_unref (str->caps);
+    str->caps = gst_caps_new_simple ("video/mpeg",
+        "mpegversion", G_TYPE_INT, mpeg_version,
+        "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+    if (!gst_pad_set_caps (str->pad, str->caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+          CORE, NEGOTIATION, (NULL), ("failed to set caps"));
+      gst_caps_unref (str->caps);
+      str->caps = NULL;
+      gst_pad_set_active (str->pad, TRUE);
+      gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+      return str;
+    }
+    gst_pad_set_active (str->pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+
+    /* Store the current values. */
+    video_str->mpeg_version = mpeg_version;
+
+    /* set stream metadata */
+    codec = g_strdup_printf ("MPEG-%d video", mpeg_version);
+    list = gst_tag_list_new ();
+    gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+        GST_TAG_VIDEO_CODEC, codec, NULL);
+    g_free (codec);
+    gst_element_found_tags_for_pad (GST_ELEMENT (mpeg_demux), str->pad, list);
+  }
+
+  return str;
+}
+
+static GstMPEGStream *
+gst_mpeg_demux_get_audio_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  GstMPEGStream *str;
+  gchar *name;
+  gboolean set_caps = FALSE;
+
+  g_return_val_if_fail (stream_nr < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS, NULL);
+  g_return_val_if_fail (type > GST_MPEG_DEMUX_AUDIO_UNKNOWN &&
+      type < GST_MPEG_DEMUX_AUDIO_LAST, NULL);
+
+  str = mpeg_demux->audio_stream[stream_nr];
+
+  if (str && str->type != type) {
+    gst_element_remove_pad (GST_ELEMENT (mpeg_demux), str->pad);
+    g_free (str);
+    str = mpeg_demux->audio_stream[stream_nr] = NULL;
+  }
+
+  if (str == NULL) {
+    str = g_new0 (GstMPEGStream, 1);
+
+    name = g_strdup_printf ("audio_%02d", stream_nr);
+    CLASS (mpeg_demux)->init_stream (mpeg_demux, type, str, stream_nr, name,
+        CLASS (mpeg_demux)->audio_template);
+    g_free (name);
+
+    /* new pad, set caps */
+    set_caps = TRUE;
+  } else {
+    /* This stream may have been created by a derived class, reset the
+       size. */
+    str = g_renew (GstMPEGStream, str, 1);
+  }
+
+  mpeg_demux->audio_stream[stream_nr] = str;
+
+  if (set_caps) {
+    GstTagList *list;
+
+    /* We need to set new caps for this pad. */
+    if (str->caps)
+      gst_caps_unref (str->caps);
+    str->caps = gst_caps_new_simple ("audio/mpeg",
+        "mpegversion", G_TYPE_INT, 1, NULL);
+    if (!gst_pad_set_caps (str->pad, str->caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_demux),
+          CORE, NEGOTIATION, (NULL), ("failed to set caps"));
+      gst_caps_unref (str->caps);
+      str->caps = NULL;
+      gst_pad_set_active (str->pad, TRUE);
+      gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+      return str;
+    }
+    gst_pad_set_active (str->pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+
+    /* stream metadata */
+    list = gst_tag_list_new ();
+    gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
+        GST_TAG_AUDIO_CODEC, "MPEG-1 audio", NULL);
+    gst_element_found_tags_for_pad (GST_ELEMENT (mpeg_demux), str->pad, list);
+  }
+
+  return str;
+}
+
+static GstMPEGStream *
+gst_mpeg_demux_get_private_stream (GstMPEGDemux * mpeg_demux,
+    guint8 stream_nr, gint type, const gpointer info)
+{
+  GstMPEGStream *str;
+  gchar *name;
+
+  g_return_val_if_fail (stream_nr < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS, NULL);
+
+  str = mpeg_demux->private_stream[stream_nr];
+
+  if (str == NULL) {
+    name = g_strdup_printf ("private_%d", stream_nr + 1);
+    str = g_new0 (GstMPEGStream, 1);
+    CLASS (mpeg_demux)->init_stream (mpeg_demux, type, str, stream_nr, name,
+        CLASS (mpeg_demux)->private_template);
+    g_free (name);
+    gst_pad_set_active (str->pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT (mpeg_demux), str->pad);
+
+    mpeg_demux->private_stream[stream_nr] = str;
+  }
+
+  return str;
+}
+
+static gboolean
+gst_mpeg_demux_parse_packhead (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  GstMPEGDemux *demux = GST_MPEG_DEMUX (mpeg_parse);
+
+  parent_class->parse_packhead (mpeg_parse, buffer);
+
+  /* do something useful here */
+
+  if (demux->pending_tags) {
+    GstMPEGStream **streams;
+    guint i, num;
+
+    streams = demux->audio_stream;
+    num = GST_MPEG_DEMUX_NUM_AUDIO_STREAMS;
+    for (i = 0; i < num; ++i) {
+      if (streams[i] != NULL && streams[i]->tags != NULL)
+        gst_pad_push_event (streams[i]->pad,
+            gst_event_new_tag (gst_tag_list_copy (streams[i]->tags)));
+    }
+    demux->pending_tags = FALSE;
+  }
+
+  return TRUE;
+}
+
+static gboolean
+gst_mpeg_demux_parse_syshead (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (mpeg_parse);
+  guint16 header_length;
+  guchar *buf;
+
+  buf = GST_BUFFER_DATA (buffer);
+  buf += 4;
+
+  header_length = GST_READ_UINT16_BE (buf);
+  GST_DEBUG_OBJECT (mpeg_demux, "header_length %d", header_length);
+  buf += 2;
+
+  /* marker:1==1 ! rate_bound:22 | marker:1==1 */
+  buf += 3;
+
+  /* audio_bound:6==1 ! fixed:1 | constrained:1 */
+  buf += 1;
+
+  /* audio_lock:1 | video_lock:1 | marker:1==1 | video_bound:5 */
+  buf += 1;
+
+  /* apacket_rate_restriction:1 | reserved:7==0x7F */
+  buf += 1;
+
+  if (!GST_MPEG_PARSE_IS_MPEG2 (mpeg_demux)) {
+    gint stream_count = (header_length - 6) / 3;
+    gint i, j = 0;
+
+    /* Reset the total_size_bound before counting it up */
+    mpeg_demux->total_size_bound = 0;
+
+    GST_DEBUG_OBJECT (mpeg_demux, "number of streams: %d ", stream_count);
+
+    for (i = 0; i < stream_count; i++) {
+      guint8 stream_id;
+      gboolean STD_buffer_bound_scale;
+      guint16 STD_buffer_size_bound;
+      guint32 buf_byte_size_bound;
+      GstMPEGStream *outstream = NULL;
+
+      stream_id = *buf++;
+      if (!(stream_id & 0x80)) {
+        GST_DEBUG_OBJECT (mpeg_demux, "error in system header length");
+        return FALSE;
+      }
+
+      /* check marker bits */
+      if ((*buf & 0xC0) != 0xC0) {
+        GST_DEBUG_OBJECT (mpeg_demux, "expecting placeholder bit values"
+            " '11' after stream id");
+        return FALSE;
+      }
+
+      STD_buffer_bound_scale = *buf & 0x20;
+      STD_buffer_size_bound = ((guint16) (*buf++ & 0x1F)) << 8;
+      STD_buffer_size_bound |= *buf++;
+
+      if (STD_buffer_bound_scale == 0) {
+        buf_byte_size_bound = STD_buffer_size_bound * 128;
+      } else {
+        buf_byte_size_bound = STD_buffer_size_bound * 1024;
+      }
+
+      if (stream_id == 0xBD) {
+        /* Private stream 1. */
+        outstream = CLASS (mpeg_demux)->get_private_stream (mpeg_demux,
+            0, GST_MPEG_DEMUX_PRIVATE_UNKNOWN, NULL);
+      } else if (stream_id == 0xBF) {
+        /* Private stream 2. */
+        outstream = CLASS (mpeg_demux)->get_private_stream (mpeg_demux,
+            1, GST_MPEG_DEMUX_PRIVATE_UNKNOWN, NULL);
+      } else if (stream_id >= 0xC0 && stream_id <= 0xDF) {
+        /* Audio. */
+        outstream = CLASS (mpeg_demux)->get_audio_stream (mpeg_demux,
+            stream_id - 0xC0, GST_MPEG_DEMUX_AUDIO_MPEG, NULL);
+      } else if (stream_id >= 0xE0 && stream_id <= 0xEF) {
+        /* Video. */
+        gint mpeg_version = !GST_MPEG_PARSE_IS_MPEG2 (mpeg_demux) ? 1 : 2;
+
+        outstream = CLASS (mpeg_demux)->get_video_stream (mpeg_demux,
+            stream_id - 0xE0, GST_MPEG_DEMUX_VIDEO_MPEG, &mpeg_version);
+      } else {
+        GST_WARNING_OBJECT (mpeg_demux, "unknown stream id 0x%02x", stream_id);
+      }
+
+      GST_DEBUG_OBJECT (mpeg_demux, "STD_buffer_bound_scale %d",
+          STD_buffer_bound_scale);
+      GST_DEBUG_OBJECT (mpeg_demux, "STD_buffer_size_bound %d or %d bytes",
+          STD_buffer_size_bound, buf_byte_size_bound);
+
+      if (outstream != NULL) {
+        outstream->size_bound = buf_byte_size_bound;
+        mpeg_demux->total_size_bound += buf_byte_size_bound;
+
+        if (mpeg_demux->index) {
+          outstream->index_id =
+              _demux_get_writer_id (mpeg_demux->index, outstream->pad);
+        }
+      }
+
+      j++;
+    }
+  }
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_mpeg_demux_parse_packet (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (mpeg_parse);
+  guint8 id;
+  guint16 headerlen;
+
+  guint16 packet_length;
+  guint16 STD_buffer_size_bound G_GNUC_UNUSED;
+  guint64 dts;
+  gint64 pts = -1;
+
+  guint16 datalen;
+
+  GstMPEGStream *outstream = NULL;
+  guint8 *buf;
+  gint64 timestamp;
+
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  buf = GST_BUFFER_DATA (buffer);
+  id = *(buf + 3);
+  buf += 4;
+
+  /* start parsing */
+  packet_length = GST_READ_UINT16_BE (buf);
+
+  GST_DEBUG_OBJECT (mpeg_demux, "got packet_length %d", packet_length);
+  headerlen = 2;
+  buf += 2;
+
+  /* loop through looping for stuffing bits, STD, PTS, DTS, etc */
+  do {
+    guint8 bits = *buf++;
+
+    /* stuffing bytes */
+    switch (bits & 0xC0) {
+      case 0xC0:
+        if (bits == 0xff) {
+          GST_DEBUG_OBJECT (mpeg_demux, "have stuffing byte");
+        } else {
+          GST_DEBUG_OBJECT (mpeg_demux, "expected stuffing byte");
+        }
+        headerlen++;
+        break;
+      case 0x40:
+        GST_DEBUG_OBJECT (mpeg_demux, "have STD");
+
+        /* STD_buffer_bound_scale = ((bits & 0x20) == 0x20); */
+        STD_buffer_size_bound = ((guint16) (bits & 0x1F)) << 8;
+        STD_buffer_size_bound |= *buf++;
+
+        headerlen += 2;
+        break;
+      case 0x00:
+        switch (bits & 0x30) {
+          case 0x20:
+            /* pts:3 ! 1 ! pts:15 ! 1 | pts:15 ! 1 */
+            pts = ((guint64) (bits & 0x0E)) << 29;
+            pts |= ((guint64) (*buf++)) << 22;
+            pts |= ((guint64) (*buf++ & 0xFE)) << 14;
+            pts |= ((guint64) (*buf++)) << 7;
+            pts |= ((guint64) (*buf++ & 0xFE)) >> 1;
+
+            GST_DEBUG_OBJECT (mpeg_demux, "PTS = %" G_GUINT64_FORMAT, pts);
+            headerlen += 5;
+            goto done;
+          case 0x30:
+            /* pts:3 ! 1 ! pts:15 ! 1 | pts:15 ! 1 */
+            pts = ((guint64) (bits & 0x0E)) << 29;
+            pts |= ((guint64) (*buf++)) << 22;
+            pts |= ((guint64) (*buf++ & 0xFE)) << 14;
+            pts |= ((guint64) (*buf++)) << 7;
+            pts |= ((guint64) (*buf++ & 0xFE)) >> 1;
+
+            /* sync:4 ! pts:3 ! 1 ! pts:15 ! 1 | pts:15 ! 1 */
+            dts = ((guint64) (*buf++ & 0x0E)) << 29;
+            dts |= ((guint64) * buf++) << 22;
+            dts |= ((guint64) (*buf++ & 0xFE)) << 14;
+            dts |= ((guint64) * buf++) << 7;
+            dts |= ((guint64) (*buf++ & 0xFE)) >> 1;
+
+            GST_DEBUG_OBJECT (mpeg_demux, "PTS = %" G_GUINT64_FORMAT
+                ", DTS = %" G_GUINT64_FORMAT, pts, dts);
+            headerlen += 10;
+            goto done;
+          case 0x00:
+            GST_DEBUG_OBJECT (mpeg_demux, "have no pts/dts");
+            GST_DEBUG_OBJECT (mpeg_demux, "got trailer bits %x", (bits & 0x0f));
+            if ((bits & 0x0f) != 0xf) {
+              GST_DEBUG_OBJECT (mpeg_demux, "not a valid packet time sequence");
+              return FALSE;
+            }
+            headerlen++;
+          default:
+            goto done;
+        }
+      default:
+        goto done;
+    }
+  } while (1);
+  GST_DEBUG_OBJECT (mpeg_demux, "done with header loop");
+
+done:
+
+  /* calculate the amount of real data in this packet */
+  datalen = packet_length - headerlen + 2;
+
+  GST_DEBUG_OBJECT (mpeg_demux, "headerlen is %d, datalen is %d",
+      headerlen, datalen);
+
+  if (pts != -1) {
+    /* Check for pts overflow */
+    if (mpeg_demux->last_pts != -1) {
+      gint32 diff = pts - mpeg_demux->last_pts;
+
+      if (diff > -4 * CLOCK_FREQ && diff < 4 * CLOCK_FREQ)
+        pts = mpeg_demux->last_pts + diff;
+    }
+    mpeg_demux->last_pts = pts;
+
+    timestamp = PARSE_CLASS (mpeg_parse)->adjust_ts (mpeg_parse,
+        MPEGTIME_TO_GSTTIME (pts));
+
+    /* this apparently happens for some input were headers are
+     * rewritten to make time start at zero... */
+    if ((gint64) timestamp < 0)
+      timestamp = 0;
+  } else {
+    timestamp = GST_CLOCK_TIME_NONE;
+  }
+
+  if (id == 0xBD) {
+    /* Private stream 1. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a private 1 packet");
+    ret = CLASS (mpeg_demux)->process_private (mpeg_demux, buffer, 0, timestamp,
+        headerlen, datalen);
+  } else if (id == 0xBF) {
+    /* Private stream 2. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a private 2 packet");
+    ret = CLASS (mpeg_demux)->process_private (mpeg_demux, buffer, 1, timestamp,
+        headerlen, datalen);
+  } else if (id >= 0xC0 && id <= 0xDF) {
+    /* Audio. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have an audio packet");
+    outstream = CLASS (mpeg_demux)->get_audio_stream (mpeg_demux,
+        id - 0xC0, GST_MPEG_DEMUX_AUDIO_MPEG, NULL);
+    ret = CLASS (mpeg_demux)->send_subbuffer (mpeg_demux, outstream, buffer,
+        timestamp, headerlen + 4, datalen);
+  } else if (id >= 0xE0 && id <= 0xEF) {
+    /* Video. */
+    gint mpeg_version = !GST_MPEG_PARSE_IS_MPEG2 (mpeg_demux) ? 1 : 2;
+
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a video packet");
+
+    outstream = CLASS (mpeg_demux)->get_video_stream (mpeg_demux,
+        id - 0xE0, GST_MPEG_DEMUX_VIDEO_MPEG, &mpeg_version);
+    ret = CLASS (mpeg_demux)->send_subbuffer (mpeg_demux, outstream, buffer,
+        timestamp, headerlen + 4, datalen);
+  } else if (id == 0xBE) {
+    /* padding stream */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a padding packet");
+  } else {
+    GST_WARNING_OBJECT (mpeg_demux, "unknown stream id 0x%02x", id);
+  }
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_mpeg_demux_parse_pes (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (mpeg_parse);
+  guint8 id;
+
+  guint16 packet_length;
+  guint8 header_data_length = 0;
+
+  guint16 datalen;
+  guint16 headerlen;
+  GstClockTime timestamp;
+
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  GstMPEGStream *outstream = NULL;
+  guint8 *buf;
+
+  buf = GST_BUFFER_DATA (buffer);
+  id = *(buf + 3);
+  buf += 4;
+
+  /* start parsing */
+  packet_length = GST_READ_UINT16_BE (buf);
+
+  GST_DEBUG_OBJECT (mpeg_demux, "packet_length %d", packet_length);
+  buf += 2;
+
+  /* we don't operate on: program_stream_map, padding_stream, */
+  /* private_stream_2, ECM, EMM, or program_stream_directory  */
+  if ((id != 0xBC) && (id != 0xBE) && (id != 0xBF) && (id != 0xF0) &&
+      (id != 0xF1) && (id != 0xFF)) {
+    guchar flags1 = *buf++;
+    guchar flags2 = *buf++;
+
+    if ((flags1 & 0xC0) != 0x80) {
+      return FALSE;
+    }
+
+    header_data_length = *buf++;
+
+    GST_DEBUG_OBJECT (mpeg_demux, "header_data_length: %d", header_data_length);
+
+    /* check for PTS */
+    if ((flags2 & 0x80)) {
+      gint64 pts;
+
+      pts = ((guint64) (*buf++ & 0x0E)) << 29;
+      pts |= ((guint64) * buf++) << 22;
+      pts |= ((guint64) (*buf++ & 0xFE)) << 14;
+      pts |= ((guint64) * buf++) << 7;
+      pts |= ((guint64) (*buf++ & 0xFE)) >> 1;
+
+      /* Check for pts overflow */
+      if (mpeg_demux->last_pts != -1) {
+        gint32 diff = pts - mpeg_demux->last_pts;
+
+        if (diff > -4 * CLOCK_FREQ && diff < 4 * CLOCK_FREQ)
+          pts = mpeg_demux->last_pts + diff;
+      }
+      mpeg_demux->last_pts = pts;
+
+      timestamp = PARSE_CLASS (mpeg_parse)->adjust_ts (mpeg_parse,
+          MPEGTIME_TO_GSTTIME (pts));
+
+      GST_DEBUG_OBJECT (mpeg_demux,
+          "0x%02x (% " G_GINT64_FORMAT ") PTS = %" G_GUINT64_FORMAT, id, pts,
+          MPEGTIME_TO_GSTTIME (pts));
+    } else {
+      timestamp = GST_CLOCK_TIME_NONE;
+    }
+
+    if ((flags2 & 0x40)) {
+      GST_DEBUG_OBJECT (mpeg_demux, "%x DTS found", id);
+      buf += 5;
+    }
+
+    if ((flags2 & 0x20)) {
+      GST_DEBUG_OBJECT (mpeg_demux, "%x ESCR found", id);
+      buf += 6;
+    }
+
+    if ((flags2 & 0x10)) {
+      guint32 es_rate;
+
+      es_rate = ((guint32) (*buf++ & 0x07)) << 14;
+      es_rate |= ((guint32) (*buf++)) << 7;
+      es_rate |= ((guint32) (*buf++ & 0xFE)) >> 1;
+      GST_DEBUG_OBJECT (mpeg_demux, "%x ES Rate found", id);
+    }
+    /* FIXME: lots of PES parsing missing here... */
+
+    /* calculate the amount of real data in this PES packet */
+    /* constant is 2 bytes packet_length, 2 bytes of bits, 1 byte header len */
+    headerlen = 5 + header_data_length;
+    /* constant is 2 bytes of bits, 1 byte header len */
+    datalen = packet_length - (3 + header_data_length);
+  } else {
+    /* Deliver the whole packet. */
+    /* constant corresponds to the 2 bytes of the packet length. */
+    headerlen = 2;
+    datalen = packet_length;
+
+    timestamp = GST_CLOCK_TIME_NONE;
+  }
+
+  GST_DEBUG_OBJECT (mpeg_demux, "headerlen is %d, datalen is %d",
+      headerlen, datalen);
+
+  if (id == 0xBD) {
+    /* Private stream 1. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a private 1 packet");
+    ret = CLASS (mpeg_demux)->process_private (mpeg_demux, buffer, 0,
+        timestamp, headerlen, datalen);
+  } else if (id == 0xBF) {
+    /* Private stream 2. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a private 2 packet");
+    ret = CLASS (mpeg_demux)->process_private (mpeg_demux, buffer, 1,
+        timestamp, headerlen, datalen);
+  } else if (id >= 0xC0 && id <= 0xDF) {
+    /* Audio. */
+    GST_DEBUG_OBJECT (mpeg_demux, "we have an audio packet");
+    outstream = CLASS (mpeg_demux)->get_audio_stream (mpeg_demux,
+        id - 0xC0, GST_MPEG_DEMUX_AUDIO_MPEG, NULL);
+    ret = CLASS (mpeg_demux)->send_subbuffer (mpeg_demux, outstream, buffer,
+        timestamp, headerlen + 4, datalen);
+  } else if (id >= 0xE0 && id <= 0xEF) {
+    /* Video. */
+    gint mpeg_version = !GST_MPEG_PARSE_IS_MPEG2 (mpeg_demux) ? 1 : 2;
+
+    GST_DEBUG_OBJECT (mpeg_demux, "we have a video packet");
+
+    outstream = CLASS (mpeg_demux)->get_video_stream (mpeg_demux,
+        id - 0xE0, GST_MPEG_DEMUX_VIDEO_MPEG, &mpeg_version);
+    ret = CLASS (mpeg_demux)->send_subbuffer (mpeg_demux, outstream, buffer,
+        timestamp, headerlen + 4, datalen);
+  } else if (id != 0xBE /* Ignore padding stream */ ) {
+    GST_WARNING_OBJECT (mpeg_demux, "unknown stream id 0x%02x", id);
+  }
+
+  return ret;
+}
+
+/* random magic value */
+#define MIN_BUFS_FOR_NO_MORE_PADS 100
+
+static GstFlowReturn
+gst_mpeg_demux_combine_flows (GstMPEGDemux * demux, GstMPEGStream * stream,
+    GstFlowReturn flow)
+{
+  gint i;
+
+  /* store the value */
+  stream->last_flow = flow;
+
+  /* if it's success we can return the value right away */
+  if (flow == GST_FLOW_OK)
+    goto done;
+
+  /* any other error that is not-linked can be returned right
+   * away */
+  if (flow != GST_FLOW_NOT_LINKED) {
+    GST_DEBUG_OBJECT (demux, "flow %s on pad %" GST_PTR_FORMAT,
+        gst_flow_get_name (flow), stream->pad);
+    goto done;
+  }
+
+  /* only return NOT_LINKED if all other pads returned NOT_LINKED */
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_VIDEO_STREAMS; i++) {
+    if (demux->video_stream[i] != NULL) {
+      flow = demux->video_stream[i]->last_flow;
+      /* some other return value (must be SUCCESS but we can return
+       * other values as well) */
+      if (flow != GST_FLOW_NOT_LINKED)
+        goto done;
+      if (demux->video_stream[i]->buffers_sent < MIN_BUFS_FOR_NO_MORE_PADS) {
+        flow = GST_FLOW_OK;
+        goto done;
+      }
+    }
+  }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS; i++) {
+    if (demux->audio_stream[i] != NULL) {
+      flow = demux->audio_stream[i]->last_flow;
+      /* some other return value (must be SUCCESS but we can return
+       * other values as well) */
+      if (flow != GST_FLOW_NOT_LINKED)
+        goto done;
+      if (demux->audio_stream[i]->buffers_sent < MIN_BUFS_FOR_NO_MORE_PADS) {
+        flow = GST_FLOW_OK;
+        goto done;
+      }
+    }
+  }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS; i++) {
+    if (demux->private_stream[i] != NULL) {
+      flow = demux->private_stream[i]->last_flow;
+      /* some other return value (must be SUCCESS but we can return
+       * other values as well) */
+      if (flow != GST_FLOW_NOT_LINKED)
+        goto done;
+      if (demux->private_stream[i]->buffers_sent < MIN_BUFS_FOR_NO_MORE_PADS) {
+        flow = GST_FLOW_OK;
+        goto done;
+      }
+    }
+  }
+  /* if we get here, all other pads were unlinked and we return
+   * NOT_LINKED then */
+  GST_DEBUG_OBJECT (demux, "all pads combined have not-linked flow");
+
+done:
+  return flow;
+}
+
+static GstFlowReturn
+gst_mpeg_demux_send_subbuffer (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * outstream, GstBuffer * buffer,
+    GstClockTime timestamp, guint offset, guint size)
+{
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (mpeg_demux);
+  GstFlowReturn ret;
+  GstBuffer *outbuf;
+
+  if (timestamp != GST_CLOCK_TIME_NONE) {
+    outstream->cur_ts = timestamp;
+    if (timestamp > mpeg_parse->current_ts)
+      outstream->scr_offs = timestamp - mpeg_parse->current_ts;
+    else
+      outstream->scr_offs = 0;
+
+    if (mpeg_demux->index != NULL) {
+      /* Register a new index position.
+       * FIXME: check for keyframes
+       */
+      gst_index_add_association (mpeg_demux->index,
+          outstream->index_id, GST_ASSOCIATION_FLAG_DELTA_UNIT,
+          GST_FORMAT_BYTES,
+          GST_BUFFER_OFFSET (buffer), GST_FORMAT_TIME, timestamp, 0);
+    }
+  } else if (mpeg_parse->current_ts != GST_CLOCK_TIME_NONE)
+    outstream->cur_ts = mpeg_parse->current_ts + outstream->scr_offs;
+
+  if (size == 0)
+    return GST_FLOW_OK;
+
+  if (timestamp != GST_CLOCK_TIME_NONE) {
+    GST_DEBUG_OBJECT (mpeg_demux, "Creating subbuffer size %d, time=%"
+        GST_TIME_FORMAT, size, GST_TIME_ARGS (timestamp));
+  } else {
+    GST_DEBUG_OBJECT (mpeg_demux, "Creating subbuffer size %d", size);
+  }
+
+  if (G_UNLIKELY (offset + size > GST_BUFFER_SIZE (buffer)))
+    goto broken_file;
+
+  outbuf = gst_buffer_create_sub (buffer, offset, size);
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (outstream->pad));
+
+  GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
+  GST_BUFFER_OFFSET (outbuf) = GST_BUFFER_OFFSET (buffer) + offset;
+
+  if (GST_CLOCK_TIME_IS_VALID (timestamp) &&
+      GST_CLOCK_TIME_IS_VALID (mpeg_parse->current_segment.last_stop)) {
+    GstClockTimeDiff diff;
+    guint64 update_time;
+
+    update_time = MAX (timestamp, mpeg_parse->current_segment.start);
+    diff = GST_CLOCK_DIFF (mpeg_parse->current_segment.last_stop, update_time);
+    if (diff > GST_SECOND * 2) {
+      GST_DEBUG_OBJECT (mpeg_demux, "Gap of %" GST_TIME_FORMAT " detected in "
+          "stream %d. Sending updated NEWSEGMENT events", GST_TIME_ARGS (diff),
+          outstream->number);
+      PARSE_CLASS (mpeg_parse)->send_event (mpeg_parse,
+          gst_event_new_new_segment (TRUE, mpeg_parse->current_segment.rate,
+              GST_FORMAT_TIME, mpeg_parse->current_segment.last_stop,
+              mpeg_parse->current_segment.last_stop,
+              mpeg_parse->current_segment.last_stop));
+      gst_segment_set_newsegment (&mpeg_parse->current_segment,
+          FALSE, mpeg_parse->current_segment.rate, GST_FORMAT_TIME,
+          update_time, mpeg_parse->current_segment.stop, update_time);
+      PARSE_CLASS (mpeg_parse)->send_event (mpeg_parse,
+          gst_event_new_new_segment (FALSE, mpeg_parse->current_segment.rate,
+              GST_FORMAT_TIME, update_time,
+              mpeg_parse->current_segment.stop, update_time));
+      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+    }
+    gst_segment_set_last_stop (&mpeg_parse->current_segment,
+        GST_FORMAT_TIME, update_time);
+  }
+
+  ret = gst_pad_push (outstream->pad, outbuf);
+  GST_LOG_OBJECT (outstream->pad, "flow: %s", gst_flow_get_name (ret));
+  ++outstream->buffers_sent;
+
+  GST_LOG_OBJECT (mpeg_demux, "current: %" GST_TIME_FORMAT
+      ", gap %" GST_TIME_FORMAT ", tol: %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (mpeg_parse->current_ts),
+      GST_TIME_ARGS (mpeg_demux->max_gap),
+      GST_TIME_ARGS (mpeg_demux->max_gap_tolerance));
+  if (GST_CLOCK_TIME_IS_VALID (mpeg_demux->max_gap) &&
+      GST_CLOCK_TIME_IS_VALID (mpeg_parse->current_ts) &&
+      (mpeg_parse->current_ts > mpeg_demux->max_gap)) {
+    CLASS (mpeg_demux)->synchronise_pads (mpeg_demux,
+        mpeg_parse->current_ts - mpeg_demux->max_gap,
+        mpeg_parse->current_ts - mpeg_demux->max_gap_tolerance);
+  }
+
+  ret = CLASS (mpeg_demux)->combine_flows (mpeg_demux, outstream, ret);
+
+  return ret;
+
+/* ERRORS */
+broken_file:
+  {
+    GST_ELEMENT_ERROR (mpeg_demux, STREAM, DEMUX, (NULL),
+        ("Either broken file or not an MPEG stream"));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_mpeg_demux_process_private (GstMPEGDemux * mpeg_demux,
+    GstBuffer * buffer,
+    guint stream_nr, GstClockTime timestamp, guint headerlen, guint datalen)
+{
+  GstMPEGStream *outstream;
+  GstFlowReturn ret;
+
+  outstream = CLASS (mpeg_demux)->get_private_stream (mpeg_demux,
+      stream_nr, GST_MPEG_DEMUX_PRIVATE_UNKNOWN, NULL);
+  ret = CLASS (mpeg_demux)->send_subbuffer (mpeg_demux, outstream, buffer,
+      timestamp, headerlen + 4, datalen);
+  return ret;
+}
+
+static void
+gst_mpeg_demux_synchronise_pads (GstMPEGDemux * mpeg_demux,
+    GstClockTime threshold, GstClockTime new_ts)
+{
+  /*
+   * Send a new-segment event to any pad with cur_ts < threshold to catch it up
+   */
+  gint i;
+
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_VIDEO_STREAMS; i++)
+    if (mpeg_demux->video_stream[i]
+        && mpeg_demux->video_stream[i]->cur_ts < threshold) {
+      CLASS (mpeg_demux)->sync_stream_to_time (mpeg_demux,
+          mpeg_demux->video_stream[i], new_ts);
+      mpeg_demux->video_stream[i]->cur_ts = new_ts;
+    }
+
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS; i++)
+    if (mpeg_demux->audio_stream[i]
+        && mpeg_demux->audio_stream[i]->cur_ts < threshold) {
+      CLASS (mpeg_demux)->sync_stream_to_time (mpeg_demux,
+          mpeg_demux->audio_stream[i], new_ts);
+      mpeg_demux->audio_stream[i]->cur_ts = new_ts;
+    }
+
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS; i++)
+    if (mpeg_demux->private_stream[i]
+        && mpeg_demux->private_stream[i]->cur_ts < threshold) {
+      CLASS (mpeg_demux)->sync_stream_to_time (mpeg_demux,
+          mpeg_demux->private_stream[i], new_ts);
+      mpeg_demux->private_stream[i]->cur_ts = new_ts;
+    }
+}
+
+/*
+ * Send a new-segment event on the indicated pad to catch it up to last_ts.
+ */
+static void
+gst_mpeg_demux_sync_stream_to_time (GstMPEGDemux * mpeg_demux,
+    GstMPEGStream * stream, GstClockTime last_ts)
+{
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (mpeg_demux);
+  guint64 update_time;
+
+  update_time =
+      MIN ((guint64) last_ts, (guint64) mpeg_parse->current_segment.stop);
+  gst_pad_push_event (stream->pad, gst_event_new_new_segment (TRUE,
+          mpeg_parse->current_segment.rate, GST_FORMAT_TIME,
+          update_time, mpeg_parse->current_segment.stop, update_time));
+}
+
+#if 0
+const GstFormat *
+gst_mpeg_demux_get_src_formats (GstPad * pad)
+{
+  static const GstFormat formats[] = {
+    GST_FORMAT_TIME,            /* we prefer seeking on time */
+    GST_FORMAT_BYTES,
+    0
+  };
+
+  return formats;
+}
+
+static gboolean
+index_seek (GstPad * pad, GstEvent * event, gint64 * offset)
+{
+  GstIndexEntry *entry;
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (gst_pad_get_parent (pad));
+  GstMPEGStream *stream = gst_pad_get_element_private (pad);
+
+  entry = gst_index_get_assoc_entry (mpeg_demux->index, stream->index_id,
+      GST_INDEX_LOOKUP_BEFORE, 0,
+      GST_EVENT_SEEK_FORMAT (event), GST_EVENT_SEEK_OFFSET (event));
+  if (!entry) {
+    GST_CAT_WARNING (GST_CAT_SEEK, "%s:%s index %s %" G_GINT64_FORMAT
+        " -> failed",
+        GST_DEBUG_PAD_NAME (pad),
+        gst_format_get_details (GST_EVENT_SEEK_FORMAT (event))->nick,
+        GST_EVENT_SEEK_OFFSET (event));
+    return FALSE;
+  }
+
+  if (gst_index_entry_assoc_map (entry, GST_FORMAT_BYTES, offset)) {
+    GST_CAT_DEBUG (GST_CAT_SEEK, "%s:%s index %s %" G_GINT64_FORMAT
+        " -> %" G_GINT64_FORMAT " bytes",
+        GST_DEBUG_PAD_NAME (pad),
+        gst_format_get_details (GST_EVENT_SEEK_FORMAT (event))->nick,
+        GST_EVENT_SEEK_OFFSET (event), *offset);
+    return TRUE;
+  }
+  return FALSE;
+}
+
+static gboolean
+normal_seek (GstPad * pad, GstEvent * event, gint64 * offset)
+{
+  gboolean res = FALSE;
+  gint64 adjust;
+  GstFormat format;
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (gst_pad_get_parent (pad));
+
+  format = GST_EVENT_SEEK_FORMAT (event);
+
+  res = gst_pad_convert (pad, GST_FORMAT_BYTES, mpeg_demux->total_size_bound,
+      &format, &adjust);
+
+  if (res) {
+    *offset = MAX (GST_EVENT_SEEK_OFFSET (event) - adjust, 0);
+
+    GST_CAT_DEBUG (GST_CAT_SEEK, "%s:%s guesstimate %" G_GINT64_FORMAT
+        " %s -> %" G_GINT64_FORMAT
+        " (total_size_bound = %" G_GINT64_FORMAT ")",
+        GST_DEBUG_PAD_NAME (pad),
+        GST_EVENT_SEEK_OFFSET (event),
+        gst_format_get_details (GST_EVENT_SEEK_FORMAT (event))->nick,
+        *offset, mpeg_demux->total_size_bound);
+  }
+
+  return res;
+}
+
+static gboolean
+gst_mpeg_demux_handle_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res = FALSE;
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+    {
+      gint64 desired_offset;
+
+      if (mpeg_demux->index)
+        res = index_seek (pad, event, &desired_offset);
+      if (!res)
+        res = normal_seek (pad, event, &desired_offset);
+
+      if (res) {
+        GstEvent *new_event;
+
+        new_event =
+            gst_event_new_seek (GST_EVENT_SEEK_TYPE (event), desired_offset);
+        res = gst_mpeg_parse_handle_src_event (pad, new_event);
+      }
+      gst_event_unref (event);
+      break;
+    }
+    case GST_EVENT_NAVIGATION:
+    {
+      res = gst_pad_push_event (GST_MPEG_PARSE (mpeg_demux)->sinkpad, event);
+      break;
+    }
+    default:
+      gst_event_unref (event);
+      break;
+  }
+  return res;
+}
+
+static gboolean
+gst_mpeg_demux_handle_src_query (GstPad * pad, GstQueryType type,
+    GstFormat * format, gint64 * value)
+{
+  gboolean res;
+
+  res = gst_mpeg_parse_handle_src_query (pad, type, format, value);
+
+  if (res && (type == GST_QUERY_POSITION) && (format)
+      && (*format == GST_FORMAT_TIME)) {
+    GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (gst_pad_get_parent (pad));
+
+    *value += mpeg_demux->adjust;
+  }
+
+  return res;
+}
+#endif
+
+static void
+gst_mpeg_demux_reset (GstMPEGDemux * mpeg_demux)
+{
+  int i;
+
+  /* Reset the element */
+
+  GST_INFO ("Resetting the MPEG Demuxer");
+
+  /* free the streams , remove the pads */
+  /* filled in init_stream */
+  /* check get_audio/video_stream because it can be derivated */
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_VIDEO_STREAMS; i++)
+    if (mpeg_demux->video_stream[i]) {
+      gst_pad_push_event (mpeg_demux->video_stream[i]->pad,
+          gst_event_new_eos ());
+      gst_element_remove_pad (GST_ELEMENT (mpeg_demux),
+          mpeg_demux->video_stream[i]->pad);
+      if (mpeg_demux->video_stream[i]->caps)
+        gst_caps_unref (mpeg_demux->video_stream[i]->caps);
+      g_free (mpeg_demux->video_stream[i]);
+      mpeg_demux->video_stream[i] = NULL;
+    }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_AUDIO_STREAMS; i++)
+    if (mpeg_demux->audio_stream[i]) {
+      gst_pad_push_event (mpeg_demux->audio_stream[i]->pad,
+          gst_event_new_eos ());
+      gst_element_remove_pad (GST_ELEMENT (mpeg_demux),
+          mpeg_demux->audio_stream[i]->pad);
+      if (mpeg_demux->audio_stream[i]->tags)
+        gst_tag_list_free (mpeg_demux->audio_stream[i]->tags);
+      if (mpeg_demux->audio_stream[i]->caps)
+        gst_caps_unref (mpeg_demux->audio_stream[i]->caps);
+      g_free (mpeg_demux->audio_stream[i]);
+      mpeg_demux->audio_stream[i] = NULL;
+    }
+  for (i = 0; i < GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS; i++)
+    if (mpeg_demux->private_stream[i]) {
+      gst_pad_push_event (mpeg_demux->private_stream[i]->pad,
+          gst_event_new_eos ());
+      gst_element_remove_pad (GST_ELEMENT (mpeg_demux),
+          mpeg_demux->private_stream[i]->pad);
+      if (mpeg_demux->private_stream[i]->caps)
+        gst_caps_unref (mpeg_demux->private_stream[i]->caps);
+      g_free (mpeg_demux->private_stream[i]);
+      mpeg_demux->private_stream[i] = NULL;
+    }
+
+  mpeg_demux->in_flush = FALSE;
+  mpeg_demux->header_length = 0;
+  mpeg_demux->rate_bound = 0;
+  mpeg_demux->audio_bound = 0;
+  mpeg_demux->video_bound = 0;
+  mpeg_demux->fixed = FALSE;
+  mpeg_demux->constrained = FALSE;
+  mpeg_demux->audio_lock = FALSE;
+  mpeg_demux->video_lock = FALSE;
+
+  mpeg_demux->packet_rate_restriction = FALSE;
+  mpeg_demux->total_size_bound = G_GINT64_CONSTANT (0);
+
+  mpeg_demux->index = NULL;
+  mpeg_demux->last_pts = -1;
+  mpeg_demux->pending_tags = FALSE;
+
+  /*
+   * Don't adjust things that are only for subclass use
+   * - if they changed it, they can reset it.
+   *
+   * mpeg_demux->adjust = 0;
+   * mpeg_demux->max_gap = GST_CLOCK_TIME_NONE;
+   * mpeg_demux->max_gap_tolerance = GST_CLOCK_TIME_NONE;
+   */
+}
+
+static GstStateChangeReturn
+gst_mpeg_demux_change_state (GstElement * element, GstStateChange transition)
+{
+  GstMPEGDemux *mpeg_demux = GST_MPEG_DEMUX (element);
+  GstStateChangeReturn ret;
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      gst_mpeg_demux_reset (mpeg_demux);
+      break;
+    default:
+      break;
+  }
+  return ret;
+}
+
+static void
+gst_mpeg_demux_set_index (GstElement * element, GstIndex * index)
+{
+  GstMPEGDemux *mpeg_demux;
+
+  GST_ELEMENT_CLASS (parent_class)->set_index (element, index);
+
+  mpeg_demux = GST_MPEG_DEMUX (element);
+
+  mpeg_demux->index = index;
+}
+
+static GstIndex *
+gst_mpeg_demux_get_index (GstElement * element)
+{
+  GstMPEGDemux *mpeg_demux;
+
+  mpeg_demux = GST_MPEG_DEMUX (element);
+
+  return mpeg_demux->index;
+}
+
+void
+gst_mpeg_streams_reset_last_flow (GstMPEGStream * streams[], guint num)
+{
+  guint i;
+
+  for (i = 0; i < num; ++i) {
+    if (streams[i] != NULL)
+      streams[i]->last_flow = GST_FLOW_OK;
+  }
+}
+
+void
+gst_mpeg_streams_reset_cur_ts (GstMPEGStream * streams[], guint num,
+    GstClockTime cur_ts)
+{
+  guint i;
+
+  for (i = 0; i < num; ++i) {
+    if (streams[i] != NULL)
+      streams[i]->cur_ts = cur_ts;
+  }
+}
+
+gboolean
+gst_mpeg_demux_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "mpegdemux",
+      GST_RANK_SECONDARY, GST_TYPE_MPEG_DEMUX);
+}
diff --git a/gst/mpegstream/gstmpegdemux.h b/gst/mpegstream/gstmpegdemux.h
new file mode 100644 (file)
index 0000000..583de0d
--- /dev/null
@@ -0,0 +1,221 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __MPEG_DEMUX_H__
+#define __MPEG_DEMUX_H__
+
+
+#include <gst/gst.h>
+#include "gstmpegparse.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MPEG_DEMUX \
+  (gst_mpeg_demux_get_type())
+#define GST_MPEG_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MPEG_DEMUX,GstMPEGDemux))
+#define GST_MPEG_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MPEG_DEMUX,GstMPEGDemuxClass))
+#define GST_IS_MPEG_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MPEG_DEMUX))
+#define GST_IS_MPEG_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MPEG_DEMUX))
+
+/* Supported kinds of streams. */
+enum {
+  GST_MPEG_DEMUX_STREAM_VIDEO = 1,
+  GST_MPEG_DEMUX_STREAM_AUDIO,
+  GST_MPEG_DEMUX_STREAM_PRIVATE,
+  GST_MPEG_DEMUX_STREAM_LAST
+};
+
+/* Supported number of streams. */
+#define GST_MPEG_DEMUX_NUM_VIDEO_STREAMS        16
+#define GST_MPEG_DEMUX_NUM_AUDIO_STREAMS        32
+#define GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS      2
+
+/* How to make stream type values. */
+#define GST_MPEG_DEMUX_STREAM_TYPE(kind, serial) \
+  (((kind) << 16) + (serial))
+
+/* How to retrieve the stream kind back from a type. */
+#define GST_MPEG_DEMUX_STREAM_KIND(type) ((type) >> 16)
+
+/* The recognized video types. */
+enum {
+  GST_MPEG_DEMUX_VIDEO_UNKNOWN =
+    GST_MPEG_DEMUX_STREAM_TYPE (GST_MPEG_DEMUX_STREAM_VIDEO, 1),
+  GST_MPEG_DEMUX_VIDEO_MPEG,
+  GST_MPEG_DEMUX_VIDEO_LAST
+};
+
+/* The recognized audio types. */
+enum {
+  GST_MPEG_DEMUX_AUDIO_UNKNOWN =
+    GST_MPEG_DEMUX_STREAM_TYPE (GST_MPEG_DEMUX_STREAM_AUDIO, 1),
+  GST_MPEG_DEMUX_AUDIO_MPEG,
+  GST_MPEG_DEMUX_AUDIO_LAST
+};
+
+/* The recognized private stream types. */
+enum {
+  GST_MPEG_DEMUX_PRIVATE_UNKNOWN =
+    GST_MPEG_DEMUX_STREAM_TYPE (GST_MPEG_DEMUX_STREAM_PRIVATE, 1),
+  GST_MPEG_DEMUX_PRIVATE_LAST
+};
+
+typedef struct _GstMPEGStream GstMPEGStream;
+typedef struct _GstMPEGVideoStream GstMPEGVideoStream;
+typedef struct _GstMPEGDemux GstMPEGDemux;
+typedef struct _GstMPEGDemuxClass GstMPEGDemuxClass;
+
+/* Information associated to a single MPEG stream. */
+struct _GstMPEGStream {
+  gint              type;
+  gint              number;
+  GstPad           *pad;
+  GstCaps          *caps;
+  gint              index_id;
+  gint              size_bound;
+  GstClockTime      cur_ts;
+  GstClockTimeDiff  scr_offs;
+  GstFlowReturn     last_flow;
+  guint             buffers_sent;
+  GstTagList       *tags;
+};
+
+/* Extended structure to hold additional information for video
+   streams. */
+struct _GstMPEGVideoStream {
+  GstMPEGStream parent;
+  gint          mpeg_version;
+};
+
+struct _GstMPEGDemux {
+  GstMPEGParse   parent;
+
+  /* previous partial chunk and bytes remaining in it */
+  gboolean       in_flush;
+
+  /* program stream header values */
+  guint16        header_length;
+  guint32        rate_bound;
+  guint8         audio_bound;
+  gboolean       fixed;
+  gboolean       constrained;
+  gboolean       audio_lock;
+  gboolean       video_lock;
+  guint8         video_bound;
+  gboolean       packet_rate_restriction;
+  gint64         total_size_bound;
+
+  gint64         last_pts;
+  gboolean       pending_tags;
+  GstIndex      *index;
+
+  /* stream output */
+  GstMPEGStream *video_stream[GST_MPEG_DEMUX_NUM_VIDEO_STREAMS];
+  GstMPEGStream *audio_stream[GST_MPEG_DEMUX_NUM_AUDIO_STREAMS];
+  GstMPEGStream *private_stream[GST_MPEG_DEMUX_NUM_PRIVATE_STREAMS];
+
+  GstClockTime max_gap;         /* Maximum timestamp difference to
+                                   allow between pads before using a
+                                   filler to catch up. */
+  GstClockTime max_gap_tolerance;
+                                /* When catching a pad up, how far
+                                   behind to make it. */
+
+  GstClockTime max_ts;          /* Highest timestamp of all pads. */
+  GstPad      *max_pad;         /* Pad with highest timestamp. */
+};
+
+struct _GstMPEGDemuxClass {
+  GstMPEGParseClass parent_class;
+
+  GstPadTemplate *video_template;
+  GstPadTemplate *audio_template;
+  GstPadTemplate *private_template;
+
+  GstPad *      (*new_output_pad)       (GstMPEGDemux *mpeg_demux,
+                                         const gchar *name,
+                                         GstPadTemplate *temp);
+  void          (*init_stream)          (GstMPEGDemux *mpeg_demux,
+                                         gint type,
+                                         GstMPEGStream *str,
+                                         gint number,
+                                         const gchar *name,
+                                         GstPadTemplate *temp);
+
+  GstMPEGStream *
+                (*get_video_stream)     (GstMPEGDemux *mpeg_demux,
+                                         guint8 stream_nr,
+                                         gint type,
+                                         const gpointer info);
+  GstMPEGStream *
+                (*get_audio_stream)     (GstMPEGDemux *mpeg_demux,
+                                         guint8 stream_nr,
+                                         gint type,
+                                         const gpointer info);
+  GstMPEGStream *
+                (*get_private_stream)   (GstMPEGDemux *mpeg_demux,
+                                         guint8 stream_nr,
+                                         gint type,
+                                         const gpointer info);
+
+  GstFlowReturn (*send_subbuffer)        (GstMPEGDemux *mpeg_demux,
+                                          GstMPEGStream *outstream,
+                                          GstBuffer *buffer,
+                                          GstClockTime timestamp,
+                                          guint offset,
+                                          guint size);
+
+
+  GstFlowReturn (*combine_flows)        (GstMPEGDemux  *mpeg_demux,
+                                         GstMPEGStream *stream,
+                                         GstFlowReturn  flow);
+
+  GstFlowReturn (*process_private)      (GstMPEGDemux *mpeg_demux,
+                                         GstBuffer *buffer,
+                                         guint stream_nr,
+                                         GstClockTime timestamp,
+                                         guint headerlen, guint datalen);
+
+  void          (*synchronise_pads)    (GstMPEGDemux *mpeg_demux,
+                                        GstClockTime threshold,
+                                        GstClockTime new_ts);
+
+  void          (*sync_stream_to_time) (GstMPEGDemux *mpeg_demux,
+                                        GstMPEGStream *stream,
+                                        GstClockTime last_ts);
+};
+
+void            gst_mpeg_streams_reset_last_flow (GstMPEGStream *streams[],
+                                                  guint          num);
+void            gst_mpeg_streams_reset_cur_ts    (GstMPEGStream *streams[],
+                                                  guint          num,
+                                                  GstClockTime   cur_ts);
+
+GType           gst_mpeg_demux_get_type          (void);
+
+gboolean        gst_mpeg_demux_plugin_init       (GstPlugin *plugin);
+
+G_END_DECLS
+
+#endif /* __MPEG_DEMUX_H__ */
diff --git a/gst/mpegstream/gstmpegpacketize.c b/gst/mpegstream/gstmpegpacketize.c
new file mode 100644 (file)
index 0000000..609e23e
--- /dev/null
@@ -0,0 +1,360 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 <string.h>
+
+#include "gstmpegpacketize.h"
+
+GST_DEBUG_CATEGORY_STATIC (gstmpegpacketize_debug);
+#define GST_CAT_DEFAULT (gstmpegpacketize_debug)
+
+GstMPEGPacketize *
+gst_mpeg_packetize_new (GstMPEGPacketizeType type)
+{
+  GstMPEGPacketize *new;
+
+  new = g_new0 (GstMPEGPacketize, 1);
+  new->resync = TRUE;
+  new->id = 0;
+  new->cache_head = 0;
+  new->cache_tail = 0;
+  new->cache_size = 0x4000;
+  new->cache = g_malloc (new->cache_size);
+  new->cache_byte_pos = 0;
+  new->MPEG2 = FALSE;
+  new->type = type;
+
+#ifndef GST_DISABLE_GST_DEBUG
+  if (gstmpegpacketize_debug == NULL) {
+    GST_DEBUG_CATEGORY_INIT (gstmpegpacketize_debug, "mpegpacketize", 0,
+        "MPEG parser element packetizer");
+  }
+#endif
+
+  return new;
+}
+
+void
+gst_mpeg_packetize_flush_cache (GstMPEGPacketize * packetize)
+{
+  g_return_if_fail (packetize != NULL);
+
+  packetize->cache_byte_pos += packetize->cache_tail;
+
+  packetize->resync = TRUE;
+  packetize->cache_head = 0;
+  packetize->cache_tail = 0;
+
+  GST_DEBUG ("flushed packetize cache");
+}
+
+void
+gst_mpeg_packetize_destroy (GstMPEGPacketize * packetize)
+{
+  g_return_if_fail (packetize != NULL);
+
+  g_free (packetize->cache);
+  g_free (packetize);
+}
+
+guint64
+gst_mpeg_packetize_tell (GstMPEGPacketize * packetize)
+{
+  return packetize->cache_byte_pos + packetize->cache_head;
+}
+
+void
+gst_mpeg_packetize_put (GstMPEGPacketize * packetize, GstBuffer * buf)
+{
+  int cache_len = packetize->cache_tail - packetize->cache_head;
+
+  if (packetize->cache_head == 0 && cache_len == 0 &&
+      GST_BUFFER_OFFSET_IS_VALID (buf)) {
+    packetize->cache_byte_pos = GST_BUFFER_OFFSET (buf);
+    GST_DEBUG ("cache byte position now %" G_GINT64_FORMAT,
+        packetize->cache_byte_pos);
+  }
+
+  if (cache_len + GST_BUFFER_SIZE (buf) > packetize->cache_size) {
+    /* the buffer does not fit into the cache so grow the cache */
+
+    guint8 *new_cache;
+
+    /* get the new size of the cache */
+    do {
+      packetize->cache_size *= 2;
+    } while (cache_len + GST_BUFFER_SIZE (buf) > packetize->cache_size);
+
+    /* allocate new cache - do not realloc to avoid copying data twice */
+    new_cache = g_malloc (packetize->cache_size);
+
+    /* copy the data to the beginning of the new cache and update the cache info */
+    memcpy (new_cache, packetize->cache + packetize->cache_head, cache_len);
+    g_free (packetize->cache);
+    packetize->cache = new_cache;
+    packetize->cache_byte_pos += packetize->cache_head;
+    packetize->cache_head = 0;
+    packetize->cache_tail = cache_len;
+  } else if (packetize->cache_tail + GST_BUFFER_SIZE (buf) >
+      packetize->cache_size) {
+    /* the buffer does not fit into the end of the cache so move the cache data
+       to the beginning of the cache */
+
+    memmove (packetize->cache, packetize->cache + packetize->cache_head,
+        packetize->cache_tail - packetize->cache_head);
+    packetize->cache_byte_pos += packetize->cache_head;
+    packetize->cache_tail -= packetize->cache_head;
+    packetize->cache_head = 0;
+  }
+
+  /* copy the buffer to the cache */
+  memcpy (packetize->cache + packetize->cache_tail, GST_BUFFER_DATA (buf),
+      GST_BUFFER_SIZE (buf));
+  packetize->cache_tail += GST_BUFFER_SIZE (buf);
+
+  gst_buffer_unref (buf);
+}
+
+static guint
+peek_cache (GstMPEGPacketize * packetize, guint length, guint8 ** buf)
+{
+  *buf = packetize->cache + packetize->cache_head;
+
+  if (packetize->cache_tail - packetize->cache_head < length)
+    return packetize->cache_tail - packetize->cache_head;
+
+  return length;
+}
+
+static void
+skip_cache (GstMPEGPacketize * packetize, guint length)
+{
+  g_assert (packetize->cache_tail - packetize->cache_head >= length);
+
+  packetize->cache_head += length;
+}
+
+static GstFlowReturn
+read_cache (GstMPEGPacketize * packetize, guint length, GstBuffer ** outbuf)
+{
+  if (packetize->cache_tail - packetize->cache_head < length)
+    return GST_FLOW_RESEND;
+  if (length == 0)
+    return GST_FLOW_RESEND;
+
+  *outbuf = gst_buffer_new_and_alloc (length);
+
+  memcpy (GST_BUFFER_DATA (*outbuf), packetize->cache + packetize->cache_head,
+      length);
+  packetize->cache_head += length;
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+parse_packhead (GstMPEGPacketize * packetize, GstBuffer ** outbuf)
+{
+  guint length = 8 + 4;
+  guint8 *buf;
+  guint got_bytes;
+
+  GST_DEBUG ("packetize: in parse_packhead");
+
+  *outbuf = NULL;
+
+  got_bytes = peek_cache (packetize, length, &buf);
+  if (got_bytes < length)
+    return GST_FLOW_RESEND;
+
+  buf += 4;
+
+  GST_DEBUG ("code %02x", *buf);
+
+  /* start parsing the stream */
+  if ((*buf & 0xc0) == 0x40) {
+    GST_DEBUG ("packetize::parse_packhead setting mpeg2");
+    packetize->MPEG2 = TRUE;
+    length += 2;
+    got_bytes = peek_cache (packetize, length, &buf);
+    if (got_bytes < length)
+      return GST_FLOW_RESEND;
+  } else {
+    GST_DEBUG ("packetize::parse_packhead setting mpeg1");
+    packetize->MPEG2 = FALSE;
+  }
+
+  return read_cache (packetize, length, outbuf);
+}
+
+static GstFlowReturn
+parse_end (GstMPEGPacketize * packetize, GstBuffer ** outbuf)
+{
+  return read_cache (packetize, 4, outbuf);
+}
+
+static GstFlowReturn
+parse_generic (GstMPEGPacketize * packetize, GstBuffer ** outbuf)
+{
+  guchar *buf;
+  guint length = 6;
+  guint got_bytes;
+
+  GST_DEBUG ("packetize: in parse_generic");
+
+  got_bytes = peek_cache (packetize, length, &buf);
+  if (got_bytes < length)
+    return GST_FLOW_RESEND;
+
+  buf += 4;
+
+  length += GST_READ_UINT16_BE (buf);
+  GST_DEBUG ("packetize: header_length %d", length);
+
+  return read_cache (packetize, length, outbuf);
+}
+
+static GstFlowReturn
+parse_chunk (GstMPEGPacketize * packetize, GstBuffer ** outbuf)
+{
+  guchar *buf;
+  gint offset;
+  guint32 code;
+  guint chunksize;
+
+  chunksize = peek_cache (packetize, 4096, &buf);
+  if (chunksize == 0)
+    return GST_FLOW_RESEND;
+
+  offset = 4;
+
+  code = GST_READ_UINT32_BE (buf + offset);
+
+  GST_DEBUG ("code = %08x", code);
+
+  while ((code & 0xffffff00) != 0x100L) {
+    code = (code << 8) | buf[offset++];
+
+    GST_DEBUG ("  code = %08x", code);
+
+    if (offset == chunksize) {
+      chunksize = peek_cache (packetize, offset + 4096, &buf);
+      if (chunksize == 0)
+        return GST_FLOW_RESEND;
+      chunksize += offset;
+    }
+  }
+  if (offset > 4) {
+    return read_cache (packetize, offset - 4, outbuf);
+  }
+  return GST_FLOW_RESEND;
+}
+
+
+/* FIXME mmx-ify me */
+static gboolean
+find_start_code (GstMPEGPacketize * packetize)
+{
+  guint8 *buf;
+  gint offset;
+  guint32 code;
+  gint chunksize;
+
+  chunksize = peek_cache (packetize, 4096, &buf);
+  if (chunksize < 5)
+    return FALSE;
+
+  offset = 4;
+
+  code = GST_READ_UINT32_BE (buf);
+
+  GST_DEBUG ("code = %08x %p %08x", code, buf, chunksize);
+
+  while ((code & 0xffffff00) != 0x100L) {
+    code = (code << 8) | buf[offset++];
+
+    GST_DEBUG ("  code = %08x %p %08x", code, buf, chunksize);
+
+    if (offset == chunksize) {
+      skip_cache (packetize, offset);
+
+      chunksize = peek_cache (packetize, 4096, &buf);
+      if (chunksize == 0)
+        return FALSE;
+
+      offset = 0;
+    }
+  }
+  packetize->id = code & 0xff;
+  if (offset > 4) {
+    skip_cache (packetize, offset - 4);
+  }
+  return TRUE;
+}
+
+GstFlowReturn
+gst_mpeg_packetize_read (GstMPEGPacketize * packetize, GstBuffer ** outbuf)
+{
+  g_return_val_if_fail (packetize != NULL, GST_FLOW_ERROR);
+
+  *outbuf = NULL;
+
+  while (*outbuf == NULL) {
+    if (!find_start_code (packetize))
+      return GST_FLOW_RESEND;
+
+    GST_DEBUG ("packetize: have chunk 0x%02X", packetize->id);
+    if (packetize->type == GST_MPEG_PACKETIZE_SYSTEM) {
+      if (packetize->resync) {
+        if (packetize->id != PACK_START_CODE) {
+          skip_cache (packetize, 4);
+          continue;
+        }
+
+        packetize->resync = FALSE;
+      }
+      switch (packetize->id) {
+        case PACK_START_CODE:
+          return parse_packhead (packetize, outbuf);
+        case SYS_HEADER_START_CODE:
+          return parse_generic (packetize, outbuf);
+        case ISO11172_END_START_CODE:
+          return parse_end (packetize, outbuf);
+        default:
+          if (packetize->MPEG2 && ((packetize->id < 0xBD)
+                  || (packetize->id > 0xFE))) {
+            skip_cache (packetize, 4);
+            g_warning ("packetize: ******** unknown id 0x%02X", packetize->id);
+          } else {
+            return parse_generic (packetize, outbuf);
+          }
+      }
+    } else if (packetize->type == GST_MPEG_PACKETIZE_VIDEO) {
+      return parse_chunk (packetize, outbuf);
+    } else {
+      g_assert_not_reached ();
+    }
+  }
+
+  g_assert_not_reached ();
+  return GST_FLOW_ERROR;
+}
diff --git a/gst/mpegstream/gstmpegpacketize.h b/gst/mpegstream/gstmpegpacketize.h
new file mode 100644 (file)
index 0000000..1511217
--- /dev/null
@@ -0,0 +1,80 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __MPEGPACKETIZE_H__
+#define __MPEGPACKETIZE_H__
+
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define PICTURE_START_CODE              0x00
+#define SLICE_MIN_START_CODE            0x01
+#define SLICE_MAX_START_CODE            0xaf
+#define USER_START_CODE                 0xb2
+#define SEQUENCE_START_CODE             0xb3
+#define SEQUENCE_ERROR_START_CODE       0xb4
+#define EXT_START_CODE                  0xb5
+#define SEQUENCE_END_START_CODE         0xb7
+#define GOP_START_CODE                  0xb8
+
+#define ISO11172_END_START_CODE         0xb9
+#define PACK_START_CODE                 0xba
+#define SYS_HEADER_START_CODE           0xbb
+
+typedef struct _GstMPEGPacketize GstMPEGPacketize;
+
+#define GST_MPEG_PACKETIZE_ID(pack)             ((pack)->id)
+#define GST_MPEG_PACKETIZE_IS_MPEG2(pack)       ((pack)->MPEG2)
+
+typedef enum {
+  GST_MPEG_PACKETIZE_SYSTEM,
+  GST_MPEG_PACKETIZE_VIDEO,
+} GstMPEGPacketizeType;
+
+struct _GstMPEGPacketize {
+  /* current parse state */
+  guchar id;
+
+  GstMPEGPacketizeType type;
+
+  guint8 *cache;            /* cache for incoming data */
+  guint cache_size;         /* allocated size of the cache */
+  guint cache_head;         /* position of the beginning of the data */
+  guint cache_tail;         /* position of the end of the data in the cache */
+  guint64 cache_byte_pos;   /* byte position of the cache in the MPEG stream */
+
+  gboolean MPEG2;
+  gboolean resync;
+};
+
+GstMPEGPacketize* gst_mpeg_packetize_new     (GstMPEGPacketizeType type);
+void              gst_mpeg_packetize_destroy (GstMPEGPacketize *packetize);
+
+void              gst_mpeg_packetize_flush_cache (GstMPEGPacketize *packetize);
+
+guint64           gst_mpeg_packetize_tell    (GstMPEGPacketize *packetize);
+void              gst_mpeg_packetize_put     (GstMPEGPacketize *packetize, GstBuffer * buf);
+GstFlowReturn     gst_mpeg_packetize_read    (GstMPEGPacketize *packetize, GstBuffer ** outbuf);
+
+G_END_DECLS
+
+#endif /* __MPEGPACKETIZE_H__ */
diff --git a/gst/mpegstream/gstmpegparse.c b/gst/mpegstream/gstmpegparse.c
new file mode 100644 (file)
index 0000000..a0649c7
--- /dev/null
@@ -0,0 +1,1361 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 "gstmpegparse.h"
+#include "gstmpegclock.h"
+
+static GstFormat scr_format;
+
+GST_DEBUG_CATEGORY_STATIC (gstmpegparse_debug);
+#define GST_CAT_DEFAULT (gstmpegparse_debug)
+
+GST_DEBUG_CATEGORY_EXTERN (GST_CAT_SEEK);
+
+#define MP_INVALID_SCR ((guint64)(-1))
+#define MP_MUX_RATE_MULT 50
+#define MP_MIN_VALID_BSS 8192
+#define MP_MAX_VALID_BSS 16384
+/*
+ * Hysteresis value to limit the
+ * total predicted time skipping about
+ */
+#define MP_SCR_RATE_HYST 0.08
+
+#define CLASS(o)        GST_MPEG_PARSE_CLASS (G_OBJECT_GET_CLASS (o))
+
+#define DEFAULT_MAX_SCR_GAP     120000
+
+/* GstMPEGParse signals and args */
+enum
+{
+  SIGNAL_REACHED_OFFSET,
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0,
+  ARG_MAX_SCR_GAP,
+  ARG_BYTE_OFFSET,
+  ARG_TIME_OFFSET
+      /* FILL ME */
+};
+
+static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) [ 1, 2 ], " "systemstream = (boolean) TRUE")
+    );
+
+static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/mpeg, "
+        "mpegversion = (int) [ 1, 2 ], " "systemstream = (boolean) TRUE")
+    );
+
+#define _do_init(bla) \
+    GST_DEBUG_CATEGORY_INIT (gstmpegparse_debug, "mpegparse", 0, \
+        "MPEG parser element");
+
+GST_BOILERPLATE_FULL (GstMPEGParse, gst_mpeg_parse, GstElement,
+    GST_TYPE_ELEMENT, _do_init);
+
+static GstStateChangeReturn gst_mpeg_parse_change_state (GstElement * element,
+    GstStateChange transition);
+
+static gboolean gst_mpeg_parse_parse_packhead (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer);
+
+static void gst_mpeg_parse_reset (GstMPEGParse * mpeg_parse);
+
+static GstClockTime gst_mpeg_parse_adjust_ts (GstMPEGParse * mpeg_parse,
+    GstClockTime ts);
+
+static GstFlowReturn gst_mpeg_parse_send_buffer (GstMPEGParse * mpeg_parse,
+    GstBuffer * buffer, GstClockTime time);
+static gboolean gst_mpeg_parse_process_event (GstMPEGParse * mpeg_parse,
+    GstEvent * event);
+static gboolean gst_mpeg_parse_send_event (GstMPEGParse * mpeg_parse,
+    GstEvent * event);
+
+static void gst_mpeg_parse_pad_added (GstElement * element, GstPad * pad);
+
+static gboolean gst_mpeg_parse_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_mpeg_parse_chain (GstPad * pad, GstBuffer * buf);
+
+static void gst_mpeg_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_mpeg_parse_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_mpeg_parse_set_index (GstElement * element, GstIndex * index);
+static GstIndex *gst_mpeg_parse_get_index (GstElement * element);
+
+static guint gst_mpeg_parse_signals[LAST_SIGNAL] = { 0 };
+
+static void
+gst_mpeg_parse_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_set_details_simple (element_class, "MPEG System Parser",
+      "Codec/Parser",
+      "Parses MPEG1 and MPEG2 System Streams",
+      "Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim.taymans@chello.be>");
+}
+
+static void
+gst_mpeg_parse_class_init (GstMPEGParseClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gst_mpeg_parse_signals[SIGNAL_REACHED_OFFSET] =
+      g_signal_new ("reached-offset", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstMPEGParseClass, reached_offset),
+      NULL, NULL, gst_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+  gobject_class->get_property = gst_mpeg_parse_get_property;
+  gobject_class->set_property = gst_mpeg_parse_set_property;
+
+  gstelement_class->pad_added = gst_mpeg_parse_pad_added;
+  gstelement_class->change_state = gst_mpeg_parse_change_state;
+  gstelement_class->get_index = gst_mpeg_parse_get_index;
+  gstelement_class->set_index = gst_mpeg_parse_set_index;
+
+  klass->parse_packhead = gst_mpeg_parse_parse_packhead;
+  klass->parse_syshead = NULL;
+  klass->parse_packet = NULL;
+  klass->parse_pes = NULL;
+  klass->adjust_ts = gst_mpeg_parse_adjust_ts;
+  klass->send_buffer = gst_mpeg_parse_send_buffer;
+  klass->process_event = gst_mpeg_parse_process_event;
+  klass->send_event = gst_mpeg_parse_send_event;
+
+  /* FIXME: this is a hack.  We add the pad templates here instead
+   * in the base_init function, since the derived class (mpegdemux)
+   * uses different pads.  IMO, this is wrong. */
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_factory);
+
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_SCR_GAP,
+      g_param_spec_int ("max-scr-gap", "Max SCR gap",
+          "Maximum allowed gap between expected and actual "
+          "SCR values. -1 means never adjust.", -1, G_MAXINT,
+          DEFAULT_MAX_SCR_GAP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BYTE_OFFSET,
+      g_param_spec_uint64 ("byte-offset", "Byte Offset",
+          "Emit reached-offset signal when the byte offset is reached.",
+          0, G_MAXUINT64, G_MAXUINT64,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TIME_OFFSET,
+      g_param_spec_uint64 ("time-offset", "Time Offset",
+          "Time offset in the stream.",
+          0, G_MAXUINT64, G_MAXUINT64,
+          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_mpeg_parse_init (GstMPEGParse * mpeg_parse, GstMPEGParseClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GstPadTemplate *templ;
+
+  gstelement_class = GST_ELEMENT_GET_CLASS (mpeg_parse);
+
+  mpeg_parse->packetize = NULL;
+
+  mpeg_parse->max_scr_gap = DEFAULT_MAX_SCR_GAP;
+
+  mpeg_parse->byte_offset = G_MAXUINT64;
+
+  gst_mpeg_parse_reset (mpeg_parse);
+
+  templ = gst_element_class_get_pad_template (gstelement_class, "sink");
+  mpeg_parse->sinkpad = gst_pad_new_from_template (templ, "sink");
+  gst_element_add_pad (GST_ELEMENT (mpeg_parse), mpeg_parse->sinkpad);
+
+  if ((templ = gst_element_class_get_pad_template (gstelement_class, "src"))) {
+    mpeg_parse->srcpad = gst_pad_new_from_template (templ, "src");
+    gst_element_add_pad (GST_ELEMENT (mpeg_parse), mpeg_parse->srcpad);
+    gst_pad_set_event_function (mpeg_parse->srcpad,
+        GST_DEBUG_FUNCPTR (gst_mpeg_parse_handle_src_event));
+    gst_pad_set_query_type_function (mpeg_parse->srcpad,
+        GST_DEBUG_FUNCPTR (gst_mpeg_parse_get_src_query_types));
+    gst_pad_set_query_function (mpeg_parse->srcpad,
+        GST_DEBUG_FUNCPTR (gst_mpeg_parse_handle_src_query));
+    gst_pad_use_fixed_caps (mpeg_parse->srcpad);
+  }
+
+  gst_pad_set_event_function (mpeg_parse->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg_parse_event));
+  gst_pad_set_chain_function (mpeg_parse->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_mpeg_parse_chain));
+}
+
+#ifdef FIXME
+static void
+gst_mpeg_parse_update_streaminfo (GstMPEGParse * mpeg_parse)
+{
+  GstProps *props;
+  GstPropsEntry *entry;
+  gboolean mpeg2 = GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize);
+  GstCaps *caps;
+
+  props = gst_props_empty_new ();
+
+  entry = gst_props_entry_new ("mpegversion", G_TYPE_INT (mpeg2 ? 2 : 1));
+  gst_props_add_entry (props, (GstPropsEntry *) entry);
+
+  entry =
+      gst_props_entry_new ("bitrate", G_TYPE_INT (mpeg_parse->mux_rate * 8));
+  gst_props_add_entry (props, (GstPropsEntry *) entry);
+
+  caps = gst_caps_new ("mpeg_streaminfo",
+      "application/x-gst-streaminfo", props);
+
+  gst_caps_replace_sink (&mpeg_parse->streaminfo, caps);
+  g_object_notify (G_OBJECT (mpeg_parse), "streaminfo");
+}
+#endif
+
+static void
+gst_mpeg_parse_reset (GstMPEGParse * mpeg_parse)
+{
+  GST_DEBUG_OBJECT (mpeg_parse, "Resetting mpeg_parse");
+
+  mpeg_parse->first_scr = MP_INVALID_SCR;
+  mpeg_parse->first_scr_pos = 0;
+  mpeg_parse->last_scr = MP_INVALID_SCR;
+  mpeg_parse->last_scr_pos = 0;
+  mpeg_parse->scr_rate = 0;
+
+  mpeg_parse->avg_bitrate_time = 0;
+  mpeg_parse->avg_bitrate_bytes = 0;
+
+  mpeg_parse->mux_rate = 0;
+  mpeg_parse->current_scr = MP_INVALID_SCR;
+  mpeg_parse->next_scr = 0;
+  mpeg_parse->bytes_since_scr = 0;
+
+  mpeg_parse->current_ts = 0;
+
+  mpeg_parse->do_adjust = TRUE;
+  mpeg_parse->pending_newsegment = TRUE;
+  mpeg_parse->adjust = 0;
+
+  /* Initialize the current segment. */
+  GST_DEBUG_OBJECT (mpeg_parse, "Resetting current segment");
+  gst_segment_init (&mpeg_parse->current_segment, GST_FORMAT_TIME);
+}
+
+static GstClockTime
+gst_mpeg_parse_adjust_ts (GstMPEGParse * mpeg_parse, GstClockTime ts)
+{
+  if (!GST_CLOCK_TIME_IS_VALID (ts)) {
+    return GST_CLOCK_TIME_NONE;
+  }
+
+  if (mpeg_parse->do_adjust) {
+    /* Close the SCR gaps. */
+    return ts + MPEGTIME_TO_GSTTIME (mpeg_parse->adjust);
+  } else {
+    if (ts >= mpeg_parse->current_segment.start) {
+      return ts;
+    } else {
+      /* The timestamp lies outside the current segment. Return an
+         invalid timestamp instead. */
+      return GST_CLOCK_TIME_NONE;
+    }
+  }
+}
+
+static GstFlowReturn
+gst_mpeg_parse_send_buffer (GstMPEGParse * mpeg_parse, GstBuffer * buffer,
+    GstClockTime time)
+{
+  GstFlowReturn result = GST_FLOW_OK;
+
+  if (!GST_PAD_CAPS (mpeg_parse->srcpad)) {
+    gboolean mpeg2 = GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize);
+    GstCaps *caps;
+
+    caps = gst_caps_new_simple ("video/mpeg",
+        "mpegversion", G_TYPE_INT, (mpeg2 ? 2 : 1),
+        "systemstream", G_TYPE_BOOLEAN, TRUE,
+        "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+    if (!gst_pad_set_caps (mpeg_parse->srcpad, caps)) {
+      GST_ELEMENT_ERROR (GST_ELEMENT (mpeg_parse),
+          CORE, NEGOTIATION, (NULL), ("failed to set caps"));
+      gst_caps_unref (caps);
+      gst_buffer_unref (buffer);
+      return GST_FLOW_ERROR;
+    }
+    gst_caps_unref (caps);
+  }
+
+  GST_BUFFER_TIMESTAMP (buffer) = time;
+  GST_DEBUG_OBJECT (mpeg_parse, "current buffer time: %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (time));
+
+  gst_buffer_set_caps (buffer, GST_PAD_CAPS (mpeg_parse->srcpad));
+  result = gst_pad_push (mpeg_parse->srcpad, buffer);
+
+  return result;
+}
+
+static gboolean
+gst_mpeg_parse_process_event (GstMPEGParse * mpeg_parse, GstEvent * event)
+{
+  gboolean ret = FALSE;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gboolean update;
+      gdouble rate;
+      GstFormat format;
+      gint64 start, stop, time;
+
+      gst_event_parse_new_segment (event, &update, &rate, &format,
+          &start, &stop, &time);
+
+      if (format == GST_FORMAT_TIME && (GST_CLOCK_TIME_IS_VALID (time))) {
+        /* We are receiving segments from upstream. Don't try to adjust
+           SCR values. */
+        mpeg_parse->do_adjust = FALSE;
+        mpeg_parse->adjust = 0;
+
+        if (!update && mpeg_parse->current_segment.stop != -1) {
+          /* Close the current segment. */
+          if (CLASS (mpeg_parse)->send_event) {
+            CLASS (mpeg_parse)->send_event (mpeg_parse,
+                gst_event_new_new_segment (TRUE,
+                    mpeg_parse->current_segment.rate,
+                    GST_FORMAT_TIME,
+                    mpeg_parse->current_segment.start,
+                    mpeg_parse->current_segment.stop,
+                    mpeg_parse->current_segment.time));
+          }
+        }
+
+        /* Update the current segment. */
+        GST_DEBUG_OBJECT (mpeg_parse,
+            "Updating current segment with newsegment");
+        gst_segment_set_newsegment (&mpeg_parse->current_segment,
+            update, rate, format, start, stop, time);
+
+        if (!update) {
+          /* Send a newsegment event for the new current segment. */
+          if (CLASS (mpeg_parse)->send_event) {
+            CLASS (mpeg_parse)->send_event (mpeg_parse,
+                gst_event_new_new_segment (FALSE, rate, GST_FORMAT_TIME,
+                    start, stop, time));
+            mpeg_parse->pending_newsegment = FALSE;
+          }
+        }
+      } else if (format != GST_FORMAT_TIME && !update) {
+        GST_DEBUG_OBJECT (mpeg_parse,
+            "Received non-time newsegment from stream");
+        mpeg_parse->do_adjust = TRUE;
+        mpeg_parse->adjust = 0;
+        mpeg_parse->pending_newsegment = TRUE;
+      }
+      mpeg_parse->packetize->resync = TRUE;
+
+      gst_event_unref (event);
+
+      ret = TRUE;
+      break;
+    }
+    case GST_EVENT_FLUSH_STOP:{
+      /* Forward the event. */
+      if (CLASS (mpeg_parse)->send_event) {
+        ret = CLASS (mpeg_parse)->send_event (mpeg_parse, event);
+      } else {
+        gst_event_unref (event);
+      }
+
+      /* Reset the internal fields. */
+      gst_mpeg_parse_reset (mpeg_parse);
+      gst_mpeg_packetize_flush_cache (mpeg_parse->packetize);
+      break;
+    }
+    case GST_EVENT_EOS:{
+      GST_DEBUG_OBJECT (mpeg_parse, "EOS");
+
+      if (CLASS (mpeg_parse)->send_event) {
+        ret = CLASS (mpeg_parse)->send_event (mpeg_parse, event);
+      } else {
+        gst_event_unref (event);
+      }
+      if (!ret) {
+        GST_ELEMENT_ERROR (mpeg_parse, STREAM, DEMUX, (NULL),
+            ("Pushing EOS event didn't work on any of the source pads"));
+      }
+      break;
+    }
+    default:
+      if (CLASS (mpeg_parse)->send_event) {
+        ret = CLASS (mpeg_parse)->send_event (mpeg_parse, event);
+      } else {
+        gst_event_unref (event);
+      }
+      break;
+  }
+
+  return ret;
+}
+
+/* returns TRUE if pushing the event worked on at least one pad */
+static gboolean
+gst_mpeg_parse_send_event (GstMPEGParse * mpeg_parse, GstEvent * event)
+{
+  GstIterator *it;
+  gpointer pad;
+  gboolean ret = FALSE;
+
+  /* Send event to all source pads of this element. */
+  it = gst_element_iterate_src_pads (GST_ELEMENT (mpeg_parse));
+  while (TRUE) {
+    switch (gst_iterator_next (it, &pad)) {
+      case GST_ITERATOR_OK:
+        gst_event_ref (event);
+        if (gst_pad_push_event (GST_PAD (pad), event))
+          ret = TRUE;
+        gst_object_unref (GST_OBJECT (pad));
+        break;
+      case GST_ITERATOR_RESYNC:
+        gst_iterator_resync (it);
+        break;
+      case GST_ITERATOR_DONE:
+        goto done;
+      case GST_ITERATOR_ERROR:
+        ret = FALSE;
+        goto done;
+    }
+  }
+
+done:
+  gst_iterator_free (it);
+  gst_event_unref (event);
+
+  return ret;
+}
+
+static void
+gst_mpeg_parse_pad_added (GstElement * element, GstPad * pad)
+{
+  GstMPEGParse *mpeg_parse;
+  GstEvent *event;
+
+  if (GST_PAD_IS_SINK (pad)) {
+    return;
+  }
+
+  mpeg_parse = GST_MPEG_PARSE (element);
+
+  /* For each new added pad, send a newsegment event so it knows about
+   * the current time. This is required because MPEG allows any sort
+   * of order of packets, and new substreams can be found at any
+   * time. */
+  event = gst_event_new_new_segment (FALSE,
+      mpeg_parse->current_segment.rate,
+      GST_FORMAT_TIME, mpeg_parse->current_segment.start,
+      mpeg_parse->current_segment.stop, mpeg_parse->current_segment.start);
+
+  gst_pad_push_event (pad, event);
+}
+
+static gboolean
+gst_mpeg_parse_parse_packhead (GstMPEGParse * mpeg_parse, GstBuffer * buffer)
+{
+  guint8 *buf;
+  guint64 prev_scr, scr, diff;
+  guint32 scr1, scr2;
+  guint32 new_rate;
+  guint64 offset;
+
+  buf = GST_BUFFER_DATA (buffer);
+  buf += 4;
+
+  scr1 = GST_READ_UINT32_BE (buf);
+  scr2 = GST_READ_UINT32_BE (buf + 4);
+
+  /* Extract the SCR and rate values from the header. */
+  if (GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize)) {
+    guint32 scr_ext;
+
+    /* :2=01 ! scr:3 ! marker:1==1 ! scr:15 ! marker:1==1 ! scr:15 */
+    scr = ((guint64) scr1 & 0x38000000) << 3;
+    scr |= ((guint64) scr1 & 0x03fff800) << 4;
+    scr |= ((guint64) scr1 & 0x000003ff) << 5;
+    scr |= ((guint64) scr2 & 0xf8000000) >> 27;
+
+    scr_ext = (scr2 & 0x03fe0000) >> 17;
+
+    scr = (scr * 300 + scr_ext % 300) / 300;
+
+    GST_LOG_OBJECT (mpeg_parse, "%" G_GINT64_FORMAT " %d, %08x %08x %"
+        G_GINT64_FORMAT " diff: %" G_GINT64_FORMAT,
+        scr, scr_ext, scr1, scr2, mpeg_parse->bytes_since_scr,
+        scr - mpeg_parse->current_scr);
+
+    buf += 6;
+    new_rate = (GST_READ_UINT32_BE (buf) & 0xfffffc00) >> 10;
+  } else {
+    scr = ((guint64) scr1 & 0x0e000000) << 5;
+    scr |= ((guint64) scr1 & 0x00fffe00) << 6;
+    scr |= ((guint64) scr1 & 0x000000ff) << 7;
+    scr |= ((guint64) scr2 & 0xfe000000) >> 25;
+
+    buf += 5;
+    /* we do this byte by byte because buf[3] might be outside of buf's
+     * memory space */
+    new_rate = ((gint32) buf[0] & 0x7f) << 15;
+    new_rate |= ((gint32) buf[1]) << 7;
+    new_rate |= buf[2] >> 1;
+  }
+  new_rate *= MP_MUX_RATE_MULT;
+
+  /* Deal with SCR overflow */
+  if (mpeg_parse->current_scr != MP_INVALID_SCR) {
+    guint32 diff;
+
+    diff = scr - mpeg_parse->current_scr;
+    if (diff < 4 * CLOCK_FREQ)
+      scr = mpeg_parse->current_scr + diff;
+  }
+
+
+  prev_scr = mpeg_parse->current_scr;
+  mpeg_parse->current_scr = scr;
+
+  if (mpeg_parse->do_adjust && mpeg_parse->pending_newsegment) {
+    /* Open a new segment. */
+    gst_segment_set_newsegment (&mpeg_parse->current_segment,
+        FALSE, 1.0, GST_FORMAT_TIME, MPEGTIME_TO_GSTTIME (scr), -1,
+        MPEGTIME_TO_GSTTIME (scr));
+    CLASS (mpeg_parse)->send_event (mpeg_parse,
+        gst_event_new_new_segment (FALSE, mpeg_parse->current_segment.rate,
+            GST_FORMAT_TIME, mpeg_parse->current_segment.start, -1,
+            mpeg_parse->current_segment.time));
+
+    mpeg_parse->pending_newsegment = FALSE;
+
+    /* The first SCR seen should not lead to timestamp adjustment. */
+    mpeg_parse->next_scr = scr;
+  }
+
+  if (mpeg_parse->next_scr == MP_INVALID_SCR) {
+    mpeg_parse->next_scr = mpeg_parse->current_scr;
+  }
+
+  /* Update the first SCR. */
+  if ((mpeg_parse->first_scr == MP_INVALID_SCR) ||
+      (mpeg_parse->current_scr < mpeg_parse->first_scr)) {
+    mpeg_parse->first_scr = mpeg_parse->current_scr;
+    mpeg_parse->first_scr_pos = gst_mpeg_packetize_tell (mpeg_parse->packetize);
+  }
+
+  /* Update the last SCR. */
+  if ((mpeg_parse->last_scr == MP_INVALID_SCR) ||
+      (mpeg_parse->current_scr > mpeg_parse->last_scr)) {
+    mpeg_parse->last_scr = mpeg_parse->current_scr;
+    mpeg_parse->last_scr_pos = gst_mpeg_packetize_tell (mpeg_parse->packetize);
+  }
+
+  GST_LOG_OBJECT (mpeg_parse,
+      "SCR is %" G_GUINT64_FORMAT
+      " (%" G_GUINT64_FORMAT ") next: %"
+      G_GINT64_FORMAT " (%" G_GINT64_FORMAT
+      ") diff: %" G_GINT64_FORMAT " (%"
+      G_GINT64_FORMAT ")",
+      mpeg_parse->current_scr,
+      MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr),
+      mpeg_parse->next_scr,
+      MPEGTIME_TO_GSTTIME (mpeg_parse->next_scr),
+      mpeg_parse->current_scr - mpeg_parse->next_scr,
+      MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr) -
+      MPEGTIME_TO_GSTTIME (mpeg_parse->next_scr));
+
+  /* Watch out for integer overflows... */
+  if (mpeg_parse->next_scr > scr) {
+    diff = mpeg_parse->next_scr - scr;
+  } else {
+    diff = scr - mpeg_parse->next_scr;
+  }
+
+  if (mpeg_parse->do_adjust && diff > mpeg_parse->max_scr_gap) {
+    /* SCR gap found, fix the adjust value. */
+    GST_DEBUG_OBJECT (mpeg_parse, "SCR gap detected; expected: %"
+        G_GUINT64_FORMAT " got: %" G_GUINT64_FORMAT,
+        mpeg_parse->next_scr, mpeg_parse->current_scr);
+
+    mpeg_parse->adjust +=
+        (gint64) mpeg_parse->next_scr - (gint64) mpeg_parse->current_scr;
+    GST_DEBUG_OBJECT (mpeg_parse, "new adjust: %" G_GINT64_FORMAT,
+        mpeg_parse->adjust);
+  }
+
+  /* Update the current timestamp. */
+  mpeg_parse->current_ts = CLASS (mpeg_parse)->adjust_ts (mpeg_parse,
+      MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr));
+
+  /* Check for the reached offset signal. */
+  offset = gst_mpeg_packetize_tell (mpeg_parse->packetize);
+  if (offset > mpeg_parse->byte_offset) {
+    /* we have reached the wanted offset so emit the signal. */
+    g_signal_emit (G_OBJECT (mpeg_parse),
+        gst_mpeg_parse_signals[SIGNAL_REACHED_OFFSET], 0);
+  }
+
+  /* Update index if any. */
+  if (mpeg_parse->index && GST_INDEX_IS_WRITABLE (mpeg_parse->index)) {
+    gst_index_add_association (mpeg_parse->index, mpeg_parse->index_id,
+        GST_ASSOCIATION_FLAG_KEY_UNIT,
+        GST_FORMAT_BYTES, GST_BUFFER_OFFSET (buffer),
+        GST_FORMAT_TIME, MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr), 0);
+  }
+
+  /* Update the calculated average bitrate. */
+  if ((mpeg_parse->current_scr > prev_scr) && (diff < mpeg_parse->max_scr_gap)) {
+    mpeg_parse->avg_bitrate_time +=
+        MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr - prev_scr);
+    mpeg_parse->avg_bitrate_bytes += mpeg_parse->bytes_since_scr;
+  }
+
+  /* Update the bitrate. */
+  if (mpeg_parse->mux_rate != new_rate) {
+    if (GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize)) {
+      mpeg_parse->mux_rate = new_rate;
+    } else if (mpeg_parse->avg_bitrate_bytes > MP_MIN_VALID_BSS) {
+      mpeg_parse->mux_rate =
+          GST_SECOND * mpeg_parse->avg_bitrate_bytes /
+          mpeg_parse->avg_bitrate_time;
+    }
+    //gst_mpeg_parse_update_streaminfo (mpeg_parse);
+    GST_LOG_OBJECT (mpeg_parse,
+        "stream current is %1.3fMbs, calculated over %1.3fkB",
+        (mpeg_parse->mux_rate * 8) / 1048576.0,
+        gst_guint64_to_gdouble (mpeg_parse->bytes_since_scr) / 1024.0);
+  }
+
+  if (mpeg_parse->avg_bitrate_bytes) {
+    GST_LOG_OBJECT (mpeg_parse,
+        "stream avg is %1.3fMbs, calculated over %1.3fkB",
+        gst_guint64_to_gdouble (mpeg_parse->avg_bitrate_bytes) * 8 * GST_SECOND
+        / gst_guint64_to_gdouble (mpeg_parse->avg_bitrate_time) / 1048576.0,
+        gst_guint64_to_gdouble (mpeg_parse->avg_bitrate_bytes) / 1024.0);
+  }
+
+  /* Range-check the calculated average bitrate. */
+  if (mpeg_parse->avg_bitrate_bytes > MP_MAX_VALID_BSS) {
+    mpeg_parse->avg_bitrate_bytes = 0;
+    mpeg_parse->avg_bitrate_time = 0;
+  }
+  mpeg_parse->bytes_since_scr = 0;
+
+  return TRUE;
+}
+
+static gboolean
+gst_mpeg_parse_event (GstPad * pad, GstEvent * event)
+{
+  gboolean ret;
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (gst_pad_get_parent (pad));
+
+  ret = CLASS (mpeg_parse)->process_event (mpeg_parse, event);
+
+  gst_object_unref (mpeg_parse);
+  return ret;
+}
+
+static GstFlowReturn
+gst_mpeg_parse_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (GST_PAD_PARENT (pad));
+  GstFlowReturn result;
+  guint id;
+  gboolean mpeg2;
+  GstClockTime time;
+  guint64 size;
+
+  if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
+    GST_DEBUG_OBJECT (mpeg_parse, "buffer with DISCONT flag set");
+    gst_mpeg_packetize_flush_cache (mpeg_parse->packetize);
+  }
+
+  gst_mpeg_packetize_put (mpeg_parse->packetize, buffer);
+  buffer = NULL;
+
+  do {
+    result = gst_mpeg_packetize_read (mpeg_parse->packetize, &buffer);
+    if (result == GST_FLOW_RESEND) {
+      /* there was not enough data in packetizer cache */
+      result = GST_FLOW_OK;
+      break;
+    }
+    if (result != GST_FLOW_OK)
+      break;
+
+    id = GST_MPEG_PACKETIZE_ID (mpeg_parse->packetize);
+    mpeg2 = GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize);
+
+    GST_LOG_OBJECT (mpeg_parse, "have chunk 0x%02X", id);
+
+    switch (id) {
+      case ISO11172_END_START_CODE:
+        break;
+      case PACK_START_CODE:
+        if (CLASS (mpeg_parse)->parse_packhead) {
+          CLASS (mpeg_parse)->parse_packhead (mpeg_parse, buffer);
+        }
+        break;
+      case SYS_HEADER_START_CODE:
+        if (CLASS (mpeg_parse)->parse_syshead) {
+          CLASS (mpeg_parse)->parse_syshead (mpeg_parse, buffer);
+        }
+        break;
+      default:
+        if (mpeg2 && ((id < 0xBD) || (id > 0xFE))) {
+          GST_ELEMENT_WARNING (GST_ELEMENT (mpeg_parse),
+              STREAM, DEMUX, (NULL), ("Unknown stream id 0x%02X", id));
+        } else {
+          if (mpeg2) {
+            if (CLASS (mpeg_parse)->parse_pes) {
+              result = CLASS (mpeg_parse)->parse_pes (mpeg_parse, buffer);
+            }
+          } else {
+            if (CLASS (mpeg_parse)->parse_packet) {
+              result = CLASS (mpeg_parse)->parse_packet (mpeg_parse, buffer);
+            }
+          }
+        }
+    }
+
+    /* Don't send data as long as no new SCR is found. */
+    if (mpeg_parse->current_scr == MP_INVALID_SCR) {
+      GST_DEBUG_OBJECT (mpeg_parse, "waiting for SCR");
+      gst_buffer_unref (buffer);
+      result = GST_FLOW_OK;
+      break;
+    }
+
+    /* Update the byte count. */
+    size = GST_BUFFER_SIZE (buffer);
+    mpeg_parse->bytes_since_scr += size;
+
+    /* Make sure the output pad has proper capabilities. */
+    if (!GST_PAD_CAPS (mpeg_parse->sinkpad)) {
+      gboolean mpeg2 = GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize);
+      GstCaps *caps = gst_caps_new_simple ("video/mpeg",
+          "mpegversion", G_TYPE_INT, (mpeg2 ? 2 : 1),
+          "systemstream", G_TYPE_BOOLEAN, TRUE,
+          "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
+      if (!gst_pad_set_caps (mpeg_parse->sinkpad, caps) < 0) {
+        GST_ELEMENT_ERROR (mpeg_parse, CORE, NEGOTIATION, (NULL), (NULL));
+        gst_buffer_unref (buffer);
+        result = GST_FLOW_ERROR;
+        gst_caps_unref (caps);
+        break;
+      }
+      gst_caps_unref (caps);
+    }
+
+    /* Send the buffer. */
+    g_return_val_if_fail (mpeg_parse->current_scr != MP_INVALID_SCR,
+        GST_FLOW_OK);
+    time = CLASS (mpeg_parse)->adjust_ts (mpeg_parse,
+        MPEGTIME_TO_GSTTIME (mpeg_parse->current_scr));
+
+    if (CLASS (mpeg_parse)->send_buffer)
+      result = CLASS (mpeg_parse)->send_buffer (mpeg_parse, buffer, time);
+    else
+      gst_buffer_unref (buffer);
+
+    buffer = NULL;
+
+    /* Calculate the expected next SCR. */
+    if (mpeg_parse->current_scr != MP_INVALID_SCR) {
+      guint64 scr, bss, br;
+
+      scr = mpeg_parse->current_scr;
+      bss = mpeg_parse->bytes_since_scr;
+      if (mpeg_parse->scr_rate != 0)
+        br = mpeg_parse->scr_rate;
+      else
+        br = mpeg_parse->mux_rate;
+
+      if (br) {
+        if (GST_MPEG_PACKETIZE_IS_MPEG2 (mpeg_parse->packetize)) {
+          /* 
+           * The mpeg spec says something like this, but that doesn't
+           * really work:
+           *
+           * mpeg_parse->next_scr = (scr * br + bss * CLOCK_FREQ) / (CLOCK_FREQ + br);
+           */
+
+          mpeg_parse->next_scr = scr + (bss * CLOCK_FREQ) / br;
+        } else {
+          /* we are interpolating the scr here */
+          mpeg_parse->next_scr = scr + (bss * CLOCK_FREQ) / br;
+        }
+      } else {
+        /* no bitrate known */
+        mpeg_parse->next_scr = scr;
+      }
+
+      GST_LOG_OBJECT (mpeg_parse, "size: %" G_GINT64_FORMAT
+          ", total since SCR: %" G_GINT64_FORMAT ", br: %" G_GINT64_FORMAT
+          ", next SCR: %" G_GINT64_FORMAT, size, bss, br, mpeg_parse->next_scr);
+    }
+  } while (result == GST_FLOW_OK);
+
+  if (result != GST_FLOW_OK) {
+    GST_DEBUG_OBJECT (mpeg_parse, "flow: %s", gst_flow_get_name (result));
+  }
+
+  return result;
+}
+
+const GstFormat *
+gst_mpeg_parse_get_src_formats (GstPad * pad)
+{
+  static const GstFormat formats[] = {
+    GST_FORMAT_BYTES,
+    GST_FORMAT_TIME,
+    0
+  };
+
+  return formats;
+}
+
+/*
+ * Return the bitrate to the nearest byte/sec
+ */
+static gboolean
+gst_mpeg_parse_get_rate (GstMPEGParse * mpeg_parse, gint64 * rate)
+{
+  GstFormat time_format = GST_FORMAT_TIME;
+  GstFormat bytes_format = GST_FORMAT_BYTES;
+  gint64 total_time = 0;
+  gint64 total_bytes = 0;
+
+  /* If upstream knows the total time and the total bytes,
+   * use those to compute an average byterate
+   */
+  if (gst_pad_query_duration (GST_PAD_PEER (mpeg_parse->sinkpad),
+          &time_format, &total_time)
+      &&
+      gst_pad_query_duration (GST_PAD_PEER (mpeg_parse->sinkpad),
+          &bytes_format, &total_bytes)
+      && total_time != 0 && total_bytes != 0) {
+    /* Use the funny calculation to avoid overflow of 64 bits */
+    *rate = ((total_bytes * GST_USECOND) / total_time) *
+        (GST_SECOND / GST_USECOND);
+
+    if (*rate > 0) {
+      return TRUE;
+    }
+  }
+
+  *rate = 0;
+
+  if ((mpeg_parse->first_scr != MP_INVALID_SCR) &&
+      (mpeg_parse->last_scr != MP_INVALID_SCR) &&
+      (mpeg_parse->last_scr_pos - mpeg_parse->first_scr_pos > MP_MIN_VALID_BSS)
+      && (mpeg_parse->last_scr != mpeg_parse->first_scr)) {
+    *rate =
+        GST_SECOND * (mpeg_parse->last_scr_pos -
+        mpeg_parse->first_scr_pos) / MPEGTIME_TO_GSTTIME (mpeg_parse->last_scr -
+        mpeg_parse->first_scr);
+  }
+
+  if (*rate == 0 && mpeg_parse->avg_bitrate_time != 0
+      && mpeg_parse->avg_bitrate_bytes > MP_MIN_VALID_BSS) {
+    *rate =
+        GST_SECOND * mpeg_parse->avg_bitrate_bytes /
+        mpeg_parse->avg_bitrate_time;
+  }
+
+  if (*rate != 0) {
+    /*
+     * check if we need to update scr_rate
+     */
+    if ((mpeg_parse->scr_rate == 0) ||
+        ((gst_guint64_to_gdouble (ABS (mpeg_parse->scr_rate -
+                        *rate)) / gst_guint64_to_gdouble (mpeg_parse->scr_rate))
+            >= MP_SCR_RATE_HYST)) {
+      mpeg_parse->scr_rate = *rate;
+      return TRUE;
+    }
+  }
+
+  if (mpeg_parse->scr_rate != 0) {
+    *rate = mpeg_parse->scr_rate;
+    return TRUE;
+  }
+
+  if (mpeg_parse->mux_rate != 0) {
+    *rate = mpeg_parse->mux_rate;
+    return TRUE;
+  }
+
+  return FALSE;
+}
+
+static gboolean
+gst_mpeg_parse_convert (GstMPEGParse * mpeg_parse, GstFormat src_format,
+    gint64 src_value, GstFormat * dest_format, gint64 * dest_value)
+{
+  gboolean res = TRUE;
+  gint64 rate;
+
+  if (src_format == *dest_format) {
+    *dest_value = src_value;
+    return TRUE;
+  }
+
+  switch (src_format) {
+    case GST_FORMAT_BYTES:
+      switch (*dest_format) {
+        case GST_FORMAT_DEFAULT:
+          *dest_format = GST_FORMAT_TIME;
+        case GST_FORMAT_TIME:
+          if (!gst_mpeg_parse_get_rate (mpeg_parse, &rate)) {
+            res = FALSE;
+          } else {
+            *dest_value = GST_SECOND * src_value / rate;
+          }
+          break;
+        default:
+          res = FALSE;
+          break;
+      }
+      break;
+    case GST_FORMAT_TIME:
+      switch (*dest_format) {
+        case GST_FORMAT_DEFAULT:
+          *dest_format = GST_FORMAT_BYTES;
+        case GST_FORMAT_BYTES:
+          if (!gst_mpeg_parse_get_rate (mpeg_parse, &rate)) {
+            res = FALSE;
+          } else {
+            *dest_value = src_value * rate / GST_SECOND;
+          }
+          break;
+        case GST_FORMAT_TIME:
+          break;
+        default:
+          res = FALSE;
+          break;
+      }
+      break;
+    default:
+      res = FALSE;
+      break;
+  }
+
+  return res;
+}
+
+const GstQueryType *
+gst_mpeg_parse_get_src_query_types (GstPad * pad)
+{
+  static const GstQueryType types[] = {
+    GST_QUERY_DURATION,
+    GST_QUERY_POSITION,
+    GST_QUERY_CONVERT,
+    0
+  };
+
+  return types;
+}
+
+gboolean
+gst_mpeg_parse_handle_src_query (GstPad * pad, GstQuery * query)
+{
+  gboolean res = TRUE;
+  GstMPEGParse *mpeg_parse;
+  GstFormat src_format = GST_FORMAT_UNDEFINED, format;
+  gint64 src_value = 0, value = -1;
+
+  mpeg_parse = GST_MPEG_PARSE (gst_pad_get_parent (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_DURATION:{
+      gst_query_parse_duration (query, &format, NULL);
+
+      switch (format) {
+        case GST_FORMAT_DEFAULT:
+          format = GST_FORMAT_TIME;
+          /* fallthrough */
+        case GST_FORMAT_TIME:
+          /* Try asking upstream if it knows the time - a DVD might
+             know */
+          src_format = GST_FORMAT_TIME;
+          if (gst_pad_query_peer_duration (mpeg_parse->sinkpad,
+                  &src_format, &src_value)) {
+            break;
+          }
+          /* Otherwise fallthrough */
+        default:
+          src_format = GST_FORMAT_BYTES;
+          if (!gst_pad_query_peer_duration (mpeg_parse->sinkpad,
+                  &src_format, &src_value)) {
+            res = FALSE;
+            goto done;
+          }
+          break;
+      }
+
+      /* Convert the value to the desired format. */
+      if ((res = gst_mpeg_parse_convert (mpeg_parse, src_format, src_value,
+                  &format, &value)) ||
+          (res = gst_pad_query_peer_duration (mpeg_parse->sinkpad,
+                  &format, &value))) {
+        gst_query_set_duration (query, format, value);
+      }
+      break;
+    }
+    case GST_QUERY_POSITION:{
+      gint64 cur;
+
+      gst_query_parse_position (query, &format, NULL);
+
+      switch (format) {
+        case GST_FORMAT_DEFAULT:
+          format = GST_FORMAT_TIME;
+          /* Fallthrough. */
+        default:
+          src_format = GST_FORMAT_TIME;
+          if ((mpeg_parse->current_scr == MP_INVALID_SCR) ||
+              (mpeg_parse->first_scr == MP_INVALID_SCR)) {
+            res = FALSE;
+            goto done;
+          }
+
+          cur = (gint64) (mpeg_parse->current_scr) - mpeg_parse->first_scr;
+          src_value = MPEGTIME_TO_GSTTIME (MAX (0, cur));
+          break;
+      }
+
+      /* Convert the value to the desired format. */
+      if ((res = gst_mpeg_parse_convert (mpeg_parse, src_format, src_value,
+                  &format, &value)) ||
+          (res = gst_pad_query_peer_position (mpeg_parse->sinkpad,
+                  &format, &value))) {
+        gst_query_set_position (query, format, value);
+      }
+      break;
+    }
+    case GST_QUERY_CONVERT:{
+      gst_query_parse_convert (query, &src_format, &src_value, &format, NULL);
+
+      if ((res = gst_mpeg_parse_convert (mpeg_parse, src_format, src_value,
+                  &format, &value)) ||
+          (res = gst_pad_query_peer_convert (mpeg_parse->sinkpad,
+                  src_format, src_value, &format, &value))) {
+        gst_query_set_convert (query, src_format, src_value, format, value);
+      }
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+
+done:
+  gst_object_unref (mpeg_parse);
+  return res;
+}
+
+#ifdef FIXME
+static gboolean
+index_seek (GstPad * pad, GstEvent * event, gint64 * offset, gint64 * scr)
+{
+  GstIndexEntry *entry;
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (gst_pad_get_parent (pad));
+
+  entry = gst_index_get_assoc_entry (mpeg_parse->index, mpeg_parse->index_id,
+      GST_INDEX_LOOKUP_BEFORE, 0,
+      GST_EVENT_SEEK_FORMAT (event), GST_EVENT_SEEK_OFFSET (event));
+  if (!entry)
+    return FALSE;
+
+  if (gst_index_entry_assoc_map (entry, GST_FORMAT_BYTES, offset)) {
+    gint64 time;
+
+    if (gst_index_entry_assoc_map (entry, GST_FORMAT_TIME, &time)) {
+      *scr = GSTTIME_TO_MPEGTIME (time);
+    }
+    GST_CAT_DEBUG (GST_CAT_SEEK, "%s:%s index %s %" G_GINT64_FORMAT
+        " -> %" G_GINT64_FORMAT " bytes, scr=%" G_GINT64_FORMAT,
+        GST_DEBUG_PAD_NAME (pad),
+        gst_format_get_details (GST_EVENT_SEEK_FORMAT (event))->nick,
+        GST_EVENT_SEEK_OFFSET (event), *offset, *scr);
+    return TRUE;
+  }
+
+  return FALSE;
+}
+#endif
+
+static GstEvent *
+normal_seek (GstMPEGParse * mpeg_parse, GstPad * pad, GstEvent * event)
+{
+  GstEvent *upstream = NULL;
+  gint64 offset;
+  GstFormat format, conv;
+  gint64 cur, stop;
+  gdouble rate;
+  GstSeekType cur_type, stop_type;
+  GstSeekFlags flags;
+  gint64 start_position, end_position;
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &cur_type,
+      &cur, &stop_type, &stop);
+
+  offset = cur;
+  if (offset != -1) {
+    GST_LOG_OBJECT (mpeg_parse, "starting conversion of cur");
+    /* Bring the format to time on srcpad. */
+    conv = GST_FORMAT_TIME;
+    if (!gst_pad_query_convert (pad, format, offset, &conv, &start_position)) {
+      goto done;
+    }
+    /* And convert to bytes on sinkpad. */
+    conv = GST_FORMAT_BYTES;
+    if (!gst_pad_query_convert (mpeg_parse->sinkpad, GST_FORMAT_TIME,
+            start_position, &conv, &start_position)) {
+      goto done;
+    }
+    GST_INFO_OBJECT (mpeg_parse,
+        "Finished conversion of cur, BYTES cur : %" G_GINT64_FORMAT,
+        start_position);
+  } else {
+    start_position = -1;
+  }
+
+  offset = stop;
+  if (offset != -1) {
+    GST_INFO_OBJECT (mpeg_parse, "starting conversion of stop");
+    /* Bring the format to time on srcpad. */
+    conv = GST_FORMAT_TIME;
+    if (!gst_pad_query_convert (pad, format, offset, &conv, &end_position)) {
+      goto done;
+    }
+    /* And convert to bytes on sinkpad. */
+    conv = GST_FORMAT_BYTES;
+    if (!gst_pad_query_convert (mpeg_parse->sinkpad, GST_FORMAT_TIME,
+            end_position, &conv, &end_position)) {
+      goto done;
+    }
+    GST_INFO_OBJECT (mpeg_parse,
+        "Finished conversion of stop, BYTES stop : %" G_GINT64_FORMAT,
+        end_position);
+  } else {
+    end_position = -1;
+  }
+
+  upstream = gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
+      cur_type, start_position, stop_type, end_position);
+
+done:
+  return upstream;
+}
+
+gboolean
+gst_mpeg_parse_handle_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean res = TRUE;
+  GstEvent *upstream = NULL;
+
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (gst_pad_get_parent (pad));
+
+  GST_LOG_OBJECT (mpeg_parse, "got %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+    {
+#ifdef FIXME
+      /* First try to use the index if we have one. */
+      if (mpeg_parse->index) {
+        res = index_seek (pad, event, &desired_offset, &expected_scr);
+      }
+#endif
+
+      if (upstream == NULL) {
+        /* Nothing found, try fuzzy seek. */
+        upstream = normal_seek (mpeg_parse, pad, event);
+      }
+
+      if (!upstream) {
+        gst_event_unref (event);
+        res = FALSE;
+        goto done;
+      }
+
+      res = gst_pad_event_default (pad, upstream);
+      break;
+    }
+    case GST_EVENT_NAVIGATION:
+      /* Forward navigation events unchanged. */
+      res = gst_pad_push_event (mpeg_parse->sinkpad, event);
+      break;
+    default:
+      res = gst_pad_event_default (pad, event);
+      break;
+  }
+
+done:
+  gst_object_unref (mpeg_parse);
+
+  return res;
+}
+
+static GstStateChangeReturn
+gst_mpeg_parse_change_state (GstElement * element, GstStateChange transition)
+{
+  GstMPEGParse *mpeg_parse = GST_MPEG_PARSE (element);
+  GstStateChangeReturn result = GST_STATE_CHANGE_FAILURE;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      if (!mpeg_parse->packetize) {
+        mpeg_parse->packetize =
+            gst_mpeg_packetize_new (GST_MPEG_PACKETIZE_SYSTEM);
+      }
+
+      /* Initialize parser state */
+      gst_mpeg_parse_reset (mpeg_parse);
+      break;
+    default:
+      break;
+  }
+
+  result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      if (mpeg_parse->packetize) {
+        gst_mpeg_packetize_destroy (mpeg_parse->packetize);
+        mpeg_parse->packetize = NULL;
+      }
+      //gst_caps_replace (&mpeg_parse->streaminfo, NULL);
+      break;
+    default:
+      break;
+  }
+
+  return result;
+}
+
+static void
+gst_mpeg_parse_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstMPEGParse *mpeg_parse;
+
+  mpeg_parse = GST_MPEG_PARSE (object);
+
+  switch (prop_id) {
+    case ARG_MAX_SCR_GAP:
+      g_value_set_int (value, mpeg_parse->max_scr_gap);
+      break;
+    case ARG_BYTE_OFFSET:
+      g_value_set_uint64 (value, mpeg_parse->byte_offset);
+      break;
+    case ARG_TIME_OFFSET:
+      g_value_set_uint64 (value, mpeg_parse->current_ts);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_mpeg_parse_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstMPEGParse *mpeg_parse;
+
+  mpeg_parse = GST_MPEG_PARSE (object);
+
+  switch (prop_id) {
+    case ARG_MAX_SCR_GAP:
+      mpeg_parse->max_scr_gap = g_value_get_int (value);
+      break;
+    case ARG_BYTE_OFFSET:
+      mpeg_parse->byte_offset = g_value_get_uint64 (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_mpeg_parse_set_index (GstElement * element, GstIndex * index)
+{
+  GstMPEGParse *mpeg_parse;
+
+  mpeg_parse = GST_MPEG_PARSE (element);
+
+  mpeg_parse->index = index;
+
+  gst_index_get_writer_id (index, GST_OBJECT (mpeg_parse->sinkpad),
+      &mpeg_parse->index_id);
+  gst_index_add_format (index, mpeg_parse->index_id, scr_format);
+}
+
+static GstIndex *
+gst_mpeg_parse_get_index (GstElement * element)
+{
+  GstMPEGParse *mpeg_parse;
+
+  mpeg_parse = GST_MPEG_PARSE (element);
+
+  return mpeg_parse->index;
+}
+
+gboolean
+gst_mpeg_parse_plugin_init (GstPlugin * plugin)
+{
+  scr_format =
+      gst_format_register ("scr", "The MPEG system clock reference time");
+
+  return gst_element_register (plugin, "mpegparse",
+      GST_RANK_NONE, GST_TYPE_MPEG_PARSE);
+}
diff --git a/gst/mpegstream/gstmpegparse.h b/gst/mpegstream/gstmpegparse.h
new file mode 100644 (file)
index 0000000..cfeaa2b
--- /dev/null
@@ -0,0 +1,142 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __MPEG_PARSE_H__
+#define __MPEG_PARSE_H__
+
+#include <gst/gst.h>
+#include "gstmpegpacketize.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_MPEG_PARSE \
+  (gst_mpeg_parse_get_type())
+#define GST_MPEG_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MPEG_PARSE,GstMPEGParse))
+#define GST_MPEG_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_MPEG_PARSE,GstMPEGParseClass))
+#define GST_IS_MPEG_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MPEG_PARSE))
+#define GST_IS_MPEG_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MPEG_PARSE))
+
+#define GST_MPEG_PARSE_IS_MPEG2(parse) (GST_MPEG_PACKETIZE_IS_MPEG2 (GST_MPEG_PARSE (parse)->packetize))
+
+#define CLOCK_BASE G_GINT64_CONSTANT (9)
+#define CLOCK_FREQ CLOCK_BASE * 10000
+
+#define MPEGTIME_TO_GSTTIME(time) (((time) * (GST_MSECOND/10)) / CLOCK_BASE)
+#define GSTTIME_TO_MPEGTIME(time) (((time) * CLOCK_BASE) / (GST_MSECOND/10))
+
+typedef struct _GstMPEGParse GstMPEGParse;
+typedef struct _GstMPEGParseClass GstMPEGParseClass;
+
+struct _GstMPEGParse
+{
+  GstElement element;
+
+  GstPad *sinkpad, *srcpad;
+
+  GstMPEGPacketize *packetize;
+
+  /* Keep track of total rate using SCR and use hysteresis */
+  guint64 first_scr;            /* Earliest SCR value for reference */
+  guint64 first_scr_pos;        /* Byte position of reference SCR */
+  guint64 last_scr;             /* Latest SCR value for reference */
+  guint64 last_scr_pos;         /* Byte position of reference SCR */
+  guint64 scr_rate;             /* Remember the last rate for hysteresis */
+
+  /* Compute a rolling average for SCR interpolation (for MPEG1) */
+  guint64 avg_bitrate_time;     /* Time total for local average bitrate */
+  guint64 avg_bitrate_bytes;    /* Bytes total for local average bitrate */
+
+  /* Pack header values */
+  guint32 mux_rate;             /* Mux rate in bytes/sec derived from Pack 
+                                   header */
+  guint64 current_scr;          /* Current SCR from the stream */
+  guint64 next_scr;             /* Expected next SCR */
+  guint64 bytes_since_scr;      /* Bytes since current_scr */
+
+  GstClockTime current_ts;      /* Current timestamp (i.e., SCR
+                                   adjusted with the value of
+                                   'adjust') */
+
+  /* Timestamp handling. */
+  gboolean do_adjust;           /* If true, adjust SCR values using
+                                   the 'adjust' attribute. */
+  gint64 adjust;                /* Value added to SCR values to
+                                   produce buffer timestamps */
+  gboolean pending_newsegment; /* The element should send a
+                                  newsegment event as soon as it sees
+                                  the next SCR. This option is only
+                                  meaningful in do_adjust mode. */
+  gint max_scr_gap;             /* The maximum allowed SCR gap without
+                                   making a timestamp adjustment */
+  GstSegment current_segment;   /* Segment currently being played. */
+
+  GstIndex *index;
+  gint index_id;
+
+  guint64 byte_offset;
+};
+
+struct _GstMPEGParseClass
+{
+  GstElementClass parent_class;
+
+  /* Process packets of different types */
+  gboolean      (*parse_packhead) (GstMPEGParse * parse, GstBuffer * buffer);
+  gboolean      (*parse_syshead)  (GstMPEGParse * parse, GstBuffer * buffer);
+  GstFlowReturn (*parse_packet)   (GstMPEGParse * parse, GstBuffer * buffer);
+  GstFlowReturn (*parse_pes)      (GstMPEGParse * parse, GstBuffer * buffer);
+
+  /* Optional method to send out the data */
+  GstFlowReturn (*send_buffer)    (GstMPEGParse * parse,
+                                   GstBuffer * buffer, GstClockTime time);
+
+  /* Process an event */
+  gboolean      (*process_event)  (GstMPEGParse * parse,
+                                   GstEvent * event);
+
+  /* Send an event */
+  gboolean      (*send_event)     (GstMPEGParse * parse, GstEvent *event);
+
+  /* Adjust a timestamp */
+  GstClockTime (*adjust_ts)      (GstMPEGParse * parse, GstClockTime ts);
+
+  /* Signals */
+  void          (*reached_offset) (GstMPEGParse *parse,
+                                   GstClockTime timeval);
+};
+
+GType gst_mpeg_parse_get_type (void);
+
+gboolean gst_mpeg_parse_plugin_init (GstPlugin * plugin);
+
+const GstFormat *gst_mpeg_parse_get_src_formats (GstPad * pad);
+
+gboolean gst_mpeg_parse_handle_src_event (GstPad * pad, GstEvent * event);
+
+const GstQueryType *gst_mpeg_parse_get_src_query_types (GstPad * pad);
+gboolean gst_mpeg_parse_handle_src_query (GstPad * pad, GstQuery * query);
+
+G_END_DECLS
+
+#endif                          /* __MPEG_PARSE_H__ */
diff --git a/gst/mpegstream/gstmpegstream.c b/gst/mpegstream/gstmpegstream.c
new file mode 100644 (file)
index 0000000..19a938e
--- /dev/null
@@ -0,0 +1,48 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 "gstmpegparse.h"
+#include "gstmpegdemux.h"
+#include "gstdvddemux.h"
+#include "gstrfc2250enc.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  /* short-circuit here; this is potentially dangerous since if the second
+   * or third init fails then the whole plug-in will be placed on the register
+   * stack again and the first _init will be called more than once
+   * and wtay wants to use dlclose at some point in the future */
+
+  if (!gst_mpeg_parse_plugin_init (plugin) || !gst_mpeg_demux_plugin_init (plugin) || !gst_dvd_demux_plugin_init (plugin)       /*||
+                                                                                                                                   !gst_rfc2250_enc_plugin_init (plugin) */ )
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "mpegstream",
+    "MPEG system stream parser",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/mpegstream/gstrfc2250enc.h b/gst/mpegstream/gstrfc2250enc.h
new file mode 100644 (file)
index 0000000..3b97e2d
--- /dev/null
@@ -0,0 +1,79 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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 __RFC2250_ENC_H__
+#define __RFC2250_ENC_H__
+
+
+#include <gst/gst.h>
+#include "gstmpegpacketize.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RFC2250_ENC \
+  (gst_rfc2250_enc_get_type())
+#define GST_RFC2250_ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RFC2250_ENC,GstRFC2250Enc))
+#define GST_RFC2250_ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RFC2250_ENC,GstRFC2250EncClass))
+#define GST_IS_RFC2250_ENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RFC2250_ENC))
+#define GST_IS_RFC2250_ENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RFC2250_ENC))
+
+#define GST_RFC2250_ENC_IS_MPEG2(parse) (GST_MPEG_PACKETIZE_IS_MPEG2 (GST_RFC2250_ENC (parse)->packetize))
+
+typedef enum {
+  ENC_HAVE_SEQ          = (1 << 0),
+  ENC_HAVE_GOP          = (1 << 1),
+  ENC_HAVE_PIC          = (1 << 2),
+  ENC_HAVE_DATA         = (1 << 3),
+} GstEncFlags;
+  
+typedef struct _GstRFC2250Enc GstRFC2250Enc;
+typedef struct _GstRFC2250EncClass GstRFC2250EncClass;
+
+struct _GstRFC2250Enc {
+  GstElement element;
+
+  GstPad *sinkpad, *srcpad;
+
+  GstMPEGPacketize *packetize;
+
+  /* pack header values */
+  guint32 bit_rate;
+  guint64 next_ts;
+  GstBuffer *packet;
+  GstEncFlags flags;
+  gint MTU;
+  gint remaining;
+};
+
+struct _GstRFC2250EncClass {
+  GstElementClass parent_class;
+};
+
+GType gst_rfc2250_enc_get_type(void);
+
+gboolean gst_rfc2250_enc_plugin_init    (GstPlugin *plugin);
+
+G_END_DECLS
+
+#endif /* __RFC2250_ENC_H__ */
diff --git a/gst/mpegstream/notes b/gst/mpegstream/notes
new file mode 100644 (file)
index 0000000..8c275ff
--- /dev/null
@@ -0,0 +1,40 @@
+Basic parsing method
+====================
+
+In an MPEG-2 Program Stream, every chunk of data starts with at least 23
+zeros and a one.  This is followed by a byte of ID.  At any given point I
+can search for the next 3-byte string equal to 1 to find the next chunk.
+I assume these start codes are aligned on byte boundaries.  I might be
+wrong, in which case this thing has to be rewritten at some point in the
+future.
+
+This means there are two basic modes of operation.  The first is the
+simple search for the next start code.  The second is a continuation mode,
+where data from the previous buffer is available to attempt to complete a
+chunk.  Hopefully the majority of time will be spent in the first mode, as
+that is where the most efficiency is, since there's no copying of partial
+chunks.
+
+The parsing is done as a state machine, as long as there's data left in
+the buffer, something is attempted.  What is attempted is based on the
+state of the parser (gee, so that's why they call it a state machine <g>).
+The stages are:
+
+1) looking for sync (have_sync == FALSE)
+   a) have some zeros (zeros > 0)
+2) getting ID (have_sync == TRUE, id == 0)
+3) decoding the chunk contents (have_sync == TRUE, id != 0)
+
+Mechanism for handling cross-buffer chunks of data
+==================================================
+
+The problem: if data were to come to the parser in 64-byte chunks, the
+pack head would be split across at least two buffers, possibly three.  Up
+front I will make the assumption that no one will be sending buffers of
+less size than the largest chunk (header, PES packet), such that no chunk
+will be split across more than two buffers.
+
+If we take the pack header as an example, when the stream starts out, we
+can assume that the it starts at the beginning of the buffer and doesn't
+exceed the bounds of it.  However, if we're mid-stream and starting
+another pack, it can be split across two buffers.  
diff --git a/gst/realmedia/Makefile.am b/gst/realmedia/Makefile.am
new file mode 100644 (file)
index 0000000..c17d8f1
--- /dev/null
@@ -0,0 +1,39 @@
+plugin_LTLIBRARIES = libgstrmdemux.la
+
+libgstrmdemux_la_SOURCES = rademux.c rmdemux.c  \
+                          rmutils.c rdtdepay.c rdtmanager.c \
+                          rtspreal.c realhash.c asmrules.c \
+                          rdtjitterbuffer.c gstrdtbuffer.c \
+                          pnmsrc.c realmedia.c
+
+
+libgstrmdemux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstrmdemux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+                               -lgstrtsp-@GST_MAJORMINOR@ \
+                               -lgstsdp-@GST_MAJORMINOR@ \
+                               -lgstpbutils-@GST_MAJORMINOR@ \
+                               $(GST_BASE_LIBS) $(GST_LIBS)
+libgstrmdemux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstrmdemux_la_LIBTOOLFLAGS = --tag=disable-static
+
+noinst_HEADERS = rademux.h rmdemux.h rmutils.h rdtdepay.h rdtmanager.h \
+                rdtjitterbuffer.h rtspreal.h realhash.h asmrules.h gstrdtbuffer.h \
+                pnmsrc.h
+
+noinst_PROGRAMS = asmrules
+asmrules_CFLAGS = $(GST_CFLAGS) -DTEST
+asmrules_LDADD = $(GST_LIBS) $(LIBM)
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstrealmedia -:SHARED libgstrealmedia \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstrealmedia_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstrealmedia_la_CFLAGS) \
+        -:LDFLAGS $(libgstrealmedia_la_LDFLAGS) \
+                  $(libgstrealmedia_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/realmedia/Makefile.in b/gst/realmedia/Makefile.in
new file mode 100644 (file)
index 0000000..8104a21
--- /dev/null
@@ -0,0 +1,882 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+noinst_PROGRAMS = asmrules$(EXEEXT)
+subdir = gst/realmedia
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstrmdemux_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstrmdemux_la_OBJECTS = libgstrmdemux_la-rademux.lo \
+       libgstrmdemux_la-rmdemux.lo libgstrmdemux_la-rmutils.lo \
+       libgstrmdemux_la-rdtdepay.lo libgstrmdemux_la-rdtmanager.lo \
+       libgstrmdemux_la-rtspreal.lo libgstrmdemux_la-realhash.lo \
+       libgstrmdemux_la-asmrules.lo \
+       libgstrmdemux_la-rdtjitterbuffer.lo \
+       libgstrmdemux_la-gstrdtbuffer.lo libgstrmdemux_la-pnmsrc.lo \
+       libgstrmdemux_la-realmedia.lo
+libgstrmdemux_la_OBJECTS = $(am_libgstrmdemux_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstrmdemux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) \
+       $(libgstrmdemux_la_LDFLAGS) $(LDFLAGS) -o $@
+PROGRAMS = $(noinst_PROGRAMS)
+asmrules_SOURCES = asmrules.c
+asmrules_OBJECTS = asmrules-asmrules.$(OBJEXT)
+asmrules_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+asmrules_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(asmrules_CFLAGS) \
+       $(CFLAGS) $(AM_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstrmdemux_la_SOURCES) asmrules.c
+DIST_SOURCES = $(libgstrmdemux_la_SOURCES) asmrules.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstrmdemux.la
+libgstrmdemux_la_SOURCES = rademux.c rmdemux.c  \
+                          rmutils.c rdtdepay.c rdtmanager.c \
+                          rtspreal.c realhash.c asmrules.c \
+                          rdtjitterbuffer.c gstrdtbuffer.c \
+                          pnmsrc.c realmedia.c
+
+libgstrmdemux_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstrmdemux_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+                               -lgstrtsp-@GST_MAJORMINOR@ \
+                               -lgstsdp-@GST_MAJORMINOR@ \
+                               -lgstpbutils-@GST_MAJORMINOR@ \
+                               $(GST_BASE_LIBS) $(GST_LIBS)
+
+libgstrmdemux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstrmdemux_la_LIBTOOLFLAGS = --tag=disable-static
+noinst_HEADERS = rademux.h rmdemux.h rmutils.h rdtdepay.h rdtmanager.h \
+                rdtjitterbuffer.h rtspreal.h realhash.h asmrules.h gstrdtbuffer.h \
+                pnmsrc.h
+
+asmrules_CFLAGS = $(GST_CFLAGS) -DTEST
+asmrules_LDADD = $(GST_LIBS) $(LIBM)
+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/realmedia/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/realmedia/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
+libgstrmdemux.la: $(libgstrmdemux_la_OBJECTS) $(libgstrmdemux_la_DEPENDENCIES) $(EXTRA_libgstrmdemux_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstrmdemux_la_LINK) -rpath $(plugindir) $(libgstrmdemux_la_OBJECTS) $(libgstrmdemux_la_LIBADD) $(LIBS)
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+asmrules$(EXEEXT): $(asmrules_OBJECTS) $(asmrules_DEPENDENCIES) $(EXTRA_asmrules_DEPENDENCIES) 
+       @rm -f asmrules$(EXEEXT)
+       $(AM_V_CCLD)$(asmrules_LINK) $(asmrules_OBJECTS) $(asmrules_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asmrules-asmrules.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-asmrules.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-pnmsrc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rademux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtdepay.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rdtmanager.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-realhash.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-realmedia.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rmdemux.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rmutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrmdemux_la-rtspreal.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstrmdemux_la-rademux.lo: rademux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rademux.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rademux.Tpo -c -o libgstrmdemux_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rademux.Tpo $(DEPDIR)/libgstrmdemux_la-rademux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rademux.c' object='libgstrmdemux_la-rademux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rademux.lo `test -f 'rademux.c' || echo '$(srcdir)/'`rademux.c
+
+libgstrmdemux_la-rmdemux.lo: rmdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rmdemux.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rmdemux.Tpo -c -o libgstrmdemux_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rmdemux.Tpo $(DEPDIR)/libgstrmdemux_la-rmdemux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rmdemux.c' object='libgstrmdemux_la-rmdemux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rmdemux.lo `test -f 'rmdemux.c' || echo '$(srcdir)/'`rmdemux.c
+
+libgstrmdemux_la-rmutils.lo: rmutils.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rmutils.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rmutils.Tpo -c -o libgstrmdemux_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rmutils.Tpo $(DEPDIR)/libgstrmdemux_la-rmutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rmutils.c' object='libgstrmdemux_la-rmutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rmutils.lo `test -f 'rmutils.c' || echo '$(srcdir)/'`rmutils.c
+
+libgstrmdemux_la-rdtdepay.lo: rdtdepay.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtdepay.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtdepay.Tpo -c -o libgstrmdemux_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtdepay.Tpo $(DEPDIR)/libgstrmdemux_la-rdtdepay.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rdtdepay.c' object='libgstrmdemux_la-rdtdepay.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtdepay.lo `test -f 'rdtdepay.c' || echo '$(srcdir)/'`rdtdepay.c
+
+libgstrmdemux_la-rdtmanager.lo: rdtmanager.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtmanager.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtmanager.Tpo -c -o libgstrmdemux_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtmanager.Tpo $(DEPDIR)/libgstrmdemux_la-rdtmanager.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rdtmanager.c' object='libgstrmdemux_la-rdtmanager.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtmanager.lo `test -f 'rdtmanager.c' || echo '$(srcdir)/'`rdtmanager.c
+
+libgstrmdemux_la-rtspreal.lo: rtspreal.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rtspreal.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rtspreal.Tpo -c -o libgstrmdemux_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rtspreal.Tpo $(DEPDIR)/libgstrmdemux_la-rtspreal.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rtspreal.c' object='libgstrmdemux_la-rtspreal.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rtspreal.lo `test -f 'rtspreal.c' || echo '$(srcdir)/'`rtspreal.c
+
+libgstrmdemux_la-realhash.lo: realhash.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-realhash.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-realhash.Tpo -c -o libgstrmdemux_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-realhash.Tpo $(DEPDIR)/libgstrmdemux_la-realhash.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='realhash.c' object='libgstrmdemux_la-realhash.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-realhash.lo `test -f 'realhash.c' || echo '$(srcdir)/'`realhash.c
+
+libgstrmdemux_la-asmrules.lo: asmrules.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-asmrules.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-asmrules.Tpo -c -o libgstrmdemux_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-asmrules.Tpo $(DEPDIR)/libgstrmdemux_la-asmrules.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='asmrules.c' object='libgstrmdemux_la-asmrules.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-asmrules.lo `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+
+libgstrmdemux_la-rdtjitterbuffer.lo: rdtjitterbuffer.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-rdtjitterbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Tpo -c -o libgstrmdemux_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Tpo $(DEPDIR)/libgstrmdemux_la-rdtjitterbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='rdtjitterbuffer.c' object='libgstrmdemux_la-rdtjitterbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-rdtjitterbuffer.lo `test -f 'rdtjitterbuffer.c' || echo '$(srcdir)/'`rdtjitterbuffer.c
+
+libgstrmdemux_la-gstrdtbuffer.lo: gstrdtbuffer.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-gstrdtbuffer.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Tpo -c -o libgstrmdemux_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Tpo $(DEPDIR)/libgstrmdemux_la-gstrdtbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstrdtbuffer.c' object='libgstrmdemux_la-gstrdtbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-gstrdtbuffer.lo `test -f 'gstrdtbuffer.c' || echo '$(srcdir)/'`gstrdtbuffer.c
+
+libgstrmdemux_la-pnmsrc.lo: pnmsrc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-pnmsrc.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-pnmsrc.Tpo -c -o libgstrmdemux_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-pnmsrc.Tpo $(DEPDIR)/libgstrmdemux_la-pnmsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pnmsrc.c' object='libgstrmdemux_la-pnmsrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-pnmsrc.lo `test -f 'pnmsrc.c' || echo '$(srcdir)/'`pnmsrc.c
+
+libgstrmdemux_la-realmedia.lo: realmedia.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -MT libgstrmdemux_la-realmedia.lo -MD -MP -MF $(DEPDIR)/libgstrmdemux_la-realmedia.Tpo -c -o libgstrmdemux_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrmdemux_la-realmedia.Tpo $(DEPDIR)/libgstrmdemux_la-realmedia.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='realmedia.c' object='libgstrmdemux_la-realmedia.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrmdemux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrmdemux_la_CFLAGS) $(CFLAGS) -c -o libgstrmdemux_la-realmedia.lo `test -f 'realmedia.c' || echo '$(srcdir)/'`realmedia.c
+
+asmrules-asmrules.o: asmrules.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(asmrules_CFLAGS) $(CFLAGS) -MT asmrules-asmrules.o -MD -MP -MF $(DEPDIR)/asmrules-asmrules.Tpo -c -o asmrules-asmrules.o `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/asmrules-asmrules.Tpo $(DEPDIR)/asmrules-asmrules.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='asmrules.c' object='asmrules-asmrules.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(asmrules_CFLAGS) $(CFLAGS) -c -o asmrules-asmrules.o `test -f 'asmrules.c' || echo '$(srcdir)/'`asmrules.c
+
+asmrules-asmrules.obj: asmrules.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(asmrules_CFLAGS) $(CFLAGS) -MT asmrules-asmrules.obj -MD -MP -MF $(DEPDIR)/asmrules-asmrules.Tpo -c -o asmrules-asmrules.obj `if test -f 'asmrules.c'; then $(CYGPATH_W) 'asmrules.c'; else $(CYGPATH_W) '$(srcdir)/asmrules.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/asmrules-asmrules.Tpo $(DEPDIR)/asmrules-asmrules.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='asmrules.c' object='asmrules-asmrules.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(asmrules_CFLAGS) $(CFLAGS) -c -o asmrules-asmrules.obj `if test -f 'asmrules.c'; then $(CYGPATH_W) 'asmrules.c'; else $(CYGPATH_W) '$(srcdir)/asmrules.c'; fi`
+
+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) $(PROGRAMS) $(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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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-noinstPROGRAMS \
+       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-noinstPROGRAMS 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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstrealmedia -:SHARED libgstrealmedia \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstrealmedia_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstrealmedia_la_CFLAGS) \
+        -:LDFLAGS $(libgstrealmedia_la_LDFLAGS) \
+                  $(libgstrealmedia_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/realmedia/asmrules.c b/gst/realmedia/asmrules.c
new file mode 100644 (file)
index 0000000..e0ca5b6
--- /dev/null
@@ -0,0 +1,711 @@
+/* GStreamer
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+
+#include "asmrules.h"
+
+#define MAX_RULE_LENGTH        2048
+
+/* define to enable some more debug */
+#undef DEBUG
+
+static GstASMNode *
+gst_asm_node_new (void)
+{
+  GstASMNode *node;
+
+  node = g_new0 (GstASMNode, 1);
+  node->type = GST_ASM_NODE_UNKNOWN;
+
+  return node;
+}
+
+static void
+gst_asm_node_free (GstASMNode * node)
+{
+  if (node->left)
+    gst_asm_node_free (node->left);
+  if (node->right)
+    gst_asm_node_free (node->right);
+  if (node->type == GST_ASM_NODE_VARIABLE && node->data.varname)
+    g_free (node->data.varname);
+  g_free (node);
+}
+
+static gfloat
+gst_asm_operator_eval (GstASMOp optype, gfloat left, gfloat right)
+{
+  gfloat result = 0.0;
+
+  switch (optype) {
+    case GST_ASM_OP_GREATER:
+      result = (gfloat) (left > right);
+      break;
+    case GST_ASM_OP_LESS:
+      result = (gfloat) (left < right);
+      break;
+    case GST_ASM_OP_GREATEREQUAL:
+      result = (gfloat) (left >= right);
+      break;
+    case GST_ASM_OP_LESSEQUAL:
+      result = (gfloat) (left <= right);
+      break;
+    case GST_ASM_OP_EQUAL:
+      result = (gfloat) (left == right);
+      break;
+    case GST_ASM_OP_NOTEQUAL:
+      result = (gfloat) (left != right);
+      break;
+    case GST_ASM_OP_AND:
+      result = (gfloat) (left && right);
+      break;
+    case GST_ASM_OP_OR:
+      result = (gfloat) (left || right);
+      break;
+    default:
+      break;
+  }
+  return result;
+}
+
+static gfloat
+gst_asm_node_evaluate (GstASMNode * node, GHashTable * vars)
+{
+  gfloat result = 0.0;
+
+  if (node == NULL)
+    return 0.0;
+
+  switch (node->type) {
+    case GST_ASM_NODE_VARIABLE:
+    {
+      gchar *val;
+
+      val = g_hash_table_lookup (vars, node->data.varname);
+      if (val)
+        result = (gfloat) atof (val);
+      break;
+    }
+    case GST_ASM_NODE_INTEGER:
+      result = (gfloat) node->data.intval;
+      break;
+    case GST_ASM_NODE_FLOAT:
+      result = node->data.floatval;
+      break;
+    case GST_ASM_NODE_OPERATOR:
+    {
+      gfloat left, right;
+
+      left = gst_asm_node_evaluate (node->left, vars);
+      right = gst_asm_node_evaluate (node->right, vars);
+
+      result = gst_asm_operator_eval (node->data.optype, left, right);
+      break;
+    }
+    default:
+      break;
+  }
+  return result;
+}
+
+#define IS_SPACE(p) (((p) == ' ') || ((p) == '\n') || \
+                     ((p) == '\r') || ((p) == '\t'))
+#define IS_RULE_DELIM(p) (((p) == ',') || ((p) == ';') || ((p) == ')'))
+#define IS_OPERATOR(p) (((p) == '>') || ((p) == '<') || \
+                        ((p) == '=') || ((p) == '!') || \
+                        ((p) == '&') || ((p) == '|'))
+#define IS_NUMBER(p) ((((p) >= '0') && ((p) <= '9')) || ((p) == '.'))
+#define IS_CHAR(p) (!IS_OPERATOR(ch) && !IS_RULE_DELIM(ch) && (ch != '\0'))
+
+#define IS_OP_TOKEN(t) (((t) == GST_ASM_TOKEN_AND) || ((t) == GST_ASM_TOKEN_OR))
+#define IS_COND_TOKEN(t) (((t) == GST_ASM_TOKEN_LESS) || ((t) == GST_ASM_TOKEN_LESSEQUAL) || \
+               ((t) == GST_ASM_TOKEN_GREATER) || ((t) == GST_ASM_TOKEN_GREATEREQUAL) || \
+               ((t) == GST_ASM_TOKEN_EQUAL) || ((t) == GST_ASM_TOKEN_NOTEQUAL))
+
+typedef struct
+{
+  const gchar *buffer;
+  gint pos;
+  gchar ch;
+
+  GstASMToken token;
+  gchar val[MAX_RULE_LENGTH];
+} GstASMScan;
+
+#define NEXT_CHAR(scan) ((scan)->ch = (scan)->buffer[(scan)->pos++])
+#define THIS_CHAR(scan) ((scan)->ch)
+
+static GstASMScan *
+gst_asm_scan_new (const gchar * buffer)
+{
+  GstASMScan *scan;
+
+  scan = g_new0 (GstASMScan, 1);
+  scan->buffer = buffer;
+  NEXT_CHAR (scan);
+
+  return scan;
+}
+
+static void
+gst_asm_scan_free (GstASMScan * scan)
+{
+  g_free (scan);
+}
+
+static void
+gst_asm_scan_string (GstASMScan * scan, gchar delim)
+{
+  gchar ch;
+  gint i = 0;
+
+  ch = THIS_CHAR (scan);
+  while ((ch != delim) && (ch != '\0')) {
+    if (i < MAX_RULE_LENGTH - 1)
+      scan->val[i++] = ch;
+    ch = NEXT_CHAR (scan);
+    if (ch == '\\')
+      ch = NEXT_CHAR (scan);
+  }
+  scan->val[i] = '\0';
+
+  if (ch == delim)
+    NEXT_CHAR (scan);
+
+  scan->token = GST_ASM_TOKEN_STRING;
+}
+
+static void
+gst_asm_scan_number (GstASMScan * scan)
+{
+  gchar ch;
+  gint i = 0;
+  gboolean have_float = FALSE;
+
+  ch = THIS_CHAR (scan);
+  /* real strips all spaces that are not inside quotes for numbers */
+  while ((IS_NUMBER (ch) || IS_SPACE (ch))) {
+    if (i < (MAX_RULE_LENGTH - 1) && !IS_SPACE (ch))
+      scan->val[i++] = ch;
+    if (ch == '.')
+      have_float = TRUE;
+    ch = NEXT_CHAR (scan);
+  }
+  scan->val[i] = '\0';
+
+  if (have_float)
+    scan->token = GST_ASM_TOKEN_FLOAT;
+  else
+    scan->token = GST_ASM_TOKEN_INT;
+}
+
+static void
+gst_asm_scan_identifier (GstASMScan * scan)
+{
+  gchar ch;
+  gint i = 0;
+
+  ch = THIS_CHAR (scan);
+  /* real strips all spaces that are not inside quotes for identifiers */
+  while ((IS_CHAR (ch) || IS_SPACE (ch))) {
+    if (i < (MAX_RULE_LENGTH - 1) && !IS_SPACE (ch))
+      scan->val[i++] = ch;
+    ch = NEXT_CHAR (scan);
+  }
+  scan->val[i] = '\0';
+
+  scan->token = GST_ASM_TOKEN_IDENTIFIER;
+}
+
+static void
+gst_asm_scan_print_token (GstASMScan * scan)
+{
+#ifdef DEBUG
+  switch (scan->token) {
+    case GST_ASM_TOKEN_NONE:
+      g_print ("none\n");
+      break;
+    case GST_ASM_TOKEN_EOF:
+      g_print ("EOF\n");
+      break;
+
+    case GST_ASM_TOKEN_INT:
+      g_print ("INT %d\n", atoi (scan->val));
+      break;
+    case GST_ASM_TOKEN_FLOAT:
+      g_print ("FLOAT %f\n", atof (scan->val));
+      break;
+    case GST_ASM_TOKEN_IDENTIFIER:
+      g_print ("ID %s\n", scan->val);
+      break;
+    case GST_ASM_TOKEN_STRING:
+      g_print ("STRING %s\n", scan->val);
+      break;
+
+    case GST_ASM_TOKEN_HASH:
+      g_print ("HASH\n");
+      break;
+    case GST_ASM_TOKEN_SEMICOLON:
+      g_print ("SEMICOLON\n");
+      break;
+    case GST_ASM_TOKEN_COMMA:
+      g_print ("COMMA\n");
+      break;
+    case GST_ASM_TOKEN_EQUAL:
+      g_print ("==\n");
+      break;
+    case GST_ASM_TOKEN_NOTEQUAL:
+      g_print ("!=\n");
+      break;
+    case GST_ASM_TOKEN_AND:
+      g_print ("&&\n");
+      break;
+    case GST_ASM_TOKEN_OR:
+      g_print ("||\n");
+      break;
+    case GST_ASM_TOKEN_LESS:
+      g_print ("<\n");
+      break;
+    case GST_ASM_TOKEN_LESSEQUAL:
+      g_print ("<=\n");
+      break;
+    case GST_ASM_TOKEN_GREATER:
+      g_print (">\n");
+      break;
+    case GST_ASM_TOKEN_GREATEREQUAL:
+      g_print (">=\n");
+      break;
+    case GST_ASM_TOKEN_DOLLAR:
+      g_print ("$\n");
+      break;
+    case GST_ASM_TOKEN_LPAREN:
+      g_print ("(\n");
+      break;
+    case GST_ASM_TOKEN_RPAREN:
+      g_print (")\n");
+      break;
+    default:
+      break;
+  }
+#endif
+}
+
+static GstASMToken
+gst_asm_scan_next_token (GstASMScan * scan)
+{
+  gchar ch;
+
+  ch = THIS_CHAR (scan);
+
+  /* skip spaces */
+  while (IS_SPACE (ch))
+    ch = NEXT_CHAR (scan);
+
+  /* remove \ which is common in front of " */
+  while (ch == '\\')
+    ch = NEXT_CHAR (scan);
+
+  switch (ch) {
+    case '#':
+      scan->token = GST_ASM_TOKEN_HASH;
+      NEXT_CHAR (scan);
+      break;
+    case ';':
+      scan->token = GST_ASM_TOKEN_SEMICOLON;
+      NEXT_CHAR (scan);
+      break;
+    case ',':
+      scan->token = GST_ASM_TOKEN_COMMA;
+      NEXT_CHAR (scan);
+      break;
+    case '=':
+      scan->token = GST_ASM_TOKEN_EQUAL;
+      if (NEXT_CHAR (scan) == '=')
+        NEXT_CHAR (scan);
+      break;
+    case '!':
+      if (NEXT_CHAR (scan) == '=') {
+        scan->token = GST_ASM_TOKEN_NOTEQUAL;
+        NEXT_CHAR (scan);
+      }
+      break;
+    case '&':
+      scan->token = GST_ASM_TOKEN_AND;
+      if (NEXT_CHAR (scan) == '&')
+        NEXT_CHAR (scan);
+      break;
+    case '|':
+      scan->token = GST_ASM_TOKEN_OR;
+      if (NEXT_CHAR (scan) == '|')
+        NEXT_CHAR (scan);
+      break;
+    case '<':
+      scan->token = GST_ASM_TOKEN_LESS;
+      if (NEXT_CHAR (scan) == '=') {
+        scan->token = GST_ASM_TOKEN_LESSEQUAL;
+        NEXT_CHAR (scan);
+      }
+      break;
+    case '>':
+      scan->token = GST_ASM_TOKEN_GREATER;
+      if (NEXT_CHAR (scan) == '=') {
+        scan->token = GST_ASM_TOKEN_GREATEREQUAL;
+        NEXT_CHAR (scan);
+      }
+      break;
+    case '$':
+      scan->token = GST_ASM_TOKEN_DOLLAR;
+      NEXT_CHAR (scan);
+      break;
+    case '(':
+      scan->token = GST_ASM_TOKEN_LPAREN;
+      NEXT_CHAR (scan);
+      break;
+    case ')':
+      scan->token = GST_ASM_TOKEN_RPAREN;
+      NEXT_CHAR (scan);
+      break;
+    case '"':
+      NEXT_CHAR (scan);
+      gst_asm_scan_string (scan, '"');
+      break;
+    case '\'':
+      NEXT_CHAR (scan);
+      gst_asm_scan_string (scan, '\'');
+      break;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':
+      gst_asm_scan_number (scan);
+      break;
+    case '\0':
+      scan->token = GST_ASM_TOKEN_EOF;
+      break;
+    default:
+      gst_asm_scan_identifier (scan);
+      break;
+  }
+  gst_asm_scan_print_token (scan);
+  return scan->token;
+}
+
+static GstASMRule *
+gst_asm_rule_new (void)
+{
+  GstASMRule *rule;
+
+  rule = g_new (GstASMRule, 1);
+  rule->root = NULL;
+  rule->props = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+  return rule;
+}
+
+static void
+gst_asm_rule_free (GstASMRule * rule)
+{
+  g_hash_table_destroy (rule->props);
+  if (rule->root)
+    gst_asm_node_free (rule->root);
+  g_free (rule);
+}
+
+static void
+gst_asm_rule_add_property (GstASMRule * rule, gchar * key, gchar * val)
+{
+  g_hash_table_insert (rule->props, key, val);
+}
+
+static GstASMNode *gst_asm_scan_parse_condition (GstASMScan * scan);
+
+static GstASMNode *
+gst_asm_scan_parse_operand (GstASMScan * scan)
+{
+  GstASMNode *node;
+
+  switch (scan->token) {
+    case GST_ASM_TOKEN_DOLLAR:
+      gst_asm_scan_next_token (scan);
+
+      if (scan->token != GST_ASM_TOKEN_IDENTIFIER)
+        g_warning ("identifier expected");
+
+      node = gst_asm_node_new ();
+      node->type = GST_ASM_NODE_VARIABLE;
+      node->data.varname = g_strdup (scan->val);
+      break;
+    case GST_ASM_TOKEN_INT:
+      node = gst_asm_node_new ();
+      node->type = GST_ASM_NODE_INTEGER;
+      node->data.intval = (gfloat) atof (scan->val);
+      break;
+    case GST_ASM_TOKEN_FLOAT:
+      node = gst_asm_node_new ();
+      node->type = GST_ASM_NODE_FLOAT;
+      node->data.floatval = atoi (scan->val);
+      break;
+    case GST_ASM_TOKEN_LPAREN:
+      gst_asm_scan_next_token (scan);
+      node = gst_asm_scan_parse_condition (scan);
+      if (scan->token != GST_ASM_TOKEN_RPAREN)
+        g_warning (") expected");
+      break;
+    default:
+      g_warning ("$ <number> or ) expected");
+      node = NULL;
+      break;
+  }
+  gst_asm_scan_next_token (scan);
+
+  return node;
+}
+
+static GstASMNode *
+gst_asm_scan_parse_expression (GstASMScan * scan)
+{
+  GstASMNode *node, *left;
+
+  node = gst_asm_scan_parse_operand (scan);
+
+  while (IS_COND_TOKEN (scan->token)) {
+    left = node;
+
+    node = gst_asm_node_new ();
+    node->type = GST_ASM_NODE_OPERATOR;
+    node->data.optype = (GstASMOp) scan->token;
+
+    gst_asm_scan_next_token (scan);
+
+    node->right = gst_asm_scan_parse_operand (scan);
+    node->left = left;
+  }
+  return node;
+}
+
+static GstASMNode *
+gst_asm_scan_parse_condition (GstASMScan * scan)
+{
+  GstASMNode *node, *left;
+
+  node = gst_asm_scan_parse_expression (scan);
+
+  while (IS_OP_TOKEN (scan->token)) {
+    left = node;
+
+    node = gst_asm_node_new ();
+    node->type = GST_ASM_NODE_OPERATOR;
+    node->data.optype = (GstASMOp) scan->token;
+
+    gst_asm_scan_next_token (scan);
+
+    node->right = gst_asm_scan_parse_expression (scan);
+    node->left = left;
+  }
+  return node;
+}
+
+static void
+gst_asm_scan_parse_property (GstASMRule * rule, GstASMScan * scan)
+{
+  gchar *key, *val;
+
+  if (scan->token != GST_ASM_TOKEN_IDENTIFIER) {
+    g_warning ("identifier expected");
+    return;
+  }
+  key = g_strdup (scan->val);
+
+  gst_asm_scan_next_token (scan);
+  if (scan->token != GST_ASM_TOKEN_EQUAL) {
+    g_warning ("= expected");
+    return;
+  }
+  gst_asm_scan_next_token (scan);
+  val = g_strdup (scan->val);
+
+  gst_asm_rule_add_property (rule, key, val);
+  gst_asm_scan_next_token (scan);
+}
+
+static GstASMRule *
+gst_asm_scan_parse_rule (GstASMScan * scan)
+{
+  GstASMRule *rule;
+
+  rule = gst_asm_rule_new ();
+
+  if (scan->token == GST_ASM_TOKEN_HASH) {
+    gst_asm_scan_next_token (scan);
+    rule->root = gst_asm_scan_parse_condition (scan);
+    if (scan->token == GST_ASM_TOKEN_COMMA)
+      gst_asm_scan_next_token (scan);
+  }
+
+  if (scan->token != GST_ASM_TOKEN_SEMICOLON) {
+    gst_asm_scan_parse_property (rule, scan);
+    while (scan->token == GST_ASM_TOKEN_COMMA) {
+      gst_asm_scan_next_token (scan);
+      gst_asm_scan_parse_property (rule, scan);
+    }
+    gst_asm_scan_next_token (scan);
+  }
+  return rule;
+}
+
+static gboolean
+gst_asm_rule_evaluate (GstASMRule * rule, GHashTable * vars)
+{
+  gboolean res;
+
+  if (rule->root) {
+    res = (gboolean) gst_asm_node_evaluate (rule->root, vars);
+  } else
+    res = TRUE;
+
+  return res;
+}
+
+GstASMRuleBook *
+gst_asm_rule_book_new (const gchar * rulebook)
+{
+  GstASMRuleBook *book;
+  GstASMRule *rule = NULL;
+  GstASMScan *scan;
+  GstASMToken token;
+
+  book = g_new0 (GstASMRuleBook, 1);
+  book->rulebook = rulebook;
+
+  scan = gst_asm_scan_new (book->rulebook);
+  gst_asm_scan_next_token (scan);
+
+  do {
+    rule = gst_asm_scan_parse_rule (scan);
+    if (rule) {
+      book->rules = g_list_append (book->rules, rule);
+      book->n_rules++;
+    }
+    token = scan->token;
+  } while (token != GST_ASM_TOKEN_EOF);
+
+  gst_asm_scan_free (scan);
+
+  return book;
+}
+
+void
+gst_asm_rule_book_free (GstASMRuleBook * book)
+{
+  GList *walk;
+
+  for (walk = book->rules; walk; walk = g_list_next (walk)) {
+    GstASMRule *rule = (GstASMRule *) walk->data;
+
+    gst_asm_rule_free (rule);
+  }
+  g_list_free (book->rules);
+  g_free (book);
+}
+
+gint
+gst_asm_rule_book_match (GstASMRuleBook * book, GHashTable * vars,
+    gint * rulematches)
+{
+  GList *walk;
+  gint i, n = 0;
+
+  for (walk = book->rules, i = 0; walk; walk = g_list_next (walk), i++) {
+    GstASMRule *rule = (GstASMRule *) walk->data;
+
+    if (gst_asm_rule_evaluate (rule, vars)) {
+      rulematches[n++] = i;
+    }
+  }
+  return n;
+}
+
+#ifdef TEST
+gint
+main (gint argc, gchar * argv[])
+{
+  GstASMRuleBook *book;
+  gint rulematch[MAX_RULEMATCHES];
+  GHashTable *vars;
+  gint i, n;
+
+  static const gchar rules1[] =
+      "#($Bandwidth < 67959),TimestampDelivery=T,DropByN=T,"
+      "priority=9;#($Bandwidth >= 67959) && ($Bandwidth < 167959),"
+      "AverageBandwidth=67959,Priority=9;#($Bandwidth >= 67959) && ($Bandwidth"
+      " < 167959),AverageBandwidth=0,Priority=5,OnDepend=\\\"1\\\";#($Bandwidth >= 167959)"
+      " && ($Bandwidth < 267959),AverageBandwidth=167959,Priority=9;#($Bandwidth >= 167959)"
+      " && ($Bandwidth < 267959),AverageBandwidth=0,Priority=5,OnDepend=\\\"3\\\";"
+      "#($Bandwidth >= 267959),AverageBandwidth=267959,Priority=9;#($Bandwidth >= 267959)"
+      ",AverageBandwidth=0,Priority=5,OnDepend=\\\"5\\\";";
+  static const gchar rules2[] =
+      "AverageBandwidth=32041,Priority=5;AverageBandwidth=0,"
+      "Priority=5,OnDepend=\\\"0\\\", OffDepend=\\\"0\\\";";
+  static const gchar rules3[] =
+      "#(($Bandwidth >= 27500) && ($OldPNMPlayer)),AverageBandwidth=27500,priority=9,PNMKeyframeRule=T;#(($Bandwidth >= 27500) && ($OldPNMPlayer)),AverageBandwidth=0,priority=5,PNMNonKeyframeRule=T;#(($Bandwidth < 27500) && ($OldPNMPlayer)),TimestampDelivery=T,DropByN=T,priority=9,PNMThinningRule=T;#($Bandwidth < 13899),TimestampDelivery=T,DropByN=T,priority=9;#($Bandwidth >= 13899) && ($Bandwidth < 19000),AverageBandwidth=13899,Priority=9;#($Bandwidth >= 13899) && ($Bandwidth < 19000),AverageBandwidth=0,Priority=5,OnDepend=\\\"4\\\";#($Bandwidth >= 19000) && ($Bandwidth < 27500),AverageBandwidth=19000,Priority=9;#($Bandwidth >= 19000) && ($Bandwidth < 27500),AverageBandwidth=0,Priority=5,OnDepend=\\\"6\\\";#($Bandwidth >= 27500) && ($Bandwidth < 132958),AverageBandwidth=27500,Priority=9;#($Bandwidth >= 27500) && ($Bandwidth < 132958),AverageBandwidth=0,Priority=5,OnDepend=\\\"8\\\";#($Bandwidth >= 132958) && ($Bandwidth < 187958),AverageBandwidth=132958,Priority=9;#($Bandwidth >= 132958) && ($Bandwidth < 187958),AverageBandwidth=0,Priority=5,OnDepend=\\\"10\\\";#($Bandwidth >= 187958),AverageBandwidth=187958,Priority=9;#($Bandwidth >= 187958),AverageBandwidth=0,Priority=5,OnDepend=\\\"12\\\";";
+
+  vars = g_hash_table_new (g_str_hash, g_str_equal);
+  g_hash_table_insert (vars, (gchar *) "Bandwidth", (gchar *) "300000");
+
+  book = gst_asm_rule_book_new (rules1);
+  n = gst_asm_rule_book_match (book, vars, rulematch);
+  gst_asm_rule_book_free (book);
+
+  g_print ("%d rules matched\n", n);
+  for (i = 0; i < n; i++) {
+    g_print ("rule %d matched\n", rulematch[i]);
+  }
+
+  book = gst_asm_rule_book_new (rules2);
+  n = gst_asm_rule_book_match (book, vars, rulematch);
+  gst_asm_rule_book_free (book);
+
+  g_print ("%d rules matched\n", n);
+  for (i = 0; i < n; i++) {
+    g_print ("rule %d matched\n", rulematch[i]);
+  }
+
+  book = gst_asm_rule_book_new (rules3);
+  n = gst_asm_rule_book_match (book, vars, rulematch);
+  gst_asm_rule_book_free (book);
+
+
+  g_print ("%d rules matched\n", n);
+  for (i = 0; i < n; i++) {
+    g_print ("rule %d matched\n", rulematch[i]);
+  }
+
+  g_hash_table_destroy (vars);
+
+  return 0;
+}
+#endif
diff --git a/gst/realmedia/asmrules.h b/gst/realmedia/asmrules.h
new file mode 100644 (file)
index 0000000..fc9e8a0
--- /dev/null
@@ -0,0 +1,115 @@
+/* GStreamer
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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_ASM_RULES_H__
+#define __GST_ASM_RULES_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define MAX_RULEMATCHES 16
+
+typedef struct _GstASMNode GstASMNode;
+typedef struct _GstASMRule GstASMRule;
+typedef struct _GstASMRuleBook GstASMRuleBook;
+
+typedef enum {
+  GST_ASM_TOKEN_NONE,
+  GST_ASM_TOKEN_EOF,
+
+  GST_ASM_TOKEN_INT,
+  GST_ASM_TOKEN_FLOAT,
+  GST_ASM_TOKEN_IDENTIFIER,
+  GST_ASM_TOKEN_STRING,
+  
+  GST_ASM_TOKEN_HASH,
+  GST_ASM_TOKEN_SEMICOLON,
+  GST_ASM_TOKEN_COMMA,
+  GST_ASM_TOKEN_DOLLAR,
+
+  GST_ASM_TOKEN_LPAREN,
+  GST_ASM_TOKEN_RPAREN,
+
+  GST_ASM_TOKEN_GREATER,
+  GST_ASM_TOKEN_LESS,
+  GST_ASM_TOKEN_GREATEREQUAL,
+  GST_ASM_TOKEN_LESSEQUAL,
+  GST_ASM_TOKEN_EQUAL,
+  GST_ASM_TOKEN_NOTEQUAL,
+
+  GST_ASM_TOKEN_AND,
+  GST_ASM_TOKEN_OR
+} GstASMToken;
+
+typedef enum {
+  GST_ASM_NODE_UNKNOWN,
+  GST_ASM_NODE_VARIABLE,
+  GST_ASM_NODE_INTEGER,
+  GST_ASM_NODE_FLOAT,
+  GST_ASM_NODE_OPERATOR
+} GstASMNodeType;
+
+typedef enum {
+  GST_ASM_OP_GREATER      = GST_ASM_TOKEN_GREATER,
+  GST_ASM_OP_LESS         = GST_ASM_TOKEN_LESS,
+  GST_ASM_OP_GREATEREQUAL = GST_ASM_TOKEN_GREATEREQUAL,
+  GST_ASM_OP_LESSEQUAL    = GST_ASM_TOKEN_LESSEQUAL,
+  GST_ASM_OP_EQUAL        = GST_ASM_TOKEN_EQUAL,
+  GST_ASM_OP_NOTEQUAL     = GST_ASM_TOKEN_NOTEQUAL,
+
+  GST_ASM_OP_AND          = GST_ASM_TOKEN_AND,
+  GST_ASM_OP_OR           = GST_ASM_TOKEN_OR
+} GstASMOp;
+
+struct _GstASMNode {
+  GstASMNodeType  type;
+
+  union {
+    gchar   *varname;
+    gint     intval;
+    gfloat   floatval;
+    GstASMOp optype;
+  } data;
+
+  GstASMNode     *left;
+  GstASMNode     *right;
+};
+
+struct _GstASMRule {
+  GstASMNode *root;
+  GHashTable *props;
+};
+
+struct _GstASMRuleBook {
+  const gchar *rulebook;
+
+  guint        n_rules;
+  GList       *rules;
+};
+
+G_END_DECLS
+
+GstASMRuleBook*   gst_asm_rule_book_new     (const gchar *rulebook);
+void              gst_asm_rule_book_free    (GstASMRuleBook *book);
+
+gint              gst_asm_rule_book_match   (GstASMRuleBook *book, GHashTable *vars, 
+                                            gint *rulematches);
+
+#endif /* __GST_ASM_RULES_H__ */
diff --git a/gst/realmedia/gstrdtbuffer.c b/gst/realmedia/gstrdtbuffer.c
new file mode 100644 (file)
index 0000000..b383ef2
--- /dev/null
@@ -0,0 +1,438 @@
+/* GStreamer
+ * Copyright (C) <2008> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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.
+ */
+
+#include "gstrdtbuffer.h"
+
+gboolean
+gst_rdt_buffer_validate_data (guint8 * data, guint len)
+{
+  return TRUE;
+}
+
+gboolean
+gst_rdt_buffer_validate (GstBuffer * buffer)
+{
+  return TRUE;
+}
+
+guint
+gst_rdt_buffer_get_packet_count (GstBuffer * buffer)
+{
+  GstRDTPacket packet;
+  guint count;
+
+  g_return_val_if_fail (GST_IS_BUFFER (buffer), 0);
+
+  count = 0;
+  if (gst_rdt_buffer_get_first_packet (buffer, &packet)) {
+    do {
+      count++;
+    } while (gst_rdt_packet_move_to_next (&packet));
+  }
+  return count;
+}
+
+static gboolean
+read_packet_header (GstRDTPacket * packet)
+{
+  guint8 *data;
+  guint size;
+  guint offset;
+  guint length;
+  guint length_offset;
+
+  g_return_val_if_fail (packet != NULL, FALSE);
+  g_return_val_if_fail (GST_IS_BUFFER (packet->buffer), FALSE);
+
+  data = GST_BUFFER_DATA (packet->buffer);
+  size = GST_BUFFER_SIZE (packet->buffer);
+
+  offset = packet->offset;
+
+  /* check if we are at the end of the buffer, we add 3 because we also want to
+   * ensure we can read the type, which is always at offset 1 and 2 bytes long. */
+  if (offset + 3 > size)
+    return FALSE;
+
+  /* read type */
+  packet->type = GST_READ_UINT16_BE (&data[offset + 1]);
+
+  length = -1;
+  length_offset = -1;
+
+  /* figure out the length of the packet, this depends on the type */
+  if (GST_RDT_IS_DATA_TYPE (packet->type)) {
+    if (data[offset] & 0x80)
+      /* length is present */
+      length_offset = 3;
+  } else {
+    switch (packet->type) {
+      case GST_RDT_TYPE_ASMACTION:
+        if (data[offset] & 0x80)
+          length_offset = 5;
+        break;
+      case GST_RDT_TYPE_BWREPORT:
+        if (data[offset] & 0x80)
+          length_offset = 3;
+        break;
+      case GST_RDT_TYPE_ACK:
+        if (data[offset] & 0x80)
+          length_offset = 3;
+        break;
+      case GST_RDT_TYPE_RTTREQ:
+        length = 3;
+        break;
+      case GST_RDT_TYPE_RTTRESP:
+        length = 11;
+        break;
+      case GST_RDT_TYPE_CONGESTION:
+        length = 11;
+        break;
+      case GST_RDT_TYPE_STREAMEND:
+        length = 9;
+        /* total_reliable */
+        if (data[offset] & 0x80)
+          length += 2;
+        /* stream_id_expansion */
+        if ((data[offset] & 0x7c) == 0x7c)
+          length += 2;
+        /* ext_flag, FIXME, get string length */
+        if ((data[offset] & 0x1) == 0x1)
+          length += 7;
+        break;
+      case GST_RDT_TYPE_REPORT:
+        if (data[offset] & 0x80)
+          length_offset = 3;
+        break;
+      case GST_RDT_TYPE_LATENCY:
+        if (data[offset] & 0x80)
+          length_offset = 3;
+        break;
+      case GST_RDT_TYPE_INFOREQ:
+        length = 3;
+        /* request_time_ms */
+        if (data[offset] & 0x2)
+          length += 2;
+        break;
+      case GST_RDT_TYPE_INFORESP:
+        length = 3;
+        /* has_rtt_info */
+        if (data[offset] & 0x4) {
+          length += 4;
+          /* is_delayed */
+          if (data[offset] & 0x2) {
+            length += 4;
+          }
+        }
+        if (data[offset] & 0x1) {
+          /* buffer_info_count, FIXME read and skip */
+          length += 2;
+        }
+        break;
+      case GST_RDT_TYPE_AUTOBW:
+        if (data[offset] & 0x80)
+          length_offset = 3;
+        break;
+      case GST_RDT_TYPE_INVALID:
+      default:
+        goto unknown_packet;
+    }
+  }
+
+  if (length != -1) {
+    /* we have a fixed length */
+    packet->length = length;
+  } else if (length_offset != -1) {
+    /* we can read the length from an offset */
+    packet->length = GST_READ_UINT16_BE (&data[length_offset]);
+  } else {
+    /* length is remainder of packet */
+    packet->length = size - offset;
+  }
+
+  /* the length should be smaller than the remaining size */
+  if (packet->length + offset > size)
+    goto invalid_length;
+
+  return TRUE;
+
+  /* ERRORS */
+unknown_packet:
+  {
+    packet->type = GST_RDT_TYPE_INVALID;
+    return FALSE;
+  }
+invalid_length:
+  {
+    packet->type = GST_RDT_TYPE_INVALID;
+    packet->length = 0;
+    return FALSE;
+  }
+}
+
+gboolean
+gst_rdt_buffer_get_first_packet (GstBuffer * buffer, GstRDTPacket * packet)
+{
+  g_return_val_if_fail (GST_IS_BUFFER (buffer), FALSE);
+  g_return_val_if_fail (packet != NULL, FALSE);
+
+  /* init to 0 */
+  packet->buffer = buffer;
+  packet->offset = 0;
+  packet->type = GST_RDT_TYPE_INVALID;
+
+  if (!read_packet_header (packet))
+    return FALSE;
+
+  return TRUE;
+}
+
+gboolean
+gst_rdt_packet_move_to_next (GstRDTPacket * packet)
+{
+  g_return_val_if_fail (packet != NULL, FALSE);
+  g_return_val_if_fail (packet->type != GST_RDT_TYPE_INVALID, FALSE);
+  g_return_val_if_fail (GST_IS_BUFFER (packet->buffer), FALSE);
+
+  /* if we have an invalid packet, it must be the last, 
+   * return FALSE */
+  if (packet->type == GST_RDT_TYPE_INVALID)
+    goto end;
+
+  /* move to next packet */
+  packet->offset += packet->length;
+
+  /* try to read new header */
+  if (!read_packet_header (packet))
+    goto end;
+
+  return TRUE;
+
+  /* ERRORS */
+end:
+  {
+    packet->type = GST_RDT_TYPE_INVALID;
+    return FALSE;
+  }
+}
+
+GstRDTType
+gst_rdt_packet_get_type (GstRDTPacket * packet)
+{
+  g_return_val_if_fail (packet != NULL, GST_RDT_TYPE_INVALID);
+  g_return_val_if_fail (packet->type != GST_RDT_TYPE_INVALID,
+      GST_RDT_TYPE_INVALID);
+
+  return packet->type;
+}
+
+guint16
+gst_rdt_packet_get_length (GstRDTPacket * packet)
+{
+  g_return_val_if_fail (packet != NULL, 0);
+  g_return_val_if_fail (packet->type != GST_RDT_TYPE_INVALID, 0);
+
+  return packet->length;
+}
+
+GstBuffer *
+gst_rdt_packet_to_buffer (GstRDTPacket * packet)
+{
+  GstBuffer *result;
+
+  g_return_val_if_fail (packet != NULL, NULL);
+  g_return_val_if_fail (packet->type != GST_RDT_TYPE_INVALID, NULL);
+
+  result =
+      gst_buffer_create_sub (packet->buffer, packet->offset, packet->length);
+  /* timestamp applies to all packets in this buffer */
+  GST_BUFFER_TIMESTAMP (result) = GST_BUFFER_TIMESTAMP (packet->buffer);
+
+  return result;
+}
+
+gint
+gst_rdt_buffer_compare_seqnum (guint16 seqnum1, guint16 seqnum2)
+{
+  return (gint16) (seqnum2 - seqnum1);
+}
+
+guint16
+gst_rdt_packet_data_get_seq (GstRDTPacket * packet)
+{
+  guint header;
+  guint8 *bufdata;
+
+  g_return_val_if_fail (packet != NULL, FALSE);
+  g_return_val_if_fail (GST_RDT_IS_DATA_TYPE (packet->type), FALSE);
+
+  bufdata = GST_BUFFER_DATA (packet->buffer);
+
+  /* skip header bits */
+  header = packet->offset + 1;
+
+  /* read seq_no */
+  return GST_READ_UINT16_BE (&bufdata[header]);
+}
+
+gboolean
+gst_rdt_packet_data_peek_data (GstRDTPacket * packet, guint8 ** data,
+    guint * size)
+{
+  guint header;
+  guint8 *bufdata;
+  gboolean length_included_flag;
+  gboolean need_reliable_flag;
+  guint8 stream_id;
+  guint8 asm_rule_number;
+
+  g_return_val_if_fail (packet != NULL, FALSE);
+  g_return_val_if_fail (GST_RDT_IS_DATA_TYPE (packet->type), FALSE);
+
+  bufdata = GST_BUFFER_DATA (packet->buffer);
+
+  header = packet->offset;
+
+  length_included_flag = (bufdata[header] & 0x80) == 0x80;
+  need_reliable_flag = (bufdata[header] & 0x40) == 0x40;
+  stream_id = (bufdata[header] & 0x3e) >> 1;
+
+  /* skip seq_no and header bits */
+  header += 3;
+
+  if (length_included_flag) {
+    /* skip length */
+    header += 2;
+  }
+  asm_rule_number = (bufdata[header] & 0x3f);
+
+  /* skip timestamp and asm_rule_number */
+  header += 5;
+
+  if (stream_id == 0x1f) {
+    /* skip stream_id_expansion */
+    header += 2;
+  }
+  if (need_reliable_flag) {
+    /* skip total_reliable */
+    header += 2;
+  }
+  if (asm_rule_number == 63) {
+    /* skip asm_rule_number_expansion */
+    header += 2;
+  }
+
+  if (data)
+    *data = &bufdata[header];
+  if (size)
+    *size = packet->length - (header - packet->offset);
+
+  return TRUE;
+}
+
+guint16
+gst_rdt_packet_data_get_stream_id (GstRDTPacket * packet)
+{
+  guint16 result;
+  guint header;
+  gboolean length_included_flag;
+  guint8 *bufdata;
+
+  g_return_val_if_fail (packet != NULL, 0);
+  g_return_val_if_fail (GST_RDT_IS_DATA_TYPE (packet->type), 0);
+
+  bufdata = GST_BUFFER_DATA (packet->buffer);
+
+  header = packet->offset;
+
+  length_included_flag = (bufdata[header] & 0x80) == 0x80;
+  result = (bufdata[header] & 0x3e) >> 1;
+  if (result == 31) {
+    /* skip seq_no and header bits */
+    header += 3;
+
+    if (length_included_flag) {
+      /* skip length */
+      header += 2;
+    }
+    /* skip asm_rule_number and timestamp */
+    header += 5;
+
+    /* stream_id_expansion */
+    result = GST_READ_UINT16_BE (&bufdata[header]);
+  }
+  return result;
+}
+
+guint32
+gst_rdt_packet_data_get_timestamp (GstRDTPacket * packet)
+{
+  guint header;
+  gboolean length_included_flag;
+  guint8 *bufdata;
+
+  g_return_val_if_fail (packet != NULL, 0);
+  g_return_val_if_fail (GST_RDT_IS_DATA_TYPE (packet->type), 0);
+
+  bufdata = GST_BUFFER_DATA (packet->buffer);
+
+  header = packet->offset;
+
+  length_included_flag = (bufdata[header] & 0x80) == 0x80;
+
+  /* skip seq_no and header bits */
+  header += 3;
+
+  if (length_included_flag) {
+    /* skip length */
+    header += 2;
+  }
+  /* skip asm_rule_number */
+  header += 1;
+
+  /* get timestamp */
+  return GST_READ_UINT32_BE (&bufdata[header]);
+}
+
+guint8
+gst_rdt_packet_data_get_flags (GstRDTPacket * packet)
+{
+  guint header;
+  gboolean length_included_flag;
+  guint8 *bufdata;
+
+  g_return_val_if_fail (packet != NULL, 0);
+  g_return_val_if_fail (GST_RDT_IS_DATA_TYPE (packet->type), 0);
+
+  bufdata = GST_BUFFER_DATA (packet->buffer);
+
+  header = packet->offset;
+
+  length_included_flag = (bufdata[header] & 0x80) == 0x80;
+
+  /* skip seq_no and header bits */
+  header += 3;
+
+  if (length_included_flag) {
+    /* skip length */
+    header += 2;
+  }
+  /* get flags */
+  return bufdata[header];
+}
diff --git a/gst/realmedia/gstrdtbuffer.h b/gst/realmedia/gstrdtbuffer.h
new file mode 100644 (file)
index 0000000..b452922
--- /dev/null
@@ -0,0 +1,120 @@
+/* GStreamer
+ * Copyright (C) <2008> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * gstrdtbuffer.h: various helper functions to manipulate buffers
+ *     with RDT payload.
+ *
+ * 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_RDTBUFFER_H__
+#define __GST_RDTBUFFER_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+/** 
+ * GstRDTType:
+ * @GST_RDT_TYPE_INVALID:
+ * @GST_RDT_TYPE_ASMACTION:
+ * @GST_RDT_TYPE_ACK:
+ * @GST_RDT_TYPE_RTTREQ:
+ * @GST_RDT_TYPE_RTTRESP:
+ * @GST_RDT_TYPE_CONGESTION:
+ * @GST_RDT_TYPE_STREAMEND:
+ * @GST_RDT_TYPE_LATENCY:
+ * @GST_RDT_TYPE_INFOREQ:
+ * @GST_RDT_TYPE_INFORESP:
+ * @GST_RDT_TYPE_AUTOBW:
+ *
+ * Different RDT packet types.
+ */
+typedef enum
+{
+  GST_RDT_TYPE_INVALID     = 0xffff,
+  GST_RDT_TYPE_ASMACTION   = 0xff00,
+  GST_RDT_TYPE_BWREPORT    = 0xff01,
+  GST_RDT_TYPE_ACK         = 0xff02,
+  GST_RDT_TYPE_RTTREQ      = 0xff03,
+  GST_RDT_TYPE_RTTRESP     = 0xff04,
+  GST_RDT_TYPE_CONGESTION  = 0xff05,
+  GST_RDT_TYPE_STREAMEND   = 0xff06,
+  GST_RDT_TYPE_REPORT      = 0xff07,
+  GST_RDT_TYPE_LATENCY     = 0xff08,
+  GST_RDT_TYPE_INFOREQ     = 0xff09,
+  GST_RDT_TYPE_INFORESP    = 0xff0a,
+  GST_RDT_TYPE_AUTOBW      = 0xff0b
+} GstRDTType;
+
+/**
+ * GST_RDT_IS_DATA_TYPE:
+ * @t: the #GstRDTType to check
+ * 
+ * Check if @t is a data packet type.
+ */
+#define GST_RDT_IS_DATA_TYPE(t) ((t) < 0xff00)
+
+typedef struct _GstRDTPacket GstRDTPacket;
+
+/**
+ * GstRDTPacket:
+ * @buffer: pointer to RDT buffer
+ * @offset: offset of packet in buffer data
+ *
+ * Data structure that points to a packet at @offset in @buffer. 
+ * The size of the structure is made public to allow stack allocations.
+ */
+struct _GstRDTPacket
+{ 
+  GstBuffer   *buffer;
+  guint        offset;
+  
+  /*< private >*/
+  GstRDTType   type;         /* type of current packet */
+  guint16      length;       /* length of current packet in bytes */
+};
+
+/* validate buffers */
+gboolean        gst_rdt_buffer_validate_data      (guint8 *data, guint len);
+gboolean        gst_rdt_buffer_validate           (GstBuffer *buffer);
+
+/* retrieving packets */
+guint           gst_rdt_buffer_get_packet_count   (GstBuffer *buffer);
+gboolean        gst_rdt_buffer_get_first_packet   (GstBuffer *buffer, GstRDTPacket *packet);
+gboolean        gst_rdt_packet_move_to_next       (GstRDTPacket *packet);
+
+/* working with packets */
+GstRDTType      gst_rdt_packet_get_type           (GstRDTPacket *packet);
+guint16         gst_rdt_packet_get_length         (GstRDTPacket *packet);
+GstBuffer*      gst_rdt_packet_to_buffer          (GstRDTPacket *packet);
+
+
+/* data packets */
+guint16         gst_rdt_packet_data_get_seq       (GstRDTPacket *packet);
+gboolean        gst_rdt_packet_data_peek_data     (GstRDTPacket *packet, guint8 **data, guint *size);
+guint16         gst_rdt_packet_data_get_stream_id (GstRDTPacket *packet);
+guint32         gst_rdt_packet_data_get_timestamp (GstRDTPacket *packet);
+
+guint8          gst_rdt_packet_data_get_flags     (GstRDTPacket * packet);
+
+/* utils */
+gint            gst_rdt_buffer_compare_seqnum     (guint16 seqnum1, guint16 seqnum2);
+
+G_END_DECLS
+
+#endif /* __GST_RDTBUFFER_H__ */
+
diff --git a/gst/realmedia/pnmsrc.c b/gst/realmedia/pnmsrc.c
new file mode 100644 (file)
index 0000000..bf6d9ae
--- /dev/null
@@ -0,0 +1,257 @@
+/* GStreamer
+ * Copyright (C) <2009> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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 <string.h>
+
+#include "pnmsrc.h"
+
+GST_DEBUG_CATEGORY_STATIC (pnmsrc_debug);
+#define GST_CAT_DEFAULT pnmsrc_debug
+
+/* PNMSrc signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+#define DEFAULT_LOCATION       NULL
+
+enum
+{
+  PROP_0,
+  PROP_LOCATION,
+  PROP_LAST
+};
+
+static GstStaticPadTemplate gst_pnm_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/vnd.rn-realmedia")
+    );
+
+static GstFlowReturn gst_pnm_src_create (GstPushSrc * psrc, GstBuffer ** buf);
+
+static void gst_pnm_src_uri_handler_init (gpointer g_iface,
+    gpointer iface_data);
+
+static void
+_do_init (GType pnmsrc_type)
+{
+  static const GInterfaceInfo urihandler_info = {
+    gst_pnm_src_uri_handler_init,
+    NULL,
+    NULL
+  };
+
+  g_type_add_interface_static (pnmsrc_type, GST_TYPE_URI_HANDLER,
+      &urihandler_info);
+}
+
+GST_BOILERPLATE_FULL (GstPNMSrc, gst_pnm_src, GstPushSrc, GST_TYPE_PUSH_SRC,
+    _do_init);
+
+static void gst_pnm_src_finalize (GObject * object);
+
+static void gst_pnm_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_pnm_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+
+static void
+gst_pnm_src_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_pnm_src_template);
+
+  gst_element_class_set_details_simple (element_class, "PNM packet receiver",
+      "Source/Network",
+      "Receive data over the network via PNM",
+      "Wim Taymans <wim.taymans@gmail.com>");
+
+  GST_DEBUG_CATEGORY_INIT (pnmsrc_debug, "pnmsrc",
+      0, "Source for the pnm:// uri");
+}
+
+static void
+gst_pnm_src_class_init (GstPNMSrcClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstPushSrcClass *gstpushsrc_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstpushsrc_class = (GstPushSrcClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->set_property = gst_pnm_src_set_property;
+  gobject_class->get_property = gst_pnm_src_get_property;
+
+  gobject_class->finalize = gst_pnm_src_finalize;
+
+  g_object_class_install_property (gobject_class, PROP_LOCATION,
+      g_param_spec_string ("location", "PNM Location",
+          "Location of the PNM url to read",
+          DEFAULT_LOCATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gstpushsrc_class->create = gst_pnm_src_create;
+}
+
+static void
+gst_pnm_src_init (GstPNMSrc * pnmsrc, GstPNMSrcClass * klass)
+{
+  pnmsrc->location = g_strdup (DEFAULT_LOCATION);
+}
+
+gboolean
+gst_pnm_src_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "pnmsrc",
+      GST_RANK_MARGINAL, GST_TYPE_PNM_SRC);
+}
+
+static void
+gst_pnm_src_finalize (GObject * object)
+{
+  GstPNMSrc *pnmsrc;
+
+  pnmsrc = GST_PNM_SRC (object);
+
+  g_free (pnmsrc->location);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_pnm_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstPNMSrc *src;
+
+  src = GST_PNM_SRC (object);
+
+  switch (prop_id) {
+    case PROP_LOCATION:
+      g_free (src->location);
+      src->location = g_value_dup_string (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_pnm_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstPNMSrc *src;
+
+  src = GST_PNM_SRC (object);
+
+  switch (prop_id) {
+    case PROP_LOCATION:
+      g_value_set_string (value, src->location);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstFlowReturn
+gst_pnm_src_create (GstPushSrc * psrc, GstBuffer ** buf)
+{
+  GstPNMSrc *src;
+  GstMessage *m;
+  gchar *url;
+
+  src = GST_PNM_SRC (psrc);
+
+  if (src->location == NULL)
+    return GST_FLOW_ERROR;
+  url = g_strdup_printf ("rtsp%s", &src->location[3]);
+
+  /* the only thing we do is redirect to an RTSP url */
+  m = gst_message_new_element (GST_OBJECT_CAST (src),
+      gst_structure_new ("redirect", "new-location", G_TYPE_STRING, url, NULL));
+  g_free (url);
+
+  gst_element_post_message (GST_ELEMENT_CAST (src), m);
+
+
+  return GST_FLOW_UNEXPECTED;
+}
+
+/*** GSTURIHANDLER INTERFACE *************************************************/
+
+static GstURIType
+gst_pnm_src_uri_get_type (void)
+{
+  return GST_URI_SRC;
+}
+
+static gchar **
+gst_pnm_src_uri_get_protocols (void)
+{
+  static gchar *protocols[] = { (gchar *) "pnm", NULL };
+
+  return protocols;
+}
+
+static const gchar *
+gst_pnm_src_uri_get_uri (GstURIHandler * handler)
+{
+  GstPNMSrc *src = GST_PNM_SRC (handler);
+
+  return src->location;
+}
+
+static gboolean
+gst_pnm_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
+{
+  GstPNMSrc *src = GST_PNM_SRC (handler);
+
+  if (!g_str_has_prefix (uri, "pnm://"))
+    return FALSE;
+
+  g_free (src->location);
+  src->location = g_strdup (uri);
+
+  return TRUE;
+}
+
+static void
+gst_pnm_src_uri_handler_init (gpointer g_iface, gpointer iface_data)
+{
+  GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
+
+  iface->get_type = gst_pnm_src_uri_get_type;
+  iface->get_protocols = gst_pnm_src_uri_get_protocols;
+  iface->get_uri = gst_pnm_src_uri_get_uri;
+  iface->set_uri = gst_pnm_src_uri_set_uri;
+}
diff --git a/gst/realmedia/pnmsrc.h b/gst/realmedia/pnmsrc.h
new file mode 100644 (file)
index 0000000..4ebd9d7
--- /dev/null
@@ -0,0 +1,59 @@
+/* GStreamer
+ * Copyright (C) <2009> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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_PNM_SRC_H__
+#define __GST_PNM_SRC_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_PNM_SRC \
+  (gst_pnm_src_get_type())
+#define GST_PNM_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PNM_SRC,GstPNMSrc))
+#define GST_PNM_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PNM_SRC,GstPNMSrcClass))
+#define GST_IS_PNM_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PNM_SRC))
+#define GST_IS_PNM_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PNM_SRC))
+
+typedef struct _GstPNMSrc GstPNMSrc;
+typedef struct _GstPNMSrcClass GstPNMSrcClass;
+
+struct _GstPNMSrc
+{
+  GstPushSrc parent;
+
+  gchar *location;
+};
+
+struct _GstPNMSrcClass
+{
+  GstPushSrcClass parent_class;
+};
+
+GType gst_pnm_src_get_type (void);
+gboolean gst_pnm_src_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_PNM_SRC_H__ */
diff --git a/gst/realmedia/rademux.c b/gst/realmedia/rademux.c
new file mode 100644 (file)
index 0000000..7e986a2
--- /dev/null
@@ -0,0 +1,962 @@
+/* GStreamer RealAudio demuxer
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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-rademux
+ *
+ * Demuxes/parses a RealAudio (.ra) file or stream into compressed audio.
+ * 
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch filesrc location=interview.ra ! rademux ! ffdec_real_288 ! audioconvert ! audioresample ! alsasink
+ * ]| Read a RealAudio file and decode it and output it to the soundcard using
+ * the ALSA element. The .ra file is assumed to contain RealAudio version 2.
+ * |[
+ * gst-launch gnomevfssrc location=http://www.example.org/interview.ra ! rademux ! a52dec ! audioconvert ! audioresample ! alsasink
+ * ]| Stream RealAudio data containing AC3 (dnet) compressed audio and decode it
+ * and output it to the soundcard using the ALSA element.
+ * </refsect2>
+ *
+ * Last reviewed on 2006-10-24 (0.10.5)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include "rademux.h"
+#include "rmdemux.h"
+#include "rmutils.h"
+
+#include <string.h>
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/x-pn-realaudio")
+    );
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+GST_DEBUG_CATEGORY_STATIC (real_audio_demux_debug);
+#define GST_CAT_DEFAULT real_audio_demux_debug
+
+GST_BOILERPLATE (GstRealAudioDemux, gst_real_audio_demux, GstElement,
+    GST_TYPE_ELEMENT);
+
+static GstStateChangeReturn gst_real_audio_demux_change_state (GstElement * e,
+    GstStateChange transition);
+static GstFlowReturn gst_real_audio_demux_chain (GstPad * pad, GstBuffer * buf);
+static gboolean gst_real_audio_demux_sink_event (GstPad * pad, GstEvent * ev);
+static gboolean gst_real_audio_demux_src_event (GstPad * pad, GstEvent * ev);
+static gboolean gst_real_audio_demux_src_query (GstPad * pad, GstQuery * query);
+static void gst_real_audio_demux_loop (GstRealAudioDemux * demux);
+static gboolean gst_real_audio_demux_sink_activate (GstPad * sinkpad);
+static gboolean gst_real_audio_demux_sink_activate_push (GstPad * sinkpad,
+    gboolean active);
+static gboolean gst_real_audio_demux_sink_activate_pull (GstPad * sinkpad,
+    gboolean active);
+
+static void
+gst_real_audio_demux_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_set_details_simple (element_class, "RealAudio Demuxer",
+      "Codec/Demuxer",
+      "Demultiplex a RealAudio file",
+      "Tim-Philipp Müller <tim centricular net>");
+
+  GST_DEBUG_CATEGORY_INIT (real_audio_demux_debug, "rademux",
+      0, "Demuxer for RealAudio streams");
+}
+
+static void
+gst_real_audio_demux_finalize (GObject * obj)
+{
+  GstRealAudioDemux *demux = GST_REAL_AUDIO_DEMUX (obj);
+
+  g_object_unref (demux->adapter);
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_real_audio_demux_class_init (GstRealAudioDemuxClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstElementClass *gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->finalize = gst_real_audio_demux_finalize;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_change_state);
+}
+
+static void
+gst_real_audio_demux_reset (GstRealAudioDemux * demux)
+{
+  gst_adapter_clear (demux->adapter);
+
+  if (demux->srcpad) {
+    GST_DEBUG_OBJECT (demux, "Removing source pad");
+    gst_element_remove_pad (GST_ELEMENT (demux), demux->srcpad);
+    demux->srcpad = NULL;
+  }
+
+  if (demux->pending_tags) {
+    gst_tag_list_free (demux->pending_tags);
+    demux->pending_tags = NULL;
+  }
+
+  demux->state = REAL_AUDIO_DEMUX_STATE_MARKER;
+  demux->ra_version = 0;
+  demux->data_offset = 0;
+  demux->packet_size = 0;
+
+  demux->sample_rate = 0;
+  demux->sample_width = 0;
+  demux->channels = 0;
+  demux->fourcc = 0;
+
+  demux->need_newsegment = TRUE;
+
+  demux->segment_running = FALSE;
+
+  demux->byterate_num = 0;
+  demux->byterate_denom = 0;
+
+  demux->duration = 0;
+  demux->upstream_size = 0;
+
+  demux->offset = 0;
+
+  gst_adapter_clear (demux->adapter);
+}
+
+static void
+gst_real_audio_demux_init (GstRealAudioDemux * demux,
+    GstRealAudioDemuxClass * klass)
+{
+  demux->sinkpad = gst_pad_new_from_static_template (&sink_template, "sink");
+
+  gst_pad_set_chain_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_chain));
+  gst_pad_set_event_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_sink_event));
+  gst_pad_set_activate_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_sink_activate));
+  gst_pad_set_activatepull_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_sink_activate_pull));
+  gst_pad_set_activatepush_function (demux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_sink_activate_push));
+
+  gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
+
+  demux->adapter = gst_adapter_new ();
+  gst_real_audio_demux_reset (demux);
+}
+
+static gboolean
+gst_real_audio_demux_sink_activate (GstPad * sinkpad)
+{
+  if (gst_pad_check_pull_range (sinkpad)) {
+    return gst_pad_activate_pull (sinkpad, TRUE);
+  } else {
+    return gst_pad_activate_push (sinkpad, TRUE);
+  }
+}
+
+static gboolean
+gst_real_audio_demux_sink_activate_push (GstPad * sinkpad, gboolean active)
+{
+  GstRealAudioDemux *demux;
+
+  demux = GST_REAL_AUDIO_DEMUX (GST_OBJECT_PARENT (sinkpad));
+
+  demux->seekable = FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_real_audio_demux_sink_activate_pull (GstPad * sinkpad, gboolean active)
+{
+  GstRealAudioDemux *demux;
+
+  demux = GST_REAL_AUDIO_DEMUX (GST_OBJECT_PARENT (sinkpad));
+
+  if (active) {
+    demux->seekable = TRUE;
+
+    return gst_pad_start_task (sinkpad,
+        (GstTaskFunction) gst_real_audio_demux_loop, demux);
+  } else {
+    demux->seekable = FALSE;
+    return gst_pad_stop_task (sinkpad);
+  }
+}
+
+static GstFlowReturn
+gst_real_audio_demux_parse_marker (GstRealAudioDemux * demux)
+{
+  const guint8 *data;
+
+  if (gst_adapter_available (demux->adapter) < 6) {
+    GST_LOG_OBJECT (demux, "need at least 6 bytes, waiting for more data");
+    return GST_FLOW_OK;
+  }
+
+  data = gst_adapter_peek (demux->adapter, 6);
+  if (memcmp (data, ".ra\375", 4) != 0)
+    goto wrong_format;
+
+  demux->ra_version = GST_READ_UINT16_BE (data + 4);
+  GST_DEBUG_OBJECT (demux, "ra_version   = %u", demux->ra_version);
+  if (demux->ra_version != 4 && demux->ra_version != 3)
+    goto unsupported_ra_version;
+
+  gst_adapter_flush (demux->adapter, 6);
+  demux->state = REAL_AUDIO_DEMUX_STATE_HEADER;
+  return GST_FLOW_OK;
+
+/* ERRORS */
+wrong_format:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (demux), STREAM, WRONG_TYPE, (NULL), (NULL));
+    return GST_FLOW_ERROR;
+  }
+
+unsupported_ra_version:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (demux), STREAM, DECODE,
+        ("Cannot decode this RealAudio file, please file a bug"),
+        ("ra_version = %u", demux->ra_version));
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstClockTime
+gst_real_demux_get_timestamp_from_offset (GstRealAudioDemux * demux,
+    guint64 offset)
+{
+  if (offset >= demux->data_offset && demux->byterate_num > 0 &&
+      demux->byterate_denom > 0) {
+    return gst_util_uint64_scale (offset - demux->data_offset,
+        demux->byterate_denom * GST_SECOND, demux->byterate_num);
+  } else if (offset == demux->data_offset) {
+    return (GstClockTime) 0;
+  } else {
+    return GST_CLOCK_TIME_NONE;
+  }
+}
+
+static gboolean
+gst_real_audio_demux_get_data_offset_from_header (GstRealAudioDemux * demux)
+{
+  const guint8 *data;
+
+  data = gst_adapter_peek (demux->adapter, 16);
+  g_assert (data != NULL);
+
+  switch (demux->ra_version) {
+    case 3:
+      demux->data_offset = GST_READ_UINT16_BE (data) + 8;
+      break;
+    case 4:
+      demux->data_offset = GST_READ_UINT32_BE (data + 12) + 16;
+      break;
+    default:
+      demux->data_offset = 0;
+      g_return_val_if_reached (FALSE);
+  }
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_real_audio_demux_parse_header (GstRealAudioDemux * demux)
+{
+  const guint8 *data;
+  gchar *codec_name = NULL;
+  GstCaps *caps = NULL;
+  guint avail;
+
+  g_assert (demux->ra_version == 4 || demux->ra_version == 3);
+
+  avail = gst_adapter_available (demux->adapter);
+  if (avail < 16)
+    return GST_FLOW_OK;
+
+  if (!gst_real_audio_demux_get_data_offset_from_header (demux))
+    return GST_FLOW_ERROR;      /* shouldn't happen */
+
+  GST_DEBUG_OBJECT (demux, "data_offset  = %u", demux->data_offset);
+
+  if (avail + 6 < demux->data_offset) {
+    GST_DEBUG_OBJECT (demux, "Need %u bytes, but only %u available now",
+        demux->data_offset - 6, avail);
+    return GST_FLOW_OK;
+  }
+
+  data = gst_adapter_peek (demux->adapter, demux->data_offset - 6);
+  g_assert (data);
+
+  switch (demux->ra_version) {
+    case 3:
+      demux->fourcc = GST_RM_AUD_14_4;
+      demux->packet_size = 20;
+      demux->sample_rate = 8000;
+      demux->channels = 1;
+      demux->sample_width = 16;
+      demux->flavour = 1;
+      demux->leaf_size = 0;
+      demux->height = 0;
+      break;
+    case 4:
+      demux->flavour = GST_READ_UINT16_BE (data + 16);
+      /* demux->frame_size = GST_READ_UINT32_BE (data + 36); */
+      demux->leaf_size = GST_READ_UINT16_BE (data + 38);
+      demux->height = GST_READ_UINT16_BE (data + 34);
+      demux->packet_size = GST_READ_UINT32_BE (data + 18);
+      demux->sample_rate = GST_READ_UINT16_BE (data + 42);
+      demux->sample_width = GST_READ_UINT16_BE (data + 46);
+      demux->channels = GST_READ_UINT16_BE (data + 48);
+      demux->fourcc = GST_READ_UINT32_LE (data + 56);
+      demux->pending_tags = gst_rm_utils_read_tags (data + 63,
+          demux->data_offset - 63, gst_rm_utils_read_string8);
+      break;
+    default:
+      g_assert_not_reached ();
+#if 0
+    case 5:
+      demux->flavour = GST_READ_UINT16_BE (data + 16);
+      /* demux->frame_size = GST_READ_UINT32_BE (data + 36); */
+      demux->leaf_size = GST_READ_UINT16_BE (data + 38);
+      demux->height = GST_READ_UINT16_BE (data + 34);
+
+      demux->sample_rate = GST_READ_UINT16_BE (data + 48);
+      demux->sample_width = GST_READ_UINT16_BE (data + 52);
+      demux->n_channels = GST_READ_UINT16_BE (data + 54);
+      demux->fourcc = RMDEMUX_FOURCC_GET (data + 60);
+      break;
+#endif
+  }
+
+  GST_INFO_OBJECT (demux, "packet_size  = %u", demux->packet_size);
+  GST_INFO_OBJECT (demux, "sample_rate  = %u", demux->sample_rate);
+  GST_INFO_OBJECT (demux, "sample_width = %u", demux->sample_width);
+  GST_INFO_OBJECT (demux, "channels     = %u", demux->channels);
+  GST_INFO_OBJECT (demux, "fourcc       = '%" GST_FOURCC_FORMAT "' (%08X)",
+      GST_FOURCC_ARGS (demux->fourcc), demux->fourcc);
+
+  switch (demux->fourcc) {
+    case GST_RM_AUD_14_4:
+      caps = gst_caps_new_simple ("audio/x-pn-realaudio", "raversion",
+          G_TYPE_INT, 1, NULL);
+      demux->byterate_num = 1000;
+      demux->byterate_denom = 1;
+      break;
+
+    case GST_RM_AUD_28_8:
+      /* FIXME: needs descrambling */
+      caps = gst_caps_new_simple ("audio/x-pn-realaudio", "raversion",
+          G_TYPE_INT, 2, NULL);
+      break;
+
+    case GST_RM_AUD_DNET:
+      caps = gst_caps_new_simple ("audio/x-ac3", "rate", G_TYPE_INT,
+          demux->sample_rate, NULL);
+      if (demux->packet_size == 0 || demux->sample_rate == 0)
+        goto broken_file;
+      demux->byterate_num = demux->packet_size * demux->sample_rate;
+      demux->byterate_denom = 1536;
+      break;
+
+      /* Sipro/ACELP.NET Voice Codec (MIME unknown) */
+    case GST_RM_AUD_SIPR:
+      caps = gst_caps_new_simple ("audio/x-sipro", NULL);
+      break;
+
+    default:
+      GST_WARNING_OBJECT (demux, "unknown fourcc %08X", demux->fourcc);
+      break;
+  }
+
+  if (caps == NULL)
+    goto unknown_fourcc;
+
+  gst_caps_set_simple (caps,
+      "flavor", G_TYPE_INT, demux->flavour,
+      "rate", G_TYPE_INT, demux->sample_rate,
+      "channels", G_TYPE_INT, demux->channels,
+      "width", G_TYPE_INT, demux->sample_width,
+      "leaf_size", G_TYPE_INT, demux->leaf_size,
+      "packet_size", G_TYPE_INT, demux->packet_size,
+      "height", G_TYPE_INT, demux->height, NULL);
+
+  GST_INFO_OBJECT (demux, "Adding source pad, caps %" GST_PTR_FORMAT, caps);
+  demux->srcpad = gst_pad_new_from_static_template (&src_template, "src");
+  gst_pad_use_fixed_caps (demux->srcpad);
+  gst_pad_set_caps (demux->srcpad, caps);
+  codec_name = gst_pb_utils_get_codec_description (caps);
+  gst_caps_unref (caps);
+  gst_pad_set_event_function (demux->srcpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_src_event));
+  gst_pad_set_query_function (demux->srcpad,
+      GST_DEBUG_FUNCPTR (gst_real_audio_demux_src_query));
+  gst_pad_set_active (demux->srcpad, TRUE);
+  gst_element_add_pad (GST_ELEMENT (demux), demux->srcpad);
+
+  if (demux->byterate_num > 0 && demux->byterate_denom > 0) {
+    GstFormat bformat = GST_FORMAT_BYTES;
+    gint64 size_bytes = 0;
+
+    GST_INFO_OBJECT (demux, "byte rate = %u/%u = %u bytes/sec",
+        demux->byterate_num, demux->byterate_denom,
+        demux->byterate_num / demux->byterate_denom);
+
+    if (gst_pad_query_peer_duration (demux->sinkpad, &bformat, &size_bytes)) {
+      demux->duration =
+          gst_real_demux_get_timestamp_from_offset (demux, size_bytes);
+      demux->upstream_size = size_bytes;
+      GST_INFO_OBJECT (demux, "upstream_size = %" G_GUINT64_FORMAT,
+          demux->upstream_size);
+      GST_INFO_OBJECT (demux, "duration      = %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (demux->duration));
+    }
+  }
+
+  demux->need_newsegment = TRUE;
+
+  if (codec_name) {
+    if (demux->pending_tags == NULL)
+      demux->pending_tags = gst_tag_list_new ();
+
+    gst_tag_list_add (demux->pending_tags, GST_TAG_MERGE_REPLACE,
+        GST_TAG_AUDIO_CODEC, codec_name, NULL);
+    g_free (codec_name);
+  }
+
+  gst_adapter_flush (demux->adapter, demux->data_offset - 6);
+
+  demux->state = REAL_AUDIO_DEMUX_STATE_DATA;
+  demux->need_newsegment = TRUE;
+
+  return GST_FLOW_OK;
+
+/* ERRORS */
+unknown_fourcc:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (demux), STREAM, DECODE, (NULL),
+        ("Unknown fourcc '%" GST_FOURCC_FORMAT "'",
+            GST_FOURCC_ARGS (demux->fourcc)));
+    return GST_FLOW_ERROR;
+  }
+broken_file:
+  {
+    GST_ELEMENT_ERROR (GST_ELEMENT (demux), STREAM, DECODE, (NULL),
+        ("Broken file - invalid sample_rate or other header value"));
+    return GST_FLOW_ERROR;
+  }
+
+}
+
+static GstFlowReturn
+gst_real_audio_demux_parse_data (GstRealAudioDemux * demux)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint avail, unit_size;
+
+  avail = gst_adapter_available (demux->adapter);
+
+  if (demux->packet_size > 0)
+    unit_size = demux->packet_size;
+  else
+    unit_size = avail & 0xfffffff0;     /* round down to next multiple of 16 */
+
+  GST_LOG_OBJECT (demux, "available = %u, unit_size = %u", avail, unit_size);
+
+  while (ret == GST_FLOW_OK && unit_size > 0 && avail >= unit_size) {
+    GstClockTime ts;
+    const guint8 *data;
+    GstBuffer *buf = NULL;
+
+    buf = gst_buffer_new_and_alloc (unit_size);
+    gst_buffer_set_caps (buf, GST_PAD_CAPS (demux->srcpad));
+
+    data = gst_adapter_peek (demux->adapter, unit_size);
+    memcpy (GST_BUFFER_DATA (buf), data, unit_size);
+    gst_adapter_flush (demux->adapter, unit_size);
+    avail -= unit_size;
+
+    if (demux->need_newsegment) {
+      gst_pad_push_event (demux->srcpad,
+          gst_event_new_new_segment_full (FALSE, demux->segment.rate,
+              demux->segment.applied_rate, GST_FORMAT_TIME,
+              demux->segment.start, demux->segment.stop, demux->segment.time));
+      demux->need_newsegment = FALSE;
+    }
+
+    if (demux->pending_tags) {
+      gst_element_found_tags_for_pad (GST_ELEMENT (demux), demux->srcpad,
+          demux->pending_tags);
+      demux->pending_tags = NULL;
+    }
+
+    if (demux->fourcc == GST_RM_AUD_DNET) {
+      buf = gst_rm_utils_descramble_dnet_buffer (buf);
+    }
+
+    ts = gst_real_demux_get_timestamp_from_offset (demux, demux->offset);
+    GST_BUFFER_TIMESTAMP (buf) = ts;
+
+    gst_segment_set_last_stop (&demux->segment, GST_FORMAT_TIME, ts);
+
+    ret = gst_pad_push (demux->srcpad, buf);
+  }
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_real_audio_demux_handle_buffer (GstRealAudioDemux * demux, GstBuffer * buf)
+{
+  GstFlowReturn ret;
+
+  gst_adapter_push (demux->adapter, buf);
+  buf = NULL;
+
+  switch (demux->state) {
+    case REAL_AUDIO_DEMUX_STATE_MARKER:{
+      ret = gst_real_audio_demux_parse_marker (demux);
+      if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_HEADER)
+        break;
+      /* otherwise fall through */
+    }
+    case REAL_AUDIO_DEMUX_STATE_HEADER:{
+      ret = gst_real_audio_demux_parse_header (demux);
+      if (ret != GST_FLOW_OK || demux->state != REAL_AUDIO_DEMUX_STATE_DATA)
+        break;
+      /* otherwise fall through */
+    }
+    case REAL_AUDIO_DEMUX_STATE_DATA:{
+      ret = gst_real_audio_demux_parse_data (demux);
+      break;
+    }
+    default:
+      g_return_val_if_reached (GST_FLOW_ERROR);
+  }
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_real_audio_demux_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstRealAudioDemux *demux;
+
+  demux = GST_REAL_AUDIO_DEMUX (GST_PAD_PARENT (pad));
+
+  return gst_real_audio_demux_handle_buffer (demux, buf);
+}
+
+static void
+gst_real_audio_demux_loop (GstRealAudioDemux * demux)
+{
+  GstFlowReturn ret;
+  GstBuffer *buf;
+  guint bytes_needed;
+
+  /* check how much data we need */
+  switch (demux->state) {
+    case REAL_AUDIO_DEMUX_STATE_MARKER:
+      bytes_needed = 6 + 16;    /* 16 are beginning of header */
+      break;
+    case REAL_AUDIO_DEMUX_STATE_HEADER:
+      if (!gst_real_audio_demux_get_data_offset_from_header (demux))
+        goto parse_header_error;
+      bytes_needed = demux->data_offset - (6 + 16);
+      break;
+    case REAL_AUDIO_DEMUX_STATE_DATA:
+      if (demux->packet_size > 0) {
+        /* TODO: should probably take into account width/height as well? */
+        bytes_needed = demux->packet_size;
+      } else {
+        bytes_needed = 1024;
+      }
+      break;
+    default:
+      g_return_if_reached ();
+  }
+
+  /* now get the data */
+  GST_LOG_OBJECT (demux, "getting data: %5u bytes @ %8" G_GINT64_MODIFIER "u",
+      bytes_needed, demux->offset);
+
+  if (demux->upstream_size > 0 && demux->offset >= demux->upstream_size)
+    goto eos;
+
+  ret = gst_pad_pull_range (demux->sinkpad, demux->offset, bytes_needed, &buf);
+
+  if (ret != GST_FLOW_OK)
+    goto pull_range_error;
+
+  if (GST_BUFFER_SIZE (buf) != bytes_needed)
+    goto pull_range_short_read;
+
+  ret = gst_real_audio_demux_handle_buffer (demux, buf);
+  if (ret != GST_FLOW_OK)
+    goto handle_flow_error;
+
+  /* TODO: increase this in chain function too (for timestamps)? */
+  demux->offset += bytes_needed;
+
+  /* check for the end of the segment */
+  if (demux->segment.stop != -1 && demux->segment.last_stop != -1 &&
+      demux->segment.last_stop > demux->segment.stop) {
+    GST_DEBUG_OBJECT (demux, "reached end of segment");
+    goto eos;
+  }
+
+  return;
+
+/* ERRORS */
+parse_header_error:
+  {
+    GST_ELEMENT_ERROR (demux, STREAM, DECODE, (NULL), (NULL));
+    goto pause_task;
+  }
+handle_flow_error:
+  {
+    GST_WARNING_OBJECT (demux, "handle_buf flow: %s", gst_flow_get_name (ret));
+    goto pause_task;
+  }
+pull_range_error:
+  {
+    GST_WARNING_OBJECT (demux, "pull range flow: %s", gst_flow_get_name (ret));
+    goto pause_task;
+  }
+pull_range_short_read:
+  {
+    GST_WARNING_OBJECT (demux, "pull range short read: wanted %u bytes, but "
+        "got only %u bytes", bytes_needed, GST_BUFFER_SIZE (buf));
+    gst_buffer_unref (buf);
+    goto eos;
+  }
+eos:
+  {
+    if (demux->state != REAL_AUDIO_DEMUX_STATE_DATA) {
+      GST_WARNING_OBJECT (demux, "reached EOS before finished parsing header");
+      goto parse_header_error;
+    }
+    GST_INFO_OBJECT (demux, "EOS");
+    if ((demux->segment.flags & GST_SEEK_FLAG_SEGMENT) != 0) {
+      gint64 stop;
+
+      /* for segment playback we need to post when (in stream time)
+       * we stopped, this is either stop (when set) or the duration. */
+      if ((stop = demux->segment.stop) == -1)
+        stop = demux->segment.duration;
+
+      GST_DEBUG_OBJECT (demux, "sending segment done, at end of segment");
+      gst_element_post_message (GST_ELEMENT (demux),
+          gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
+              stop));
+    } else {
+      /* normal playback, send EOS event downstream */
+      GST_DEBUG_OBJECT (demux, "sending EOS event, at end of stream");
+      gst_pad_push_event (demux->srcpad, gst_event_new_eos ());
+    }
+    goto pause_task;
+  }
+pause_task:
+  {
+    demux->segment_running = FALSE;
+    gst_pad_pause_task (demux->sinkpad);
+    GST_DEBUG_OBJECT (demux, "pausing task");
+    return;
+  }
+}
+
+static gboolean
+gst_real_audio_demux_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstRealAudioDemux *demux;
+  gboolean ret;
+
+  demux = GST_REAL_AUDIO_DEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:{
+      /* FIXME */
+      gst_event_unref (event);
+      demux->need_newsegment = TRUE;
+      ret = TRUE;
+      break;
+    }
+    default:
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return ret;
+}
+
+static gboolean
+gst_real_audio_demux_handle_seek (GstRealAudioDemux * demux, GstEvent * event)
+{
+  GstFormat format;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gboolean flush, update;
+  gdouble rate;
+  guint64 seek_pos;
+  gint64 cur, stop;
+
+  if (!demux->seekable)
+    goto not_seekable;
+
+  if (demux->byterate_num == 0 || demux->byterate_denom == 0)
+    goto no_bitrate;
+
+  gst_event_parse_seek (event, &rate, &format, &flags,
+      &cur_type, &cur, &stop_type, &stop);
+
+  if (format != GST_FORMAT_TIME)
+    goto only_time_format_supported;
+
+  if (rate <= 0.0)
+    goto cannot_do_backwards_playback;
+
+  flush = ((flags & GST_SEEK_FLAG_FLUSH) != 0);
+
+  GST_DEBUG_OBJECT (demux, "flush=%d, rate=%g", flush, rate);
+
+  /* unlock streaming thread and make streaming stop */
+  if (flush) {
+    gst_pad_push_event (demux->sinkpad, gst_event_new_flush_start ());
+    gst_pad_push_event (demux->srcpad, gst_event_new_flush_start ());
+  } else {
+    gst_pad_pause_task (demux->sinkpad);
+  }
+
+  GST_PAD_STREAM_LOCK (demux->sinkpad);
+
+  if (demux->segment_running && !flush) {
+    GstEvent *newseg;
+
+    newseg = gst_event_new_new_segment_full (TRUE, demux->segment.rate,
+        demux->segment.applied_rate, GST_FORMAT_TIME, demux->segment.start,
+        demux->segment.last_stop, demux->segment.time);
+
+    GST_DEBUG_OBJECT (demux, "sending NEWSEGMENT event to close the current "
+        "segment: %" GST_PTR_FORMAT, newseg);
+
+    gst_pad_push_event (demux->srcpad, newseg);
+  }
+
+  gst_segment_set_seek (&demux->segment, rate, format, flags,
+      cur_type, cur, stop_type, stop, &update);
+
+  GST_DEBUG_OBJECT (demux, "segment: %" GST_SEGMENT_FORMAT, &demux->segment);
+
+  seek_pos = gst_util_uint64_scale (demux->segment.start,
+      demux->byterate_num, demux->byterate_denom * GST_SECOND);
+  if (demux->packet_size > 0) {
+    seek_pos -= seek_pos % demux->packet_size;
+  }
+  seek_pos += demux->data_offset;
+
+  GST_DEBUG_OBJECT (demux, "seek_pos = %" G_GUINT64_FORMAT, seek_pos);
+
+  /* stop flushing */
+  gst_pad_push_event (demux->sinkpad, gst_event_new_flush_stop ());
+  gst_pad_push_event (demux->srcpad, gst_event_new_flush_stop ());
+
+  demux->offset = seek_pos;
+  demux->need_newsegment = TRUE;
+
+  /* notify start of new segment */
+  if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
+    gst_element_post_message (GST_ELEMENT (demux),
+        gst_message_new_segment_start (GST_OBJECT (demux),
+            GST_FORMAT_TIME, demux->segment.last_stop));
+  }
+
+  demux->segment_running = TRUE;
+  /* restart our task since it might have been stopped when we did the flush */
+  gst_pad_start_task (demux->sinkpad,
+      (GstTaskFunction) gst_real_audio_demux_loop, demux);
+
+  /* streaming can continue now */
+  GST_PAD_STREAM_UNLOCK (demux->sinkpad);
+
+  return TRUE;
+
+/* ERRORS */
+not_seekable:
+  {
+    GST_DEBUG_OBJECT (demux, "seek failed: cannot seek in streaming mode");
+    return FALSE;
+  }
+no_bitrate:
+  {
+    GST_DEBUG_OBJECT (demux, "seek failed: bitrate unknown");
+    return FALSE;
+  }
+only_time_format_supported:
+  {
+    GST_DEBUG_OBJECT (demux, "can only seek in TIME format");
+    return FALSE;
+  }
+cannot_do_backwards_playback:
+  {
+    GST_DEBUG_OBJECT (demux, "can only seek with positive rate, not %lf", rate);
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_real_audio_demux_src_event (GstPad * pad, GstEvent * event)
+{
+  GstRealAudioDemux *demux;
+  gboolean ret = FALSE;
+
+  demux = GST_REAL_AUDIO_DEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_QOS:
+      gst_event_unref (event);
+      break;
+    case GST_EVENT_SEEK:
+      ret = gst_real_audio_demux_handle_seek (demux, event);
+      gst_event_unref (event);
+      break;
+    default:
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return ret;
+}
+
+static gboolean
+gst_real_audio_demux_src_query (GstPad * pad, GstQuery * query)
+{
+  GstRealAudioDemux *demux;
+  gboolean ret = FALSE;
+
+  demux = GST_REAL_AUDIO_DEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_DURATION:{
+      GstFormat format;
+
+      gst_query_parse_duration (query, &format, NULL);
+      if (format == GST_FORMAT_TIME && demux->duration > 0) {
+        gst_query_set_duration (query, GST_FORMAT_TIME, demux->duration);
+        ret = TRUE;
+      } else if (format == GST_FORMAT_BYTES && demux->upstream_size > 0) {
+        gst_query_set_duration (query, GST_FORMAT_BYTES,
+            demux->upstream_size - demux->data_offset);
+        ret = TRUE;
+      }
+      break;
+    }
+    case GST_QUERY_SEEKING:{
+      GstFormat format;
+      gboolean seekable;
+
+      gst_query_parse_seeking (query, &format, NULL, NULL, NULL);
+      seekable = (format == GST_FORMAT_TIME && demux->seekable);
+      gst_query_set_seeking (query, format, seekable, 0,
+          (format == GST_FORMAT_TIME) ? demux->duration : -1);
+      ret = TRUE;
+      break;
+    }
+    default:
+      ret = gst_pad_query_default (pad, query);
+      break;
+  }
+
+  gst_object_unref (demux);
+  return ret;
+}
+
+static GstStateChangeReturn
+gst_real_audio_demux_change_state (GstElement * element,
+    GstStateChange transition)
+{
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  GstRealAudioDemux *demux = GST_REAL_AUDIO_DEMUX (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      demux->state = REAL_AUDIO_DEMUX_STATE_MARKER;
+      demux->segment_running = FALSE;
+      gst_segment_init (&demux->segment, GST_FORMAT_TIME);
+      gst_adapter_clear (demux->adapter);
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:{
+      gst_real_audio_demux_reset (demux);
+      gst_segment_init (&demux->segment, GST_FORMAT_UNDEFINED);
+      break;
+    }
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+gboolean
+gst_rademux_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "rademux",
+      GST_RANK_SECONDARY, GST_TYPE_REAL_AUDIO_DEMUX);
+}
diff --git a/gst/realmedia/rademux.h b/gst/realmedia/rademux.h
new file mode 100644 (file)
index 0000000..6dab9c0
--- /dev/null
@@ -0,0 +1,101 @@
+/* GStreamer RealAudio demuxer
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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_REAL_AUDIO_DEMUX_H__
+#define __GST_REAL_AUDIO_DEMUX_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_REAL_AUDIO_DEMUX \
+  (gst_real_audio_demux_get_type())
+#define GST_REAL_AUDIO_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_REAL_AUDIO_DEMUX,GstRealAudioDemux))
+#define GST_REAL_AUDIO_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_REAL_AUDIO_DEMUX,GstRealAudioDemuxClass))
+#define GST_IS_REAL_AUDIO_DEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_REAL_AUDIO_DEMUX))
+#define GST_IS_REAL_AUDIO_DEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_REAL_AUDIO_DEMUX))
+
+typedef enum
+{
+  REAL_AUDIO_DEMUX_STATE_MARKER,
+  REAL_AUDIO_DEMUX_STATE_HEADER,
+  REAL_AUDIO_DEMUX_STATE_DATA
+} GstRealAudioDemuxState;
+
+typedef struct _GstRealAudioDemux GstRealAudioDemux;
+typedef struct _GstRealAudioDemuxClass GstRealAudioDemuxClass;
+
+struct _GstRealAudioDemux {
+  GstElement               element;
+
+  GstPad                  *sinkpad;
+  GstPad                  *srcpad;
+
+  GstAdapter              *adapter;
+  GstRealAudioDemuxState   state;
+
+  guint                    ra_version;
+  guint                    data_offset;
+
+  guint                    packet_size;
+  guint                    leaf_size;
+  guint                    height;
+  guint                    flavour;
+
+  guint                    sample_rate;
+  guint                    sample_width;
+  guint                    channels;
+  guint32                  fourcc;
+
+  gboolean                 segment_running;
+
+  gboolean                 need_newsegment;
+  GstTagList              *pending_tags;
+
+  guint                    byterate_num;    /* bytes per second */
+  guint                    byterate_denom;
+
+  gint64                   duration;
+  gint64                   upstream_size;
+
+  guint64                  offset;          /* current read byte offset for
+                                             * pull_range-based mode */
+
+  /* playback start/stop positions */
+  GstSegment               segment;
+
+  gboolean                 seekable;
+};
+
+struct _GstRealAudioDemuxClass {
+  GstElementClass  element_class;
+};
+
+GType  gst_real_audio_demux_get_type (void);
+
+gboolean gst_rademux_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_REAL_AUDIO_DEMUX_H__ */
diff --git a/gst/realmedia/rdtdepay.c b/gst/realmedia/rdtdepay.c
new file mode 100644 (file)
index 0000000..c4b9007
--- /dev/null
@@ -0,0 +1,502 @@
+/* GStreamer
+ * Copyright (C) <2006> Lutz Mueller <lutz at topfrose dot de>
+ *               <2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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 <string.h>
+
+#include "gstrdtbuffer.h"
+#include "rdtdepay.h"
+
+GST_DEBUG_CATEGORY_STATIC (rdtdepay_debug);
+#define GST_CAT_DEFAULT rdtdepay_debug
+
+/* RDTDepay signals and args */
+enum
+{
+  /* FILL ME */
+  LAST_SIGNAL
+};
+
+enum
+{
+  ARG_0,
+};
+
+static GstStaticPadTemplate gst_rdt_depay_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/vnd.rn-realmedia")
+    );
+
+static GstStaticPadTemplate gst_rdt_depay_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/x-rdt, "
+        "media = (string) \"application\", "
+        "clock-rate = (int) [1, MAX ], "
+        "encoding-name = (string) \"X-REAL-RDT\""
+        /* All optional parameters
+         *
+         * "config=" 
+         */
+    )
+    );
+
+GST_BOILERPLATE (GstRDTDepay, gst_rdt_depay, GstElement, GST_TYPE_ELEMENT);
+
+static void gst_rdt_depay_finalize (GObject * object);
+
+static GstStateChangeReturn gst_rdt_depay_change_state (GstElement *
+    element, GstStateChange transition);
+
+static gboolean gst_rdt_depay_setcaps (GstPad * pad, GstCaps * caps);
+static gboolean gst_rdt_depay_sink_event (GstPad * pad, GstEvent * event);
+static GstFlowReturn gst_rdt_depay_chain (GstPad * pad, GstBuffer * buf);
+
+static void
+gst_rdt_depay_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_depay_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_depay_sink_template);
+
+  gst_element_class_set_details_simple (element_class, "RDT packet parser",
+      "Codec/Depayloader/Network",
+      "Extracts RealMedia from RDT packets",
+      "Lutz Mueller <lutz at topfrose dot de>, "
+      "Wim Taymans <wim@fluendo.com>");
+
+  GST_DEBUG_CATEGORY_INIT (rdtdepay_debug, "rdtdepay",
+      0, "Depayloader for RDT RealMedia packets");
+}
+
+static void
+gst_rdt_depay_class_init (GstRDTDepayClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->finalize = gst_rdt_depay_finalize;
+
+  gstelement_class->change_state = gst_rdt_depay_change_state;
+}
+
+static void
+gst_rdt_depay_init (GstRDTDepay * rdtdepay, GstRDTDepayClass * klass)
+{
+  rdtdepay->sinkpad =
+      gst_pad_new_from_static_template (&gst_rdt_depay_sink_template, "sink");
+  gst_pad_set_chain_function (rdtdepay->sinkpad, gst_rdt_depay_chain);
+  gst_pad_set_event_function (rdtdepay->sinkpad, gst_rdt_depay_sink_event);
+  gst_pad_set_setcaps_function (rdtdepay->sinkpad, gst_rdt_depay_setcaps);
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtdepay), rdtdepay->sinkpad);
+
+  rdtdepay->srcpad =
+      gst_pad_new_from_static_template (&gst_rdt_depay_src_template, "src");
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtdepay), rdtdepay->srcpad);
+}
+
+static void
+gst_rdt_depay_finalize (GObject * object)
+{
+  GstRDTDepay *rdtdepay;
+
+  rdtdepay = GST_RDT_DEPAY (object);
+
+  if (rdtdepay->header)
+    gst_buffer_unref (rdtdepay->header);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static gboolean
+gst_rdt_depay_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstStructure *structure;
+  GstRDTDepay *rdtdepay;
+  GstCaps *srccaps;
+  gint clock_rate = 1000;       /* default */
+  const GValue *value;
+  GstBuffer *header;
+
+  rdtdepay = GST_RDT_DEPAY (GST_PAD_PARENT (pad));
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  if (gst_structure_has_field (structure, "clock-rate"))
+    gst_structure_get_int (structure, "clock-rate", &clock_rate);
+
+  /* config contains the RealMedia header as a buffer. */
+  value = gst_structure_get_value (structure, "config");
+  if (!value)
+    goto no_header;
+
+  header = gst_value_get_buffer (value);
+  if (!header)
+    goto no_header;
+
+  /* get other values for newsegment */
+  value = gst_structure_get_value (structure, "npt-start");
+  if (value && G_VALUE_HOLDS_UINT64 (value))
+    rdtdepay->npt_start = g_value_get_uint64 (value);
+  else
+    rdtdepay->npt_start = 0;
+  GST_DEBUG_OBJECT (rdtdepay, "NPT start %" G_GUINT64_FORMAT,
+      rdtdepay->npt_start);
+
+  value = gst_structure_get_value (structure, "npt-stop");
+  if (value && G_VALUE_HOLDS_UINT64 (value))
+    rdtdepay->npt_stop = g_value_get_uint64 (value);
+  else
+    rdtdepay->npt_stop = -1;
+
+  GST_DEBUG_OBJECT (rdtdepay, "NPT stop %" G_GUINT64_FORMAT,
+      rdtdepay->npt_stop);
+
+  value = gst_structure_get_value (structure, "play-speed");
+  if (value && G_VALUE_HOLDS_DOUBLE (value))
+    rdtdepay->play_speed = g_value_get_double (value);
+  else
+    rdtdepay->play_speed = 1.0;
+
+  value = gst_structure_get_value (structure, "play-scale");
+  if (value && G_VALUE_HOLDS_DOUBLE (value))
+    rdtdepay->play_scale = g_value_get_double (value);
+  else
+    rdtdepay->play_scale = 1.0;
+
+  /* caps seem good, configure element */
+  rdtdepay->clock_rate = clock_rate;
+
+  /* set caps on pad and on header */
+  srccaps = gst_caps_new_simple ("application/vnd.rn-realmedia", NULL);
+  gst_pad_set_caps (rdtdepay->srcpad, srccaps);
+  gst_caps_unref (srccaps);
+
+  if (rdtdepay->header)
+    gst_buffer_unref (rdtdepay->header);
+  rdtdepay->header = gst_buffer_ref (header);
+
+  return TRUE;
+
+  /* ERRORS */
+no_header:
+  {
+    GST_ERROR_OBJECT (rdtdepay, "no header found in caps, no 'config' field");
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_rdt_depay_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstRDTDepay *depay;
+  gboolean res = TRUE;
+
+  depay = GST_RDT_DEPAY (GST_OBJECT_PARENT (pad));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_STOP:
+      res = gst_pad_push_event (depay->srcpad, event);
+
+      gst_segment_init (&depay->segment, GST_FORMAT_UNDEFINED);
+      depay->need_newsegment = TRUE;
+      depay->next_seqnum = -1;
+      break;
+    case GST_EVENT_NEWSEGMENT:
+    {
+      gboolean update;
+      gdouble rate;
+      GstFormat fmt;
+      gint64 start, stop, position;
+
+      gst_event_parse_new_segment (event, &update, &rate, &fmt, &start, &stop,
+          &position);
+
+      gst_segment_set_newsegment (&depay->segment, update, rate, fmt,
+          start, stop, position);
+
+      /* don't pass the event downstream, we generate our own segment
+       * including the NTP time and other things we receive in caps */
+      gst_event_unref (event);
+      break;
+    }
+    default:
+      /* pass other events forward */
+      res = gst_pad_push_event (depay->srcpad, event);
+      break;
+  }
+  return res;
+}
+
+static GstEvent *
+create_segment_event (GstRDTDepay * depay, gboolean update,
+    GstClockTime position)
+{
+  GstEvent *event;
+  GstClockTime stop;
+
+  if (depay->npt_stop != -1)
+    stop = depay->npt_stop - depay->npt_start;
+  else
+    stop = -1;
+
+  event = gst_event_new_new_segment_full (update, depay->play_speed,
+      depay->play_scale, GST_FORMAT_TIME, position, stop,
+      position + depay->npt_start);
+
+  return event;
+}
+
+static GstFlowReturn
+gst_rdt_depay_push (GstRDTDepay * rdtdepay, GstBuffer * buffer)
+{
+  GstFlowReturn ret;
+
+  if (rdtdepay->need_newsegment) {
+    GstEvent *event;
+
+    event = create_segment_event (rdtdepay, FALSE, 0);
+    gst_pad_push_event (rdtdepay->srcpad, event);
+
+    rdtdepay->need_newsegment = FALSE;
+  }
+
+  buffer = gst_buffer_make_metadata_writable (buffer);
+  gst_buffer_set_caps (buffer, GST_PAD_CAPS (rdtdepay->srcpad));
+
+  if (rdtdepay->discont) {
+    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+    rdtdepay->discont = FALSE;
+  }
+  ret = gst_pad_push (rdtdepay->srcpad, buffer);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_rdt_depay_handle_data (GstRDTDepay * rdtdepay, GstClockTime outtime,
+    GstRDTPacket * packet)
+{
+  GstFlowReturn ret;
+  GstBuffer *outbuf;
+  guint8 *data, *outdata;
+  guint size;
+  guint16 stream_id;
+  guint32 timestamp;
+  gint gap;
+  guint16 seqnum;
+  guint8 flags;
+  guint16 outflags;
+
+  /* get pointers to the packet data */
+  gst_rdt_packet_data_peek_data (packet, &data, &size);
+
+  outbuf = gst_buffer_new_and_alloc (12 + size);
+  outdata = GST_BUFFER_DATA (outbuf);
+  GST_BUFFER_TIMESTAMP (outbuf) = outtime;
+
+  GST_DEBUG_OBJECT (rdtdepay, "have size %u", size);
+
+  /* copy over some things */
+  stream_id = gst_rdt_packet_data_get_stream_id (packet);
+  timestamp = gst_rdt_packet_data_get_timestamp (packet);
+  flags = gst_rdt_packet_data_get_flags (packet);
+
+  seqnum = gst_rdt_packet_data_get_seq (packet);
+
+  GST_DEBUG_OBJECT (rdtdepay, "stream_id %u, timestamp %u, seqnum %d, flags %d",
+      stream_id, timestamp, seqnum, flags);
+
+  if (rdtdepay->next_seqnum != -1) {
+    gap = gst_rdt_buffer_compare_seqnum (seqnum, rdtdepay->next_seqnum);
+
+    /* if we have no gap, all is fine */
+    if (G_UNLIKELY (gap != 0)) {
+      GST_LOG_OBJECT (rdtdepay, "got packet %u, expected %u, gap %d", seqnum,
+          rdtdepay->next_seqnum, gap);
+      if (gap < 0) {
+        /* seqnum > next_seqnum, we are missing some packets, this is always a
+         * DISCONT. */
+        GST_LOG_OBJECT (rdtdepay, "%d missing packets", gap);
+        rdtdepay->discont = TRUE;
+      } else {
+        /* seqnum < next_seqnum, we have seen this packet before or the sender
+         * could be restarted. If the packet is not too old, we throw it away as
+         * a duplicate, otherwise we mark discont and continue. 100 misordered
+         * packets is a good threshold. See also RFC 4737. */
+        if (gap < 100)
+          goto dropping;
+
+        GST_LOG_OBJECT (rdtdepay,
+            "%d > 100, packet too old, sender likely restarted", gap);
+        rdtdepay->discont = TRUE;
+      }
+    }
+  }
+  rdtdepay->next_seqnum = (seqnum + 1);
+  if (rdtdepay->next_seqnum == 0xff00)
+    rdtdepay->next_seqnum = 0;
+
+  if ((flags & 1) == 0)
+    outflags = 2;
+  else
+    outflags = 0;
+
+  GST_WRITE_UINT16_BE (outdata + 0, 0); /* version   */
+  GST_WRITE_UINT16_BE (outdata + 2, size + 12); /* length    */
+  GST_WRITE_UINT16_BE (outdata + 4, stream_id); /* stream    */
+  GST_WRITE_UINT32_BE (outdata + 6, timestamp); /* timestamp */
+  GST_WRITE_UINT16_BE (outdata + 10, outflags); /* flags     */
+  memcpy (outdata + 12, data, size);
+
+  GST_DEBUG_OBJECT (rdtdepay, "Pushing packet, outtime %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (outtime));
+
+  ret = gst_rdt_depay_push (rdtdepay, outbuf);
+
+  return ret;
+
+  /* ERRORS */
+dropping:
+  {
+    GST_WARNING_OBJECT (rdtdepay, "%d <= 100, dropping old packet", gap);
+    return GST_FLOW_OK;
+  }
+}
+
+static GstFlowReturn
+gst_rdt_depay_chain (GstPad * pad, GstBuffer * buf)
+{
+  GstRDTDepay *rdtdepay;
+  GstFlowReturn ret;
+  GstClockTime timestamp;
+  gboolean more;
+  GstRDTPacket packet;
+
+  rdtdepay = GST_RDT_DEPAY (GST_PAD_PARENT (pad));
+
+  if (GST_BUFFER_IS_DISCONT (buf)) {
+    GST_LOG_OBJECT (rdtdepay, "received discont");
+    rdtdepay->discont = TRUE;
+  }
+
+  if (rdtdepay->header) {
+    GstBuffer *out;
+
+    out = rdtdepay->header;
+    rdtdepay->header = NULL;
+
+    /* push header data first */
+    gst_rdt_depay_push (rdtdepay, out);
+  }
+
+  /* save timestamp */
+  timestamp = GST_BUFFER_TIMESTAMP (buf);
+
+  ret = GST_FLOW_OK;
+
+  GST_LOG_OBJECT (rdtdepay, "received buffer timestamp %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (timestamp));
+
+  /* data is in RDT format. */
+  more = gst_rdt_buffer_get_first_packet (buf, &packet);
+  while (more) {
+    GstRDTType type;
+
+    type = gst_rdt_packet_get_type (&packet);
+    GST_DEBUG_OBJECT (rdtdepay, "Have packet of type %04x", type);
+
+    if (GST_RDT_IS_DATA_TYPE (type)) {
+      GST_DEBUG_OBJECT (rdtdepay, "We have a data packet");
+      ret = gst_rdt_depay_handle_data (rdtdepay, timestamp, &packet);
+    } else {
+      switch (type) {
+        default:
+          GST_DEBUG_OBJECT (rdtdepay, "Ignoring packet");
+          break;
+      }
+    }
+    if (ret != GST_FLOW_OK)
+      break;
+
+    more = gst_rdt_packet_move_to_next (&packet);
+  }
+
+  gst_buffer_unref (buf);
+
+  return ret;
+}
+
+static GstStateChangeReturn
+gst_rdt_depay_change_state (GstElement * element, GstStateChange transition)
+{
+  GstRDTDepay *rdtdepay;
+  GstStateChangeReturn ret;
+
+  rdtdepay = GST_RDT_DEPAY (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      gst_segment_init (&rdtdepay->segment, GST_FORMAT_UNDEFINED);
+      rdtdepay->next_seqnum = -1;
+      rdtdepay->need_newsegment = TRUE;
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      if (rdtdepay->header)
+        gst_buffer_unref (rdtdepay->header);
+      rdtdepay->header = NULL;
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+  return ret;
+}
+
+gboolean
+gst_rdt_depay_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "rdtdepay",
+      GST_RANK_MARGINAL, GST_TYPE_RDT_DEPAY);
+}
diff --git a/gst/realmedia/rdtdepay.h b/gst/realmedia/rdtdepay.h
new file mode 100644 (file)
index 0000000..f75b027
--- /dev/null
@@ -0,0 +1,74 @@
+/* GStreamer
+ * Copyright (C) <2006> Lutz Mueller <lutz at topfrose dot de>
+ *               <2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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_RDT_DEPAY_H__
+#define __GST_RDT_DEPAY_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RDT_DEPAY \
+  (gst_rdt_depay_get_type())
+#define GST_RDT_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RDT_DEPAY,GstRDTDepay))
+#define GST_RDT_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RDT_DEPAY,GstRDTDepayClass))
+#define GST_IS_RDT_DEPAY(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RDT_DEPAY))
+#define GST_IS_RDT_DEPAY_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RDT_DEPAY))
+
+typedef struct _GstRDTDepay GstRDTDepay;
+typedef struct _GstRDTDepayClass GstRDTDepayClass;
+
+struct _GstRDTDepay
+{
+  GstElement parent;
+
+  GstPad *sinkpad;
+  GstPad *srcpad;
+
+  guint clock_rate;
+  GstClockTime npt_start;
+  GstClockTime npt_stop;
+  gdouble play_speed;
+  gdouble play_scale;
+
+  guint32 next_seqnum;
+
+  gboolean discont;
+  gboolean need_newsegment;
+  GstSegment segment;
+  GstBuffer *header;
+};
+
+struct _GstRDTDepayClass
+{
+  GstElementClass parent_class;
+};
+
+GType gst_rdt_depay_get_type (void);
+
+gboolean gst_rdt_depay_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_RDT_DEPAY_H__ */
diff --git a/gst/realmedia/rdtjitterbuffer.c b/gst/realmedia/rdtjitterbuffer.c
new file mode 100644 (file)
index 0000000..1e34c50
--- /dev/null
@@ -0,0 +1,531 @@
+/* GStreamer
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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.
+ */
+#include <string.h>
+#include <stdlib.h>
+
+#include "rdtjitterbuffer.h"
+#include "gstrdtbuffer.h"
+
+GST_DEBUG_CATEGORY_STATIC (rdt_jitter_buffer_debug);
+#define GST_CAT_DEFAULT rdt_jitter_buffer_debug
+
+#define MAX_WINDOW     RDT_JITTER_BUFFER_MAX_WINDOW
+#define MAX_TIME       (2 * GST_SECOND)
+
+/* signals and args */
+enum
+{
+  LAST_SIGNAL
+};
+
+enum
+{
+  PROP_0
+};
+
+/* GObject vmethods */
+static void rdt_jitter_buffer_finalize (GObject * object);
+
+/* static guint rdt_jitter_buffer_signals[LAST_SIGNAL] = { 0 }; */
+
+G_DEFINE_TYPE (RDTJitterBuffer, rdt_jitter_buffer, G_TYPE_OBJECT);
+
+static void
+rdt_jitter_buffer_class_init (RDTJitterBufferClass * klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = (GObjectClass *) klass;
+
+  gobject_class->finalize = rdt_jitter_buffer_finalize;
+
+  GST_DEBUG_CATEGORY_INIT (rdt_jitter_buffer_debug, "rdtjitterbuffer", 0,
+      "RDT Jitter Buffer");
+}
+
+static void
+rdt_jitter_buffer_init (RDTJitterBuffer * jbuf)
+{
+  jbuf->packets = g_queue_new ();
+
+  rdt_jitter_buffer_reset_skew (jbuf);
+}
+
+static void
+rdt_jitter_buffer_finalize (GObject * object)
+{
+  RDTJitterBuffer *jbuf;
+
+  jbuf = RDT_JITTER_BUFFER_CAST (object);
+
+  rdt_jitter_buffer_flush (jbuf);
+  g_queue_free (jbuf->packets);
+
+  G_OBJECT_CLASS (rdt_jitter_buffer_parent_class)->finalize (object);
+}
+
+/**
+ * rdt_jitter_buffer_new:
+ *
+ * Create an #RDTJitterBuffer.
+ *
+ * Returns: a new #RDTJitterBuffer. Use g_object_unref() after usage.
+ */
+RDTJitterBuffer *
+rdt_jitter_buffer_new (void)
+{
+  RDTJitterBuffer *jbuf;
+
+  jbuf = g_object_new (RDT_TYPE_JITTER_BUFFER, NULL);
+
+  return jbuf;
+}
+
+void
+rdt_jitter_buffer_reset_skew (RDTJitterBuffer * jbuf)
+{
+  jbuf->base_time = -1;
+  jbuf->base_rtptime = -1;
+  jbuf->ext_rtptime = -1;
+  jbuf->window_pos = 0;
+  jbuf->window_filling = TRUE;
+  jbuf->window_min = 0;
+  jbuf->skew = 0;
+  jbuf->prev_send_diff = -1;
+}
+
+/* For the clock skew we use a windowed low point averaging algorithm as can be
+ * found in http://www.grame.fr/pub/TR-050601.pdf. The idea is that the jitter is
+ * composed of:
+ *
+ *  J = N + n
+ *
+ *   N   : a constant network delay.
+ *   n   : random added noise. The noise is concentrated around 0
+ *
+ * In the receiver we can track the elapsed time at the sender with:
+ *
+ *  send_diff(i) = (Tsi - Ts0);
+ *
+ *   Tsi : The time at the sender at packet i
+ *   Ts0 : The time at the sender at the first packet
+ *
+ * This is the difference between the RDT timestamp in the first received packet
+ * and the current packet.
+ *
+ * At the receiver we have to deal with the jitter introduced by the network.
+ *
+ *  recv_diff(i) = (Tri - Tr0)
+ *
+ *   Tri : The time at the receiver at packet i
+ *   Tr0 : The time at the receiver at the first packet
+ *
+ * Both of these values contain a jitter Ji, a jitter for packet i, so we can
+ * write:
+ *
+ *  recv_diff(i) = (Cri + D + ni) - (Cr0 + D + n0))
+ *
+ *    Cri    : The time of the clock at the receiver for packet i
+ *    D + ni : The jitter when receiving packet i
+ *
+ * We see that the network delay is irrelevant here as we can elliminate D:
+ *
+ *  recv_diff(i) = (Cri + ni) - (Cr0 + n0))
+ *
+ * The drift is now expressed as:
+ *
+ *  Drift(i) = recv_diff(i) - send_diff(i);
+ *
+ * We now keep the W latest values of Drift and find the minimum (this is the
+ * one with the lowest network jitter and thus the one which is least affected
+ * by it). We average this lowest value to smooth out the resulting network skew.
+ *
+ * Both the window and the weighting used for averaging influence the accuracy
+ * of the drift estimation. Finding the correct parameters turns out to be a
+ * compromise between accuracy and inertia. 
+ *
+ * We use a 2 second window or up to 512 data points, which is statistically big
+ * enough to catch spikes (FIXME, detect spikes).
+ * We also use a rather large weighting factor (125) to smoothly adapt. During
+ * startup, when filling the window, we use a parabolic weighting factor, the
+ * more the window is filled, the faster we move to the detected possible skew.
+ *
+ * Returns: @time adjusted with the clock skew.
+ */
+static GstClockTime
+calculate_skew (RDTJitterBuffer * jbuf, guint32 rtptime, GstClockTime time,
+    guint32 clock_rate)
+{
+  guint64 ext_rtptime;
+  guint64 send_diff, recv_diff;
+  gint64 delta;
+  gint64 old;
+  gint pos, i;
+  GstClockTime gstrtptime, out_time;
+
+  //ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime);
+  ext_rtptime = rtptime;
+
+  gstrtptime = gst_util_uint64_scale_int (ext_rtptime, GST_SECOND, clock_rate);
+
+again:
+  /* first time, lock on to time and gstrtptime */
+  if (jbuf->base_time == -1)
+    jbuf->base_time = time;
+  if (jbuf->base_rtptime == -1)
+    jbuf->base_rtptime = gstrtptime;
+
+  if (gstrtptime >= jbuf->base_rtptime)
+    send_diff = gstrtptime - jbuf->base_rtptime;
+  else {
+    /* elapsed time at sender, timestamps can go backwards and thus be smaller
+     * than our base time, take a new base time in that case. */
+    GST_DEBUG ("backward timestamps at server, taking new base time");
+    jbuf->base_rtptime = gstrtptime;
+    jbuf->base_time = time;
+    send_diff = 0;
+  }
+
+  GST_DEBUG ("extrtp %" G_GUINT64_FORMAT ", gstrtp %" GST_TIME_FORMAT ", base %"
+      GST_TIME_FORMAT ", send_diff %" GST_TIME_FORMAT, ext_rtptime,
+      GST_TIME_ARGS (gstrtptime), GST_TIME_ARGS (jbuf->base_rtptime),
+      GST_TIME_ARGS (send_diff));
+
+  if (jbuf->prev_send_diff != -1 && time != -1) {
+    gint64 delta_diff;
+
+    if (send_diff > jbuf->prev_send_diff)
+      delta_diff = send_diff - jbuf->prev_send_diff;
+    else
+      delta_diff = jbuf->prev_send_diff - send_diff;
+
+    /* server changed rtp timestamps too quickly, reset skew detection and start
+     * again. This value is sortof arbitrary and can be a bad measurement up if
+     * there are many packets missing because then we get a big gap that is
+     * unrelated to a timestamp switch. */
+    if (delta_diff > GST_SECOND) {
+      GST_DEBUG ("delta changed too quickly %" GST_TIME_FORMAT " reset skew",
+          GST_TIME_ARGS (delta_diff));
+      rdt_jitter_buffer_reset_skew (jbuf);
+      goto again;
+    }
+  }
+  jbuf->prev_send_diff = send_diff;
+
+  /* we don't have an arrival timestamp so we can't do skew detection. we
+   * should still apply a timestamp based on RDT timestamp and base_time */
+  if (time == -1)
+    goto no_skew;
+
+  /* elapsed time at receiver, includes the jitter */
+  recv_diff = time - jbuf->base_time;
+
+  GST_DEBUG ("time %" GST_TIME_FORMAT ", base %" GST_TIME_FORMAT ", recv_diff %"
+      GST_TIME_FORMAT, GST_TIME_ARGS (time), GST_TIME_ARGS (jbuf->base_time),
+      GST_TIME_ARGS (recv_diff));
+
+  /* measure the diff */
+  delta = ((gint64) recv_diff) - ((gint64) send_diff);
+
+  pos = jbuf->window_pos;
+
+  if (jbuf->window_filling) {
+    /* we are filling the window */
+    GST_DEBUG ("filling %d, delta %" G_GINT64_FORMAT, pos, delta);
+    jbuf->window[pos++] = delta;
+    /* calc the min delta we observed */
+    if (pos == 1 || delta < jbuf->window_min)
+      jbuf->window_min = delta;
+
+    if (send_diff >= MAX_TIME || pos >= MAX_WINDOW) {
+      jbuf->window_size = pos;
+
+      /* window filled */
+      GST_DEBUG ("min %" G_GINT64_FORMAT, jbuf->window_min);
+
+      /* the skew is now the min */
+      jbuf->skew = jbuf->window_min;
+      jbuf->window_filling = FALSE;
+    } else {
+      gint perc_time, perc_window, perc;
+
+      /* figure out how much we filled the window, this depends on the amount of
+       * time we have or the max number of points we keep. */
+      perc_time = send_diff * 100 / MAX_TIME;
+      perc_window = pos * 100 / MAX_WINDOW;
+      perc = MAX (perc_time, perc_window);
+
+      /* make a parabolic function, the closer we get to the MAX, the more value
+       * we give to the scaling factor of the new value */
+      perc = perc * perc;
+
+      /* quickly go to the min value when we are filling up, slowly when we are
+       * just starting because we're not sure it's a good value yet. */
+      jbuf->skew =
+          (perc * jbuf->window_min + ((10000 - perc) * jbuf->skew)) / 10000;
+      jbuf->window_size = pos + 1;
+    }
+  } else {
+    /* pick old value and store new value. We keep the previous value in order
+     * to quickly check if the min of the window changed */
+    old = jbuf->window[pos];
+    jbuf->window[pos++] = delta;
+
+    if (delta <= jbuf->window_min) {
+      /* if the new value we inserted is smaller or equal to the current min,
+       * it becomes the new min */
+      jbuf->window_min = delta;
+    } else if (old == jbuf->window_min) {
+      gint64 min = G_MAXINT64;
+
+      /* if we removed the old min, we have to find a new min */
+      for (i = 0; i < jbuf->window_size; i++) {
+        /* we found another value equal to the old min, we can stop searching now */
+        if (jbuf->window[i] == old) {
+          min = old;
+          break;
+        }
+        if (jbuf->window[i] < min)
+          min = jbuf->window[i];
+      }
+      jbuf->window_min = min;
+    }
+    /* average the min values */
+    jbuf->skew = (jbuf->window_min + (124 * jbuf->skew)) / 125;
+    GST_DEBUG ("delta %" G_GINT64_FORMAT ", new min: %" G_GINT64_FORMAT,
+        delta, jbuf->window_min);
+  }
+  /* wrap around in the window */
+  if (pos >= jbuf->window_size)
+    pos = 0;
+  jbuf->window_pos = pos;
+
+no_skew:
+  /* the output time is defined as the base timestamp plus the RDT time
+   * adjusted for the clock skew .*/
+  out_time = jbuf->base_time + send_diff + jbuf->skew;
+
+  GST_DEBUG ("skew %" G_GINT64_FORMAT ", out %" GST_TIME_FORMAT,
+      jbuf->skew, GST_TIME_ARGS (out_time));
+
+  return out_time;
+}
+
+/**
+ * rdt_jitter_buffer_insert:
+ * @jbuf: an #RDTJitterBuffer
+ * @buf: a buffer
+ * @time: a running_time when this buffer was received in nanoseconds
+ * @clock_rate: the clock-rate of the payload of @buf
+ * @tail: TRUE when the tail element changed.
+ *
+ * Inserts @buf into the packet queue of @jbuf. The sequence number of the
+ * packet will be used to sort the packets. This function takes ownerhip of
+ * @buf when the function returns %TRUE.
+ * @buf should have writable metadata when calling this function.
+ *
+ * Returns: %FALSE if a packet with the same number already existed.
+ */
+gboolean
+rdt_jitter_buffer_insert (RDTJitterBuffer * jbuf, GstBuffer * buf,
+    GstClockTime time, guint32 clock_rate, gboolean * tail)
+{
+  GList *list;
+  guint32 rtptime;
+  guint16 seqnum;
+  GstRDTPacket packet;
+  gboolean more;
+
+  g_return_val_if_fail (jbuf != NULL, FALSE);
+  g_return_val_if_fail (buf != NULL, FALSE);
+
+  more = gst_rdt_buffer_get_first_packet (buf, &packet);
+  /* programmer error */
+  g_return_val_if_fail (more == TRUE, FALSE);
+
+  seqnum = gst_rdt_packet_data_get_seq (&packet);
+  /* do skew calculation by measuring the difference between rtptime and the
+   * receive time, this function will retimestamp @buf with the skew corrected
+   * running time. */
+  rtptime = gst_rdt_packet_data_get_timestamp (&packet);
+
+  /* loop the list to skip strictly smaller seqnum buffers */
+  for (list = jbuf->packets->head; list; list = g_list_next (list)) {
+    guint16 qseq;
+    gint gap;
+
+    more =
+        gst_rdt_buffer_get_first_packet (GST_BUFFER_CAST (list->data), &packet);
+    /* programmer error */
+    g_return_val_if_fail (more == TRUE, FALSE);
+
+    qseq = gst_rdt_packet_data_get_seq (&packet);
+
+    /* compare the new seqnum to the one in the buffer */
+    gap = gst_rdt_buffer_compare_seqnum (seqnum, qseq);
+
+    /* we hit a packet with the same seqnum, notify a duplicate */
+    if (G_UNLIKELY (gap == 0))
+      goto duplicate;
+
+    /* seqnum > qseq, we can stop looking */
+    if (G_LIKELY (gap < 0))
+      break;
+  }
+
+
+  if (clock_rate) {
+    time = calculate_skew (jbuf, rtptime, time, clock_rate);
+    GST_BUFFER_TIMESTAMP (buf) = time;
+  }
+
+  if (list)
+    g_queue_insert_before (jbuf->packets, list, buf);
+  else
+    g_queue_push_tail (jbuf->packets, buf);
+
+  /* tail was changed when we did not find a previous packet, we set the return
+   * flag when requested. */
+  if (tail)
+    *tail = (list == NULL);
+
+  return TRUE;
+
+  /* ERRORS */
+duplicate:
+  {
+    GST_WARNING ("duplicate packet %d found", (gint) seqnum);
+    return FALSE;
+  }
+}
+
+/**
+ * rdt_jitter_buffer_pop:
+ * @jbuf: an #RDTJitterBuffer
+ *
+ * Pops the oldest buffer from the packet queue of @jbuf. The popped buffer will
+ * have its timestamp adjusted with the incomming running_time and the detected
+ * clock skew.
+ *
+ * Returns: a #GstBuffer or %NULL when there was no packet in the queue.
+ */
+GstBuffer *
+rdt_jitter_buffer_pop (RDTJitterBuffer * jbuf)
+{
+  GstBuffer *buf;
+
+  g_return_val_if_fail (jbuf != NULL, FALSE);
+
+  buf = g_queue_pop_tail (jbuf->packets);
+
+  return buf;
+}
+
+/**
+ * rdt_jitter_buffer_peek:
+ * @jbuf: an #RDTJitterBuffer
+ *
+ * Peek the oldest buffer from the packet queue of @jbuf. Register a callback
+ * with rdt_jitter_buffer_set_tail_changed() to be notified when an older packet
+ * was inserted in the queue.
+ *
+ * Returns: a #GstBuffer or %NULL when there was no packet in the queue.
+ */
+GstBuffer *
+rdt_jitter_buffer_peek (RDTJitterBuffer * jbuf)
+{
+  GstBuffer *buf;
+
+  g_return_val_if_fail (jbuf != NULL, FALSE);
+
+  buf = g_queue_peek_tail (jbuf->packets);
+
+  return buf;
+}
+
+/**
+ * rdt_jitter_buffer_flush:
+ * @jbuf: an #RDTJitterBuffer
+ *
+ * Flush all packets from the jitterbuffer.
+ */
+void
+rdt_jitter_buffer_flush (RDTJitterBuffer * jbuf)
+{
+  GstBuffer *buffer;
+
+  g_return_if_fail (jbuf != NULL);
+
+  while ((buffer = g_queue_pop_head (jbuf->packets)))
+    gst_buffer_unref (buffer);
+}
+
+/**
+ * rdt_jitter_buffer_num_packets:
+ * @jbuf: an #RDTJitterBuffer
+ *
+ * Get the number of packets currently in "jbuf.
+ *
+ * Returns: The number of packets in @jbuf.
+ */
+guint
+rdt_jitter_buffer_num_packets (RDTJitterBuffer * jbuf)
+{
+  g_return_val_if_fail (jbuf != NULL, 0);
+
+  return jbuf->packets->length;
+}
+
+/**
+ * rdt_jitter_buffer_get_ts_diff:
+ * @jbuf: an #RDTJitterBuffer
+ *
+ * Get the difference between the timestamps of first and last packet in the
+ * jitterbuffer.
+ *
+ * Returns: The difference expressed in the timestamp units of the packets.
+ */
+guint32
+rdt_jitter_buffer_get_ts_diff (RDTJitterBuffer * jbuf)
+{
+  guint64 high_ts, low_ts;
+  GstBuffer *high_buf, *low_buf;
+  guint32 result;
+
+  g_return_val_if_fail (jbuf != NULL, 0);
+
+  high_buf = g_queue_peek_head (jbuf->packets);
+  low_buf = g_queue_peek_tail (jbuf->packets);
+
+  if (!high_buf || !low_buf || high_buf == low_buf)
+    return 0;
+
+  //high_ts = gst_rtp_buffer_get_timestamp (high_buf);
+  //low_ts = gst_rtp_buffer_get_timestamp (low_buf);
+  high_ts = 0;
+  low_ts = 0;
+
+  /* it needs to work if ts wraps */
+  if (high_ts >= low_ts) {
+    result = (guint32) (high_ts - low_ts);
+  } else {
+    result = (guint32) (high_ts + G_MAXUINT32 + 1 - low_ts);
+  }
+  return result;
+}
diff --git a/gst/realmedia/rdtjitterbuffer.h b/gst/realmedia/rdtjitterbuffer.h
new file mode 100644 (file)
index 0000000..26a9895
--- /dev/null
@@ -0,0 +1,91 @@
+/* GStreamer
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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 __RDT_JITTER_BUFFER_H__
+#define __RDT_JITTER_BUFFER_H__
+
+#include <gst/gst.h>
+
+typedef struct _RDTJitterBuffer RDTJitterBuffer;
+typedef struct _RDTJitterBufferClass RDTJitterBufferClass;
+
+#define RDT_TYPE_JITTER_BUFFER             (rdt_jitter_buffer_get_type())
+#define RDT_JITTER_BUFFER(src)             (G_TYPE_CHECK_INSTANCE_CAST((src),RDT_TYPE_JITTER_BUFFER,RDTJitterBuffer))
+#define RDT_JITTER_BUFFER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),RDT_TYPE_JITTER_BUFFER,RDTJitterBufferClass))
+#define RDT_IS_JITTER_BUFFER(src)          (G_TYPE_CHECK_INSTANCE_TYPE((src),RDT_TYPE_JITTER_BUFFER))
+#define RDT_IS_JITTER_BUFFER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),RDT_TYPE_JITTER_BUFFER))
+#define RDT_JITTER_BUFFER_CAST(src)        ((RDTJitterBuffer *)(src))
+
+/**
+ * RTPTailChanged:
+ * @jbuf: an #RDTJitterBuffer
+ * @user_data: user data specified when registering
+ *
+ * This callback will be called when the tail buffer of @jbuf changed.
+ */
+typedef void (*RTPTailChanged) (RDTJitterBuffer *jbuf, gpointer user_data);
+
+#define RDT_JITTER_BUFFER_MAX_WINDOW 512
+/**
+ * RDTJitterBuffer:
+ *
+ * A JitterBuffer in the #RTPSession
+ */
+struct _RDTJitterBuffer {
+  GObject        object;
+
+  GQueue        *packets;
+
+  /* for calculating skew */
+  GstClockTime   base_time;
+  GstClockTime   base_rtptime;
+  guint64        ext_rtptime;
+  gint64         window[RDT_JITTER_BUFFER_MAX_WINDOW];
+  guint          window_pos;
+  guint          window_size;
+  gboolean       window_filling;
+  gint64         window_min;
+  gint64         skew;
+  gint64         prev_send_diff;
+};
+
+struct _RDTJitterBufferClass {
+  GObjectClass   parent_class;
+};
+
+GType rdt_jitter_buffer_get_type (void);
+
+/* managing lifetime */
+RDTJitterBuffer*      rdt_jitter_buffer_new              (void);
+
+void                  rdt_jitter_buffer_reset_skew       (RDTJitterBuffer *jbuf);
+
+gboolean              rdt_jitter_buffer_insert           (RDTJitterBuffer *jbuf, GstBuffer *buf,
+                                                         GstClockTime time,
+                                                         guint32 clock_rate,
+                                                         gboolean *tail);
+GstBuffer *           rdt_jitter_buffer_peek             (RDTJitterBuffer *jbuf);
+GstBuffer *           rdt_jitter_buffer_pop              (RDTJitterBuffer *jbuf);
+
+void                  rdt_jitter_buffer_flush            (RDTJitterBuffer *jbuf);
+
+guint                 rdt_jitter_buffer_num_packets      (RDTJitterBuffer *jbuf);
+guint32               rdt_jitter_buffer_get_ts_diff      (RDTJitterBuffer *jbuf);
+
+#endif /* __RDT_JITTER_BUFFER_H__ */
diff --git a/gst/realmedia/rdtmanager.c b/gst/realmedia/rdtmanager.c
new file mode 100644 (file)
index 0000000..a09e9f1
--- /dev/null
@@ -0,0 +1,1327 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+/*
+ * Unless otherwise indicated, Source Code is licensed under MIT license.
+ * See further explanation attached in License Statement (distributed in the file
+ * LICENSE).
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+/* Element-Checklist-Version: 5 */
+
+/**
+ * SECTION:element-rdtmanager
+ * @see_also: GstRtspSrc
+ *
+ * A simple RTP session manager used internally by rtspsrc.
+ *
+ * Last reviewed on 2006-06-20 (0.10.4)
+ */
+
+/* #define HAVE_RTCP */
+
+#include "gstrdtbuffer.h"
+#include "rdtmanager.h"
+#include "rdtjitterbuffer.h"
+
+#include <gst/glib-compat-private.h>
+
+#include <stdio.h>
+
+GST_DEBUG_CATEGORY_STATIC (rdtmanager_debug);
+#define GST_CAT_DEFAULT (rdtmanager_debug)
+
+/* GstRDTManager signals and args */
+enum
+{
+  SIGNAL_REQUEST_PT_MAP,
+  SIGNAL_CLEAR_PT_MAP,
+
+  SIGNAL_ON_NEW_SSRC,
+  SIGNAL_ON_SSRC_COLLISION,
+  SIGNAL_ON_SSRC_VALIDATED,
+  SIGNAL_ON_SSRC_ACTIVE,
+  SIGNAL_ON_SSRC_SDES,
+  SIGNAL_ON_BYE_SSRC,
+  SIGNAL_ON_BYE_TIMEOUT,
+  SIGNAL_ON_TIMEOUT,
+  LAST_SIGNAL
+};
+
+#define DEFAULT_LATENCY_MS      200
+
+enum
+{
+  PROP_0,
+  PROP_LATENCY
+};
+
+static GstStaticPadTemplate gst_rdt_manager_recv_rtp_sink_template =
+GST_STATIC_PAD_TEMPLATE ("recv_rtp_sink_%d",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS ("application/x-rdt")
+    );
+
+static GstStaticPadTemplate gst_rdt_manager_recv_rtcp_sink_template =
+GST_STATIC_PAD_TEMPLATE ("recv_rtcp_sink_%d",
+    GST_PAD_SINK,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS ("application/x-rtcp")
+    );
+
+static GstStaticPadTemplate gst_rdt_manager_recv_rtp_src_template =
+GST_STATIC_PAD_TEMPLATE ("recv_rtp_src_%d_%d_%d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS ("application/x-rdt")
+    );
+
+static GstStaticPadTemplate gst_rdt_manager_rtcp_src_template =
+GST_STATIC_PAD_TEMPLATE ("rtcp_src_%d",
+    GST_PAD_SRC,
+    GST_PAD_REQUEST,
+    GST_STATIC_CAPS ("application/x-rtcp")
+    );
+
+static void gst_rdt_manager_finalize (GObject * object);
+static void gst_rdt_manager_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_rdt_manager_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+
+static gboolean gst_rdt_manager_query_src (GstPad * pad, GstQuery * query);
+static gboolean gst_rdt_manager_src_activate_push (GstPad * pad,
+    gboolean active);
+
+static GstClock *gst_rdt_manager_provide_clock (GstElement * element);
+static GstStateChangeReturn gst_rdt_manager_change_state (GstElement * element,
+    GstStateChange transition);
+static GstPad *gst_rdt_manager_request_new_pad (GstElement * element,
+    GstPadTemplate * templ, const gchar * name);
+static void gst_rdt_manager_release_pad (GstElement * element, GstPad * pad);
+
+static gboolean gst_rdt_manager_parse_caps (GstRDTManager * rdtmanager,
+    GstRDTManagerSession * session, GstCaps * caps);
+static gboolean gst_rdt_manager_setcaps (GstPad * pad, GstCaps * caps);
+
+static GstFlowReturn gst_rdt_manager_chain_rdt (GstPad * pad,
+    GstBuffer * buffer);
+static GstFlowReturn gst_rdt_manager_chain_rtcp (GstPad * pad,
+    GstBuffer * buffer);
+static void gst_rdt_manager_loop (GstPad * pad);
+
+static guint gst_rdt_manager_signals[LAST_SIGNAL] = { 0 };
+
+#define JBUF_LOCK(sess)   (g_mutex_lock ((sess)->jbuf_lock))
+
+#define JBUF_LOCK_CHECK(sess,label) G_STMT_START {    \
+  JBUF_LOCK (sess);                                   \
+  if (sess->srcresult != GST_FLOW_OK)                 \
+    goto label;                                       \
+} G_STMT_END
+
+#define JBUF_UNLOCK(sess) (g_mutex_unlock ((sess)->jbuf_lock))
+#define JBUF_WAIT(sess)   (g_cond_wait ((sess)->jbuf_cond, (sess)->jbuf_lock))
+
+#define JBUF_WAIT_CHECK(sess,label) G_STMT_START {    \
+  JBUF_WAIT(sess);                                    \
+  if (sess->srcresult != GST_FLOW_OK)                 \
+    goto label;                                       \
+} G_STMT_END
+
+#define JBUF_SIGNAL(sess) (g_cond_signal ((sess)->jbuf_cond))
+
+/* Manages the receiving end of the packets.
+ *
+ * There is one such structure for each RTP session (audio/video/...).
+ * We get the RTP/RTCP packets and stuff them into the session manager. 
+ */
+struct _GstRDTManagerSession
+{
+  /* session id */
+  gint id;
+  /* the parent bin */
+  GstRDTManager *dec;
+
+  gboolean active;
+  /* we only support one ssrc and one pt */
+  guint32 ssrc;
+  guint8 pt;
+  gint clock_rate;
+  GstCaps *caps;
+  gint64 clock_base;
+
+  GstSegment segment;
+
+  /* the last seqnum we pushed out */
+  guint32 last_popped_seqnum;
+  /* the next expected seqnum */
+  guint32 next_seqnum;
+  /* last output time */
+  GstClockTime last_out_time;
+
+  /* the pads of the session */
+  GstPad *recv_rtp_sink;
+  GstPad *recv_rtp_src;
+  GstPad *recv_rtcp_sink;
+  GstPad *rtcp_src;
+
+  GstFlowReturn srcresult;
+  gboolean blocked;
+  gboolean eos;
+  gboolean waiting;
+  gboolean discont;
+  GstClockID clock_id;
+
+  /* jitterbuffer, lock and cond */
+  RDTJitterBuffer *jbuf;
+  GMutex *jbuf_lock;
+  GCond *jbuf_cond;
+
+  /* some accounting */
+  guint64 num_late;
+  guint64 num_duplicates;
+};
+
+/* find a session with the given id */
+static GstRDTManagerSession *
+find_session_by_id (GstRDTManager * rdtmanager, gint id)
+{
+  GSList *walk;
+
+  for (walk = rdtmanager->sessions; walk; walk = g_slist_next (walk)) {
+    GstRDTManagerSession *sess = (GstRDTManagerSession *) walk->data;
+
+    if (sess->id == id)
+      return sess;
+  }
+  return NULL;
+}
+
+/* create a session with the given id */
+static GstRDTManagerSession *
+create_session (GstRDTManager * rdtmanager, gint id)
+{
+  GstRDTManagerSession *sess;
+
+  sess = g_new0 (GstRDTManagerSession, 1);
+  sess->id = id;
+  sess->dec = rdtmanager;
+  sess->jbuf = rdt_jitter_buffer_new ();
+  sess->jbuf_lock = g_mutex_new ();
+  sess->jbuf_cond = g_cond_new ();
+  rdtmanager->sessions = g_slist_prepend (rdtmanager->sessions, sess);
+
+  return sess;
+}
+
+static gboolean
+activate_session (GstRDTManager * rdtmanager, GstRDTManagerSession * session,
+    guint32 ssrc, guint8 pt)
+{
+  GstPadTemplate *templ;
+  GstElementClass *klass;
+  gchar *name;
+  GstCaps *caps;
+  GValue ret = { 0 };
+  GValue args[3] = { {0}
+  , {0}
+  , {0}
+  };
+
+  GST_DEBUG_OBJECT (rdtmanager, "creating stream");
+
+  session->ssrc = ssrc;
+  session->pt = pt;
+
+  /* get pt map */
+  g_value_init (&args[0], GST_TYPE_ELEMENT);
+  g_value_set_object (&args[0], rdtmanager);
+  g_value_init (&args[1], G_TYPE_UINT);
+  g_value_set_uint (&args[1], session->id);
+  g_value_init (&args[2], G_TYPE_UINT);
+  g_value_set_uint (&args[2], pt);
+
+  g_value_init (&ret, GST_TYPE_CAPS);
+  g_value_set_boxed (&ret, NULL);
+
+  g_signal_emitv (args, gst_rdt_manager_signals[SIGNAL_REQUEST_PT_MAP], 0,
+      &ret);
+
+  g_value_unset (&args[0]);
+  g_value_unset (&args[1]);
+  g_value_unset (&args[2]);
+  caps = (GstCaps *) g_value_dup_boxed (&ret);
+  g_value_unset (&ret);
+
+  if (caps)
+    gst_rdt_manager_parse_caps (rdtmanager, session, caps);
+
+  name = g_strdup_printf ("recv_rtp_src_%d_%u_%d", session->id, ssrc, pt);
+  klass = GST_ELEMENT_GET_CLASS (rdtmanager);
+  templ = gst_element_class_get_pad_template (klass, "recv_rtp_src_%d_%d_%d");
+  session->recv_rtp_src = gst_pad_new_from_template (templ, name);
+  g_free (name);
+
+  gst_pad_set_caps (session->recv_rtp_src, caps);
+  gst_caps_unref (caps);
+
+  gst_pad_set_element_private (session->recv_rtp_src, session);
+  gst_pad_set_query_function (session->recv_rtp_src, gst_rdt_manager_query_src);
+  gst_pad_set_activatepush_function (session->recv_rtp_src,
+      gst_rdt_manager_src_activate_push);
+
+  gst_pad_set_active (session->recv_rtp_src, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtmanager), session->recv_rtp_src);
+
+  return TRUE;
+}
+
+static void
+free_session (GstRDTManagerSession * session)
+{
+  g_object_unref (session->jbuf);
+  g_cond_free (session->jbuf_cond);
+  g_mutex_free (session->jbuf_lock);
+  g_free (session);
+}
+
+GST_BOILERPLATE (GstRDTManager, gst_rdt_manager, GstElement, GST_TYPE_ELEMENT);
+
+static void
+gst_rdt_manager_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  /* sink pads */
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_manager_recv_rtp_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_manager_recv_rtcp_sink_template);
+  /* src pads */
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_manager_recv_rtp_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rdt_manager_rtcp_src_template);
+
+  gst_element_class_set_details_simple (element_class, "RTP Decoder",
+      "Codec/Parser/Network",
+      "Accepts raw RTP and RTCP packets and sends them forward",
+      "Wim Taymans <wim@fluendo.com>");
+}
+
+/* BOXED:UINT,UINT */
+#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
+
+static void
+gst_rdt_manager_marshal_BOXED__UINT_UINT (GClosure * closure,
+    GValue * return_value,
+    guint n_param_values,
+    const GValue * param_values,
+    gpointer invocation_hint, gpointer marshal_data)
+{
+  typedef gpointer (*GMarshalFunc_BOXED__UINT_UINT) (gpointer data1,
+      guint arg_1, guint arg_2, gpointer data2);
+  register GMarshalFunc_BOXED__UINT_UINT callback;
+  register GCClosure *cc = (GCClosure *) closure;
+  register gpointer data1, data2;
+  gpointer v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure)) {
+    data1 = closure->data;
+    data2 = g_value_peek_pointer (param_values + 0);
+  } else {
+    data1 = g_value_peek_pointer (param_values + 0);
+    data2 = closure->data;
+  }
+  callback =
+      (GMarshalFunc_BOXED__UINT_UINT) (marshal_data ? marshal_data :
+      cc->callback);
+
+  v_return = callback (data1,
+      g_marshal_value_peek_uint (param_values + 1),
+      g_marshal_value_peek_uint (param_values + 2), data2);
+
+  g_value_take_boxed (return_value, v_return);
+}
+
+static void
+gst_rdt_manager_marshal_VOID__UINT_UINT (GClosure * closure,
+    GValue * return_value,
+    guint n_param_values,
+    const GValue * param_values,
+    gpointer invocation_hint, gpointer marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer data1,
+      guint arg_1, guint arg_2, gpointer data2);
+  register GMarshalFunc_VOID__UINT_UINT callback;
+  register GCClosure *cc = (GCClosure *) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 3);
+
+  if (G_CCLOSURE_SWAP_DATA (closure)) {
+    data1 = closure->data;
+    data2 = g_value_peek_pointer (param_values + 0);
+  } else {
+    data1 = g_value_peek_pointer (param_values + 0);
+    data2 = closure->data;
+  }
+  callback =
+      (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data :
+      cc->callback);
+
+  callback (data1,
+      g_marshal_value_peek_uint (param_values + 1),
+      g_marshal_value_peek_uint (param_values + 2), data2);
+}
+
+static void
+gst_rdt_manager_class_init (GstRDTManagerClass * g_class)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  GstRDTManagerClass *klass;
+
+  klass = (GstRDTManagerClass *) g_class;
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  gobject_class->finalize = gst_rdt_manager_finalize;
+  gobject_class->set_property = gst_rdt_manager_set_property;
+  gobject_class->get_property = gst_rdt_manager_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_LATENCY,
+      g_param_spec_uint ("latency", "Buffer latency in ms",
+          "Amount of ms to buffer", 0, G_MAXUINT, DEFAULT_LATENCY_MS,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GstRDTManager::request-pt-map:
+   * @rdtmanager: the object which received the signal
+   * @session: the session
+   * @pt: the pt
+   *
+   * Request the payload type as #GstCaps for @pt in @session.
+   */
+  gst_rdt_manager_signals[SIGNAL_REQUEST_PT_MAP] =
+      g_signal_new ("request-pt-map", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, request_pt_map),
+      NULL, NULL, gst_rdt_manager_marshal_BOXED__UINT_UINT, GST_TYPE_CAPS, 2,
+      G_TYPE_UINT, G_TYPE_UINT);
+
+  /**
+   * GstRDTManager::clear-pt-map:
+   * @rtpbin: the object which received the signal
+   *
+   * Clear all previously cached pt-mapping obtained with
+   * GstRDTManager::request-pt-map.
+   */
+  gst_rdt_manager_signals[SIGNAL_CLEAR_PT_MAP] =
+      g_signal_new ("clear-pt-map", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, clear_pt_map),
+      NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE);
+
+  /**
+   * GstRDTManager::on-bye-ssrc:
+   * @rtpbin: the object which received the signal
+   * @session: the session
+   * @ssrc: the SSRC 
+   *
+   * Notify of an SSRC that became inactive because of a BYE packet.
+   */
+  gst_rdt_manager_signals[SIGNAL_ON_BYE_SSRC] =
+      g_signal_new ("on-bye-ssrc", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, on_bye_ssrc),
+      NULL, NULL, gst_rdt_manager_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2,
+      G_TYPE_UINT, G_TYPE_UINT);
+  /**
+   * GstRDTManager::on-bye-timeout:
+   * @rtpbin: the object which received the signal
+   * @session: the session
+   * @ssrc: the SSRC 
+   *
+   * Notify of an SSRC that has timed out because of BYE
+   */
+  gst_rdt_manager_signals[SIGNAL_ON_BYE_TIMEOUT] =
+      g_signal_new ("on-bye-timeout", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, on_bye_timeout),
+      NULL, NULL, gst_rdt_manager_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2,
+      G_TYPE_UINT, G_TYPE_UINT);
+  /**
+   * GstRDTManager::on-timeout:
+   * @rtpbin: the object which received the signal
+   * @session: the session
+   * @ssrc: the SSRC 
+   *
+   * Notify of an SSRC that has timed out
+   */
+  gst_rdt_manager_signals[SIGNAL_ON_TIMEOUT] =
+      g_signal_new ("on-timeout", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, on_timeout),
+      NULL, NULL, gst_rdt_manager_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2,
+      G_TYPE_UINT, G_TYPE_UINT);
+
+  gstelement_class->provide_clock =
+      GST_DEBUG_FUNCPTR (gst_rdt_manager_provide_clock);
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_rdt_manager_change_state);
+  gstelement_class->request_new_pad =
+      GST_DEBUG_FUNCPTR (gst_rdt_manager_request_new_pad);
+  gstelement_class->release_pad =
+      GST_DEBUG_FUNCPTR (gst_rdt_manager_release_pad);
+
+  GST_DEBUG_CATEGORY_INIT (rdtmanager_debug, "rdtmanager", 0, "RTP decoder");
+}
+
+static void
+gst_rdt_manager_init (GstRDTManager * rdtmanager, GstRDTManagerClass * klass)
+{
+  rdtmanager->provided_clock = gst_system_clock_obtain ();
+  rdtmanager->latency = DEFAULT_LATENCY_MS;
+}
+
+static void
+gst_rdt_manager_finalize (GObject * object)
+{
+  GstRDTManager *rdtmanager;
+
+  rdtmanager = GST_RDT_MANAGER (object);
+
+  g_slist_foreach (rdtmanager->sessions, (GFunc) free_session, NULL);
+  g_slist_free (rdtmanager->sessions);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static gboolean
+gst_rdt_manager_query_src (GstPad * pad, GstQuery * query)
+{
+  GstRDTManager *rdtmanager;
+  gboolean res;
+
+  rdtmanager = GST_RDT_MANAGER (GST_PAD_PARENT (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_LATENCY:
+    {
+      GstClockTime latency;
+
+      latency = rdtmanager->latency * GST_MSECOND;
+
+      /* we pretend to be live with a 3 second latency */
+      gst_query_set_latency (query, TRUE, latency, -1);
+
+      GST_DEBUG_OBJECT (rdtmanager, "reporting %" GST_TIME_FORMAT " of latency",
+          GST_TIME_ARGS (latency));
+      res = TRUE;
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+  return res;
+}
+
+static gboolean
+gst_rdt_manager_src_activate_push (GstPad * pad, gboolean active)
+{
+  gboolean result = TRUE;
+  GstRDTManager *rdtmanager;
+  GstRDTManagerSession *session;
+
+  session = gst_pad_get_element_private (pad);
+  rdtmanager = session->dec;
+
+  if (active) {
+    /* allow data processing */
+    JBUF_LOCK (session);
+    GST_DEBUG_OBJECT (rdtmanager, "Enabling pop on queue");
+    /* Mark as non flushing */
+    session->srcresult = GST_FLOW_OK;
+    gst_segment_init (&session->segment, GST_FORMAT_TIME);
+    session->last_popped_seqnum = -1;
+    session->last_out_time = -1;
+    session->next_seqnum = -1;
+    session->eos = FALSE;
+    JBUF_UNLOCK (session);
+
+    /* start pushing out buffers */
+    GST_DEBUG_OBJECT (rdtmanager, "Starting task on srcpad");
+    gst_pad_start_task (pad, (GstTaskFunction) gst_rdt_manager_loop, pad);
+  } else {
+    /* make sure all data processing stops ASAP */
+    JBUF_LOCK (session);
+    /* mark ourselves as flushing */
+    session->srcresult = GST_FLOW_WRONG_STATE;
+    GST_DEBUG_OBJECT (rdtmanager, "Disabling pop on queue");
+    /* this unblocks any waiting pops on the src pad task */
+    JBUF_SIGNAL (session);
+    /* unlock clock, we just unschedule, the entry will be released by
+     * the locking streaming thread. */
+    if (session->clock_id)
+      gst_clock_id_unschedule (session->clock_id);
+    JBUF_UNLOCK (session);
+
+    /* 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 (rdtmanager, "Stopping task on srcpad");
+    result = gst_pad_stop_task (pad);
+  }
+
+  return result;
+}
+
+static GstFlowReturn
+gst_rdt_manager_handle_data_packet (GstRDTManagerSession * session,
+    GstClockTime timestamp, GstRDTPacket * packet)
+{
+  GstRDTManager *rdtmanager;
+  guint16 seqnum;
+  gboolean tail;
+  GstFlowReturn res;
+  GstBuffer *buffer;
+
+  rdtmanager = session->dec;
+
+  res = GST_FLOW_OK;
+
+  seqnum = 0;
+  GST_DEBUG_OBJECT (rdtmanager,
+      "Received packet #%d at time %" GST_TIME_FORMAT, seqnum,
+      GST_TIME_ARGS (timestamp));
+
+  buffer = gst_rdt_packet_to_buffer (packet);
+
+  JBUF_LOCK_CHECK (session, out_flushing);
+
+  /* insert the packet into the queue now, FIXME, use seqnum */
+  if (!rdt_jitter_buffer_insert (session->jbuf, buffer, timestamp,
+          session->clock_rate, &tail))
+    goto duplicate;
+
+  /* signal addition of new buffer when the _loop is waiting. */
+  if (session->waiting)
+    JBUF_SIGNAL (session);
+
+finished:
+  JBUF_UNLOCK (session);
+
+  return res;
+
+  /* ERRORS */
+out_flushing:
+  {
+    res = session->srcresult;
+    GST_DEBUG_OBJECT (rdtmanager, "flushing %s", gst_flow_get_name (res));
+    gst_buffer_unref (buffer);
+    goto finished;
+  }
+duplicate:
+  {
+    GST_WARNING_OBJECT (rdtmanager, "Duplicate packet #%d detected, dropping",
+        seqnum);
+    session->num_duplicates++;
+    gst_buffer_unref (buffer);
+    goto finished;
+  }
+}
+
+static gboolean
+gst_rdt_manager_parse_caps (GstRDTManager * rdtmanager,
+    GstRDTManagerSession * session, GstCaps * caps)
+{
+  GstStructure *caps_struct;
+  guint val;
+
+  /* first parse the caps */
+  caps_struct = gst_caps_get_structure (caps, 0);
+
+  GST_DEBUG_OBJECT (rdtmanager, "got caps");
+
+  /* we need a clock-rate to convert the rtp timestamps to GStreamer time and to
+   * measure the amount of data in the buffer */
+  if (!gst_structure_get_int (caps_struct, "clock-rate", &session->clock_rate))
+    session->clock_rate = 1000;
+
+  if (session->clock_rate <= 0)
+    goto wrong_rate;
+
+  GST_DEBUG_OBJECT (rdtmanager, "got clock-rate %d", session->clock_rate);
+
+  /* gah, clock-base is uint. If we don't have a base, we will use the first
+   * buffer timestamp as the base time. This will screw up sync but it's better
+   * than nothing. */
+  if (gst_structure_get_uint (caps_struct, "clock-base", &val))
+    session->clock_base = val;
+  else
+    session->clock_base = -1;
+
+  GST_DEBUG_OBJECT (rdtmanager, "got clock-base %" G_GINT64_FORMAT,
+      session->clock_base);
+
+  /* first expected seqnum */
+  if (gst_structure_get_uint (caps_struct, "seqnum-base", &val))
+    session->next_seqnum = val;
+  else
+    session->next_seqnum = -1;
+
+  GST_DEBUG_OBJECT (rdtmanager, "got seqnum-base %d", session->next_seqnum);
+
+  return TRUE;
+
+  /* ERRORS */
+wrong_rate:
+  {
+    GST_DEBUG_OBJECT (rdtmanager, "Invalid clock-rate %d", session->clock_rate);
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_rdt_manager_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstRDTManager *rdtmanager;
+  GstRDTManagerSession *session;
+  gboolean res;
+
+  rdtmanager = GST_RDT_MANAGER (GST_PAD_PARENT (pad));
+  /* find session */
+  session = gst_pad_get_element_private (pad);
+
+  res = gst_rdt_manager_parse_caps (rdtmanager, session, caps);
+
+  return res;
+}
+
+static GstFlowReturn
+gst_rdt_manager_chain_rdt (GstPad * pad, GstBuffer * buffer)
+{
+  GstFlowReturn res;
+  GstRDTManager *rdtmanager;
+  GstRDTManagerSession *session;
+  GstClockTime timestamp;
+  GstRDTPacket packet;
+  guint32 ssrc;
+  guint8 pt;
+  gboolean more;
+
+  rdtmanager = GST_RDT_MANAGER (GST_PAD_PARENT (pad));
+
+  GST_DEBUG_OBJECT (rdtmanager, "got RDT packet");
+
+  ssrc = 0;
+  pt = 0;
+
+  GST_DEBUG_OBJECT (rdtmanager, "SSRC %08x, PT %d", ssrc, pt);
+
+  /* find session */
+  session = gst_pad_get_element_private (pad);
+
+  /* see if we have the pad */
+  if (!session->active) {
+    activate_session (rdtmanager, session, ssrc, pt);
+    session->active = TRUE;
+  }
+
+  if (GST_BUFFER_IS_DISCONT (buffer)) {
+    GST_DEBUG_OBJECT (rdtmanager, "received discont");
+    session->discont = TRUE;
+  }
+
+  res = GST_FLOW_OK;
+
+  /* take the timestamp of the buffer. This is the time when the packet was
+   * received and is used to calculate jitter and clock skew. We will adjust
+   * this timestamp with the smoothed value after processing it in the
+   * jitterbuffer. */
+  timestamp = GST_BUFFER_TIMESTAMP (buffer);
+  /* bring to running time */
+  timestamp = gst_segment_to_running_time (&session->segment, GST_FORMAT_TIME,
+      timestamp);
+
+  more = gst_rdt_buffer_get_first_packet (buffer, &packet);
+  while (more) {
+    GstRDTType type;
+
+    type = gst_rdt_packet_get_type (&packet);
+    GST_DEBUG_OBJECT (rdtmanager, "Have packet of type %04x", type);
+
+    if (GST_RDT_IS_DATA_TYPE (type)) {
+      GST_DEBUG_OBJECT (rdtmanager, "We have a data packet");
+      res = gst_rdt_manager_handle_data_packet (session, timestamp, &packet);
+    } else {
+      switch (type) {
+        default:
+          GST_DEBUG_OBJECT (rdtmanager, "Ignoring packet");
+          break;
+      }
+    }
+    if (res != GST_FLOW_OK)
+      break;
+
+    more = gst_rdt_packet_move_to_next (&packet);
+  }
+
+  gst_buffer_unref (buffer);
+
+  return res;
+}
+
+/* push packets from the queue to the downstream demuxer */
+static void
+gst_rdt_manager_loop (GstPad * pad)
+{
+  GstRDTManager *rdtmanager;
+  GstRDTManagerSession *session;
+  GstBuffer *buffer;
+  GstFlowReturn result;
+
+  rdtmanager = GST_RDT_MANAGER (GST_PAD_PARENT (pad));
+
+  session = gst_pad_get_element_private (pad);
+
+  JBUF_LOCK_CHECK (session, flushing);
+  GST_DEBUG_OBJECT (rdtmanager, "Peeking item");
+  while (TRUE) {
+    /* always wait if we are blocked */
+    if (!session->blocked) {
+      /* if we have a packet, we can exit the loop and grab it */
+      if (rdt_jitter_buffer_num_packets (session->jbuf) > 0)
+        break;
+      /* no packets but we are EOS, do eos logic */
+      if (session->eos)
+        goto do_eos;
+    }
+    /* underrun, wait for packets or flushing now */
+    session->waiting = TRUE;
+    JBUF_WAIT_CHECK (session, flushing);
+    session->waiting = FALSE;
+  }
+
+  buffer = rdt_jitter_buffer_pop (session->jbuf);
+
+  GST_DEBUG_OBJECT (rdtmanager, "Got item %p", buffer);
+
+  if (session->discont) {
+    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+    session->discont = FALSE;
+  }
+
+  gst_buffer_set_caps (buffer, GST_PAD_CAPS (session->recv_rtp_src));
+  JBUF_UNLOCK (session);
+
+  result = gst_pad_push (session->recv_rtp_src, buffer);
+  if (result != GST_FLOW_OK)
+    goto pause;
+
+  return;
+
+  /* ERRORS */
+flushing:
+  {
+    GST_DEBUG_OBJECT (rdtmanager, "we are flushing");
+    gst_pad_pause_task (session->recv_rtp_src);
+    JBUF_UNLOCK (session);
+    return;
+  }
+do_eos:
+  {
+    /* store result, we are flushing now */
+    GST_DEBUG_OBJECT (rdtmanager, "We are EOS, pushing EOS downstream");
+    session->srcresult = GST_FLOW_UNEXPECTED;
+    gst_pad_pause_task (session->recv_rtp_src);
+    gst_pad_push_event (session->recv_rtp_src, gst_event_new_eos ());
+    JBUF_UNLOCK (session);
+    return;
+  }
+pause:
+  {
+    GST_DEBUG_OBJECT (rdtmanager, "pausing task, reason %s",
+        gst_flow_get_name (result));
+
+    JBUF_LOCK (session);
+    /* store result */
+    session->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 (session->recv_rtp_src);
+    JBUF_UNLOCK (session);
+    return;
+  }
+}
+
+static GstFlowReturn
+gst_rdt_manager_chain_rtcp (GstPad * pad, GstBuffer * buffer)
+{
+  GstRDTManager *src;
+
+#ifdef HAVE_RTCP
+  gboolean valid;
+  GstRTCPPacket packet;
+  gboolean more;
+#endif
+
+  src = GST_RDT_MANAGER (GST_PAD_PARENT (pad));
+
+  GST_DEBUG_OBJECT (src, "got rtcp packet");
+
+#ifdef HAVE_RTCP
+  valid = gst_rtcp_buffer_validate (buffer);
+  if (!valid)
+    goto bad_packet;
+
+  /* position on first packet */
+  more = gst_rtcp_buffer_get_first_packet (buffer, &packet);
+  while (more) {
+    switch (gst_rtcp_packet_get_type (&packet)) {
+      case GST_RTCP_TYPE_SR:
+      {
+        guint32 ssrc, rtptime, packet_count, octet_count;
+        guint64 ntptime;
+        guint count, i;
+
+        gst_rtcp_packet_sr_get_sender_info (&packet, &ssrc, &ntptime, &rtptime,
+            &packet_count, &octet_count);
+
+        GST_DEBUG_OBJECT (src,
+            "got SR packet: SSRC %08x, NTP %" G_GUINT64_FORMAT
+            ", RTP %u, PC %u, OC %u", ssrc, ntptime, rtptime, packet_count,
+            octet_count);
+
+        count = gst_rtcp_packet_get_rb_count (&packet);
+        for (i = 0; i < count; i++) {
+          guint32 ssrc, exthighestseq, jitter, lsr, dlsr;
+          guint8 fractionlost;
+          gint32 packetslost;
+
+          gst_rtcp_packet_get_rb (&packet, i, &ssrc, &fractionlost,
+              &packetslost, &exthighestseq, &jitter, &lsr, &dlsr);
+
+          GST_DEBUG_OBJECT (src, "got RB packet %d: SSRC %08x, FL %u"
+              ", PL %u, HS %u, JITTER %u, LSR %u, DLSR %u", ssrc, fractionlost,
+              packetslost, exthighestseq, jitter, lsr, dlsr);
+        }
+        break;
+      }
+      case GST_RTCP_TYPE_RR:
+      {
+        guint32 ssrc;
+        guint count, i;
+
+        ssrc = gst_rtcp_packet_rr_get_ssrc (&packet);
+
+        GST_DEBUG_OBJECT (src, "got RR packet: SSRC %08x", ssrc);
+
+        count = gst_rtcp_packet_get_rb_count (&packet);
+        for (i = 0; i < count; i++) {
+          guint32 ssrc, exthighestseq, jitter, lsr, dlsr;
+          guint8 fractionlost;
+          gint32 packetslost;
+
+          gst_rtcp_packet_get_rb (&packet, i, &ssrc, &fractionlost,
+              &packetslost, &exthighestseq, &jitter, &lsr, &dlsr);
+
+          GST_DEBUG_OBJECT (src, "got RB packet %d: SSRC %08x, FL %u"
+              ", PL %u, HS %u, JITTER %u, LSR %u, DLSR %u", ssrc, fractionlost,
+              packetslost, exthighestseq, jitter, lsr, dlsr);
+        }
+        break;
+      }
+      case GST_RTCP_TYPE_SDES:
+      {
+        guint chunks, i, j;
+        gboolean more_chunks, more_items;
+
+        chunks = gst_rtcp_packet_sdes_get_chunk_count (&packet);
+        GST_DEBUG_OBJECT (src, "got SDES packet with %d chunks", chunks);
+
+        more_chunks = gst_rtcp_packet_sdes_first_chunk (&packet);
+        i = 0;
+        while (more_chunks) {
+          guint32 ssrc;
+
+          ssrc = gst_rtcp_packet_sdes_get_ssrc (&packet);
+
+          GST_DEBUG_OBJECT (src, "chunk %d, SSRC %08x", i, ssrc);
+
+          more_items = gst_rtcp_packet_sdes_first_item (&packet);
+          j = 0;
+          while (more_items) {
+            GstRTCPSDESType type;
+            guint8 len;
+            gchar *data;
+
+            gst_rtcp_packet_sdes_get_item (&packet, &type, &len, &data);
+
+            GST_DEBUG_OBJECT (src, "item %d, type %d, len %d, data %s", j,
+                type, len, data);
+
+            more_items = gst_rtcp_packet_sdes_next_item (&packet);
+            j++;
+          }
+          more_chunks = gst_rtcp_packet_sdes_next_chunk (&packet);
+          i++;
+        }
+        break;
+      }
+      case GST_RTCP_TYPE_BYE:
+      {
+        guint count, i;
+        gchar *reason;
+
+        reason = gst_rtcp_packet_bye_get_reason (&packet);
+        GST_DEBUG_OBJECT (src, "got BYE packet (reason: %s)",
+            GST_STR_NULL (reason));
+        g_free (reason);
+
+        count = gst_rtcp_packet_bye_get_ssrc_count (&packet);
+        for (i = 0; i < count; i++) {
+          guint32 ssrc;
+
+
+          ssrc = gst_rtcp_packet_bye_get_nth_ssrc (&packet, i);
+
+          GST_DEBUG_OBJECT (src, "SSRC: %08x", ssrc);
+        }
+        break;
+      }
+      case GST_RTCP_TYPE_APP:
+        GST_DEBUG_OBJECT (src, "got APP packet");
+        break;
+      default:
+        GST_WARNING_OBJECT (src, "got unknown RTCP packet");
+        break;
+    }
+    more = gst_rtcp_packet_move_to_next (&packet);
+  }
+  gst_buffer_unref (buffer);
+  return GST_FLOW_OK;
+
+bad_packet:
+  {
+    GST_WARNING_OBJECT (src, "got invalid RTCP packet");
+    return GST_FLOW_OK;
+  }
+#else
+  return GST_FLOW_OK;
+#endif
+}
+
+static void
+gst_rdt_manager_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstRDTManager *src;
+
+  src = GST_RDT_MANAGER (object);
+
+  switch (prop_id) {
+    case PROP_LATENCY:
+      src->latency = g_value_get_uint (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_rdt_manager_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstRDTManager *src;
+
+  src = GST_RDT_MANAGER (object);
+
+  switch (prop_id) {
+    case PROP_LATENCY:
+      g_value_set_uint (value, src->latency);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstClock *
+gst_rdt_manager_provide_clock (GstElement * element)
+{
+  GstRDTManager *rdtmanager;
+
+  rdtmanager = GST_RDT_MANAGER (element);
+
+  return GST_CLOCK_CAST (gst_object_ref (rdtmanager->provided_clock));
+}
+
+static GstStateChangeReturn
+gst_rdt_manager_change_state (GstElement * element, GstStateChange transition)
+{
+  GstStateChangeReturn ret;
+
+  switch (transition) {
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      /* we're NO_PREROLL when going to PAUSED */
+      ret = GST_STATE_CHANGE_NO_PREROLL;
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+/* Create a pad for receiving RTP for the session in @name
+ */
+static GstPad *
+create_recv_rtp (GstRDTManager * rdtmanager, GstPadTemplate * templ,
+    const gchar * name)
+{
+  guint sessid;
+  GstRDTManagerSession *session;
+
+  /* first get the session number */
+  if (name == NULL || sscanf (name, "recv_rtp_sink_%d", &sessid) != 1)
+    goto no_name;
+
+  GST_DEBUG_OBJECT (rdtmanager, "finding session %d", sessid);
+
+  /* get or create session */
+  session = find_session_by_id (rdtmanager, sessid);
+  if (!session) {
+    GST_DEBUG_OBJECT (rdtmanager, "creating session %d", sessid);
+    /* create session now */
+    session = create_session (rdtmanager, sessid);
+    if (session == NULL)
+      goto create_error;
+  }
+  /* check if pad was requested */
+  if (session->recv_rtp_sink != NULL)
+    goto existed;
+
+  GST_DEBUG_OBJECT (rdtmanager, "getting RTP sink pad");
+
+  session->recv_rtp_sink = gst_pad_new_from_template (templ, name);
+  gst_pad_set_element_private (session->recv_rtp_sink, session);
+  gst_pad_set_setcaps_function (session->recv_rtp_sink,
+      gst_rdt_manager_setcaps);
+  gst_pad_set_chain_function (session->recv_rtp_sink,
+      gst_rdt_manager_chain_rdt);
+  gst_pad_set_active (session->recv_rtp_sink, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtmanager), session->recv_rtp_sink);
+
+  return session->recv_rtp_sink;
+
+  /* ERRORS */
+no_name:
+  {
+    g_warning ("rdtmanager: invalid name given");
+    return NULL;
+  }
+create_error:
+  {
+    /* create_session already warned */
+    return NULL;
+  }
+existed:
+  {
+    g_warning ("rdtmanager: recv_rtp pad already requested for session %d",
+        sessid);
+    return NULL;
+  }
+}
+
+/* Create a pad for receiving RTCP for the session in @name
+ */
+static GstPad *
+create_recv_rtcp (GstRDTManager * rdtmanager, GstPadTemplate * templ,
+    const gchar * name)
+{
+  guint sessid;
+  GstRDTManagerSession *session;
+
+  /* first get the session number */
+  if (name == NULL || sscanf (name, "recv_rtcp_sink_%d", &sessid) != 1)
+    goto no_name;
+
+  GST_DEBUG_OBJECT (rdtmanager, "finding session %d", sessid);
+
+  /* get the session, it must exist or we error */
+  session = find_session_by_id (rdtmanager, sessid);
+  if (!session)
+    goto no_session;
+
+  /* check if pad was requested */
+  if (session->recv_rtcp_sink != NULL)
+    goto existed;
+
+  GST_DEBUG_OBJECT (rdtmanager, "getting RTCP sink pad");
+
+  session->recv_rtcp_sink = gst_pad_new_from_template (templ, name);
+  gst_pad_set_element_private (session->recv_rtp_sink, session);
+  gst_pad_set_chain_function (session->recv_rtcp_sink,
+      gst_rdt_manager_chain_rtcp);
+  gst_pad_set_active (session->recv_rtcp_sink, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtmanager), session->recv_rtcp_sink);
+
+  return session->recv_rtcp_sink;
+
+  /* ERRORS */
+no_name:
+  {
+    g_warning ("rdtmanager: invalid name given");
+    return NULL;
+  }
+no_session:
+  {
+    g_warning ("rdtmanager: no session with id %d", sessid);
+    return NULL;
+  }
+existed:
+  {
+    g_warning ("rdtmanager: recv_rtcp pad already requested for session %d",
+        sessid);
+    return NULL;
+  }
+}
+
+/* Create a pad for sending RTCP for the session in @name
+ */
+static GstPad *
+create_rtcp (GstRDTManager * rdtmanager, GstPadTemplate * templ,
+    const gchar * name)
+{
+  guint sessid;
+  GstRDTManagerSession *session;
+
+  /* first get the session number */
+  if (name == NULL || sscanf (name, "rtcp_src_%d", &sessid) != 1)
+    goto no_name;
+
+  /* get or create session */
+  session = find_session_by_id (rdtmanager, sessid);
+  if (!session)
+    goto no_session;
+
+  /* check if pad was requested */
+  if (session->rtcp_src != NULL)
+    goto existed;
+
+  session->rtcp_src = gst_pad_new_from_template (templ, name);
+  gst_pad_set_active (session->rtcp_src, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (rdtmanager), session->rtcp_src);
+
+  return session->rtcp_src;
+
+  /* ERRORS */
+no_name:
+  {
+    g_warning ("rdtmanager: invalid name given");
+    return NULL;
+  }
+no_session:
+  {
+    g_warning ("rdtmanager: session with id %d does not exist", sessid);
+    return NULL;
+  }
+existed:
+  {
+    g_warning ("rdtmanager: rtcp_src pad already requested for session %d",
+        sessid);
+    return NULL;
+  }
+}
+
+/* 
+ */
+static GstPad *
+gst_rdt_manager_request_new_pad (GstElement * element,
+    GstPadTemplate * templ, const gchar * name)
+{
+  GstRDTManager *rdtmanager;
+  GstElementClass *klass;
+  GstPad *result;
+
+  g_return_val_if_fail (templ != NULL, NULL);
+  g_return_val_if_fail (GST_IS_RDT_MANAGER (element), NULL);
+
+  rdtmanager = GST_RDT_MANAGER (element);
+  klass = GST_ELEMENT_GET_CLASS (element);
+
+  /* figure out the template */
+  if (templ == gst_element_class_get_pad_template (klass, "recv_rtp_sink_%d")) {
+    result = create_recv_rtp (rdtmanager, templ, name);
+  } else if (templ == gst_element_class_get_pad_template (klass,
+          "recv_rtcp_sink_%d")) {
+    result = create_recv_rtcp (rdtmanager, templ, name);
+  } else if (templ == gst_element_class_get_pad_template (klass, "rtcp_src_%d")) {
+    result = create_rtcp (rdtmanager, templ, name);
+  } else
+    goto wrong_template;
+
+  return result;
+
+  /* ERRORS */
+wrong_template:
+  {
+    g_warning ("rdtmanager: this is not our template");
+    return NULL;
+  }
+}
+
+static void
+gst_rdt_manager_release_pad (GstElement * element, GstPad * pad)
+{
+}
+
+gboolean
+gst_rdt_manager_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "rdtmanager",
+      GST_RANK_NONE, GST_TYPE_RDT_MANAGER);
+}
diff --git a/gst/realmedia/rdtmanager.h b/gst/realmedia/rdtmanager.h
new file mode 100644 (file)
index 0000000..2816817
--- /dev/null
@@ -0,0 +1,92 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+/*
+ * Unless otherwise indicated, Source Code is licensed under MIT license.
+ * See further explanation attached in License Statement (distributed in the file
+ * LICENSE).
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef __GST_RDT_MANAGER_H__
+#define __GST_RDT_MANAGER_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RDT_MANAGER           (gst_rdt_manager_get_type())
+#define GST_IS_RDT_MANAGER(obj)        (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RDT_MANAGER))
+#define GST_IS_RDT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RDT_MANAGER))
+#define GST_RDT_MANAGER(obj)           (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RDT_MANAGER, GstRDTManager))
+#define GST_RDT_MANAGER_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RDT_MANAGER, GstRDTManagerClass))
+
+typedef struct _GstRDTManager GstRDTManager;
+typedef struct _GstRDTManagerClass GstRDTManagerClass;
+typedef struct _GstRDTManagerSession GstRDTManagerSession;
+
+struct _GstRDTManager {
+  GstElement  element;
+
+  guint       latency;
+  GSList     *sessions;
+  GstClock   *provided_clock;
+};
+
+struct _GstRDTManagerClass {
+  GstElementClass parent_class;
+
+  /* get the caps for pt */
+  GstCaps* (*request_pt_map)    (GstRDTManager *rtpdec, guint session, guint pt);
+
+  void     (*clear_pt_map)      (GstRDTManager *rtpdec);
+
+  void     (*on_new_ssrc)       (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_ssrc_collision) (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_ssrc_validated) (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_ssrc_active)    (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_ssrc_sdes)      (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_bye_ssrc)       (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_bye_timeout)    (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+  void     (*on_timeout)        (GstRDTManager *rtpdec, guint session, guint32 ssrc);
+};
+
+GType gst_rdt_manager_get_type(void);
+
+gboolean gst_rdt_manager_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_RDT_MANAGER_H__ */
diff --git a/gst/realmedia/realhash.c b/gst/realmedia/realhash.c
new file mode 100644 (file)
index 0000000..131e95d
--- /dev/null
@@ -0,0 +1,321 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+/* Element-Checklist-Version: 5 */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "_stdint.h"
+#include <string.h>
+
+#include <gst/gst.h>
+
+#include "realhash.h"
+
+void rtsp_ext_real_calc_response_and_checksum (char *response,
+    char *chksum, char *challenge);
+
+/*
+ * The following code has been copied from
+ * xine-lib-1.1.1/src/input/libreal/real.c.
+ */
+
+static const unsigned char xor_table[] = {
+  0x05, 0x18, 0x74, 0xd0, 0x0d, 0x09, 0x02, 0x53,
+  0xc0, 0x01, 0x05, 0x05, 0x67, 0x03, 0x19, 0x70,
+  0x08, 0x27, 0x66, 0x10, 0x10, 0x72, 0x08, 0x09,
+  0x63, 0x11, 0x03, 0x71, 0x08, 0x08, 0x70, 0x02,
+  0x10, 0x57, 0x05, 0x18, 0x54, 0x00, 0x00, 0x00
+};
+
+#define LE_32(x) GST_READ_UINT32_LE(x)
+#define BE_32C(x,y) GST_WRITE_UINT32_BE(x,y)
+#define LE_32C(x,y) GST_WRITE_UINT32_LE(x,y)
+
+static void
+hash (char *field, char *param)
+{
+  uint32_t a, b, c, d;
+
+  /* fill variables */
+  a = LE_32 (field);
+  b = LE_32 (field + 4);
+  c = LE_32 (field + 8);
+  d = LE_32 (field + 12);
+
+  a = ((b & c) | (~b & d)) + LE_32 ((param + 0x00)) + a - 0x28955B88;
+  a = ((a << 0x07) | (a >> 0x19)) + b;
+  d = ((a & b) | (~a & c)) + LE_32 ((param + 0x04)) + d - 0x173848AA;
+  d = ((d << 0x0c) | (d >> 0x14)) + a;
+  c = ((d & a) | (~d & b)) + LE_32 ((param + 0x08)) + c + 0x242070DB;
+  c = ((c << 0x11) | (c >> 0x0f)) + d;
+  b = ((c & d) | (~c & a)) + LE_32 ((param + 0x0c)) + b - 0x3E423112;
+  b = ((b << 0x16) | (b >> 0x0a)) + c;
+  a = ((b & c) | (~b & d)) + LE_32 ((param + 0x10)) + a - 0x0A83F051;
+  a = ((a << 0x07) | (a >> 0x19)) + b;
+  d = ((a & b) | (~a & c)) + LE_32 ((param + 0x14)) + d + 0x4787C62A;
+  d = ((d << 0x0c) | (d >> 0x14)) + a;
+  c = ((d & a) | (~d & b)) + LE_32 ((param + 0x18)) + c - 0x57CFB9ED;
+  c = ((c << 0x11) | (c >> 0x0f)) + d;
+  b = ((c & d) | (~c & a)) + LE_32 ((param + 0x1c)) + b - 0x02B96AFF;
+  b = ((b << 0x16) | (b >> 0x0a)) + c;
+  a = ((b & c) | (~b & d)) + LE_32 ((param + 0x20)) + a + 0x698098D8;
+  a = ((a << 0x07) | (a >> 0x19)) + b;
+  d = ((a & b) | (~a & c)) + LE_32 ((param + 0x24)) + d - 0x74BB0851;
+  d = ((d << 0x0c) | (d >> 0x14)) + a;
+  c = ((d & a) | (~d & b)) + LE_32 ((param + 0x28)) + c - 0x0000A44F;
+  c = ((c << 0x11) | (c >> 0x0f)) + d;
+  b = ((c & d) | (~c & a)) + LE_32 ((param + 0x2C)) + b - 0x76A32842;
+  b = ((b << 0x16) | (b >> 0x0a)) + c;
+  a = ((b & c) | (~b & d)) + LE_32 ((param + 0x30)) + a + 0x6B901122;
+  a = ((a << 0x07) | (a >> 0x19)) + b;
+  d = ((a & b) | (~a & c)) + LE_32 ((param + 0x34)) + d - 0x02678E6D;
+  d = ((d << 0x0c) | (d >> 0x14)) + a;
+  c = ((d & a) | (~d & b)) + LE_32 ((param + 0x38)) + c - 0x5986BC72;
+  c = ((c << 0x11) | (c >> 0x0f)) + d;
+  b = ((c & d) | (~c & a)) + LE_32 ((param + 0x3c)) + b + 0x49B40821;
+  b = ((b << 0x16) | (b >> 0x0a)) + c;
+
+  a = ((b & d) | (~d & c)) + LE_32 ((param + 0x04)) + a - 0x09E1DA9E;
+  a = ((a << 0x05) | (a >> 0x1b)) + b;
+  d = ((a & c) | (~c & b)) + LE_32 ((param + 0x18)) + d - 0x3FBF4CC0;
+  d = ((d << 0x09) | (d >> 0x17)) + a;
+  c = ((d & b) | (~b & a)) + LE_32 ((param + 0x2c)) + c + 0x265E5A51;
+  c = ((c << 0x0e) | (c >> 0x12)) + d;
+  b = ((c & a) | (~a & d)) + LE_32 ((param + 0x00)) + b - 0x16493856;
+  b = ((b << 0x14) | (b >> 0x0c)) + c;
+  a = ((b & d) | (~d & c)) + LE_32 ((param + 0x14)) + a - 0x29D0EFA3;
+  a = ((a << 0x05) | (a >> 0x1b)) + b;
+  d = ((a & c) | (~c & b)) + LE_32 ((param + 0x28)) + d + 0x02441453;
+  d = ((d << 0x09) | (d >> 0x17)) + a;
+  c = ((d & b) | (~b & a)) + LE_32 ((param + 0x3c)) + c - 0x275E197F;
+  c = ((c << 0x0e) | (c >> 0x12)) + d;
+  b = ((c & a) | (~a & d)) + LE_32 ((param + 0x10)) + b - 0x182C0438;
+  b = ((b << 0x14) | (b >> 0x0c)) + c;
+  a = ((b & d) | (~d & c)) + LE_32 ((param + 0x24)) + a + 0x21E1CDE6;
+  a = ((a << 0x05) | (a >> 0x1b)) + b;
+  d = ((a & c) | (~c & b)) + LE_32 ((param + 0x38)) + d - 0x3CC8F82A;
+  d = ((d << 0x09) | (d >> 0x17)) + a;
+  c = ((d & b) | (~b & a)) + LE_32 ((param + 0x0c)) + c - 0x0B2AF279;
+  c = ((c << 0x0e) | (c >> 0x12)) + d;
+  b = ((c & a) | (~a & d)) + LE_32 ((param + 0x20)) + b + 0x455A14ED;
+  b = ((b << 0x14) | (b >> 0x0c)) + c;
+  a = ((b & d) | (~d & c)) + LE_32 ((param + 0x34)) + a - 0x561C16FB;
+  a = ((a << 0x05) | (a >> 0x1b)) + b;
+  d = ((a & c) | (~c & b)) + LE_32 ((param + 0x08)) + d - 0x03105C08;
+  d = ((d << 0x09) | (d >> 0x17)) + a;
+  c = ((d & b) | (~b & a)) + LE_32 ((param + 0x1c)) + c + 0x676F02D9;
+  c = ((c << 0x0e) | (c >> 0x12)) + d;
+  b = ((c & a) | (~a & d)) + LE_32 ((param + 0x30)) + b - 0x72D5B376;
+  b = ((b << 0x14) | (b >> 0x0c)) + c;
+
+  a = (b ^ c ^ d) + LE_32 ((param + 0x14)) + a - 0x0005C6BE;
+  a = ((a << 0x04) | (a >> 0x1c)) + b;
+  d = (a ^ b ^ c) + LE_32 ((param + 0x20)) + d - 0x788E097F;
+  d = ((d << 0x0b) | (d >> 0x15)) + a;
+  c = (d ^ a ^ b) + LE_32 ((param + 0x2c)) + c + 0x6D9D6122;
+  c = ((c << 0x10) | (c >> 0x10)) + d;
+  b = (c ^ d ^ a) + LE_32 ((param + 0x38)) + b - 0x021AC7F4;
+  b = ((b << 0x17) | (b >> 0x09)) + c;
+  a = (b ^ c ^ d) + LE_32 ((param + 0x04)) + a - 0x5B4115BC;
+  a = ((a << 0x04) | (a >> 0x1c)) + b;
+  d = (a ^ b ^ c) + LE_32 ((param + 0x10)) + d + 0x4BDECFA9;
+  d = ((d << 0x0b) | (d >> 0x15)) + a;
+  c = (d ^ a ^ b) + LE_32 ((param + 0x1c)) + c - 0x0944B4A0;
+  c = ((c << 0x10) | (c >> 0x10)) + d;
+  b = (c ^ d ^ a) + LE_32 ((param + 0x28)) + b - 0x41404390;
+  b = ((b << 0x17) | (b >> 0x09)) + c;
+  a = (b ^ c ^ d) + LE_32 ((param + 0x34)) + a + 0x289B7EC6;
+  a = ((a << 0x04) | (a >> 0x1c)) + b;
+  d = (a ^ b ^ c) + LE_32 ((param + 0x00)) + d - 0x155ED806;
+  d = ((d << 0x0b) | (d >> 0x15)) + a;
+  c = (d ^ a ^ b) + LE_32 ((param + 0x0c)) + c - 0x2B10CF7B;
+  c = ((c << 0x10) | (c >> 0x10)) + d;
+  b = (c ^ d ^ a) + LE_32 ((param + 0x18)) + b + 0x04881D05;
+  b = ((b << 0x17) | (b >> 0x09)) + c;
+  a = (b ^ c ^ d) + LE_32 ((param + 0x24)) + a - 0x262B2FC7;
+  a = ((a << 0x04) | (a >> 0x1c)) + b;
+  d = (a ^ b ^ c) + LE_32 ((param + 0x30)) + d - 0x1924661B;
+  d = ((d << 0x0b) | (d >> 0x15)) + a;
+  c = (d ^ a ^ b) + LE_32 ((param + 0x3c)) + c + 0x1fa27cf8;
+  c = ((c << 0x10) | (c >> 0x10)) + d;
+  b = (c ^ d ^ a) + LE_32 ((param + 0x08)) + b - 0x3B53A99B;
+  b = ((b << 0x17) | (b >> 0x09)) + c;
+
+  a = ((~d | b) ^ c) + LE_32 ((param + 0x00)) + a - 0x0BD6DDBC;
+  a = ((a << 0x06) | (a >> 0x1a)) + b;
+  d = ((~c | a) ^ b) + LE_32 ((param + 0x1c)) + d + 0x432AFF97;
+  d = ((d << 0x0a) | (d >> 0x16)) + a;
+  c = ((~b | d) ^ a) + LE_32 ((param + 0x38)) + c - 0x546BDC59;
+  c = ((c << 0x0f) | (c >> 0x11)) + d;
+  b = ((~a | c) ^ d) + LE_32 ((param + 0x14)) + b - 0x036C5FC7;
+  b = ((b << 0x15) | (b >> 0x0b)) + c;
+  a = ((~d | b) ^ c) + LE_32 ((param + 0x30)) + a + 0x655B59C3;
+  a = ((a << 0x06) | (a >> 0x1a)) + b;
+  d = ((~c | a) ^ b) + LE_32 ((param + 0x0C)) + d - 0x70F3336E;
+  d = ((d << 0x0a) | (d >> 0x16)) + a;
+  c = ((~b | d) ^ a) + LE_32 ((param + 0x28)) + c - 0x00100B83;
+  c = ((c << 0x0f) | (c >> 0x11)) + d;
+  b = ((~a | c) ^ d) + LE_32 ((param + 0x04)) + b - 0x7A7BA22F;
+  b = ((b << 0x15) | (b >> 0x0b)) + c;
+  a = ((~d | b) ^ c) + LE_32 ((param + 0x20)) + a + 0x6FA87E4F;
+  a = ((a << 0x06) | (a >> 0x1a)) + b;
+  d = ((~c | a) ^ b) + LE_32 ((param + 0x3c)) + d - 0x01D31920;
+  d = ((d << 0x0a) | (d >> 0x16)) + a;
+  c = ((~b | d) ^ a) + LE_32 ((param + 0x18)) + c - 0x5CFEBCEC;
+  c = ((c << 0x0f) | (c >> 0x11)) + d;
+  b = ((~a | c) ^ d) + LE_32 ((param + 0x34)) + b + 0x4E0811A1;
+  b = ((b << 0x15) | (b >> 0x0b)) + c;
+  a = ((~d | b) ^ c) + LE_32 ((param + 0x10)) + a - 0x08AC817E;
+  a = ((a << 0x06) | (a >> 0x1a)) + b;
+  d = ((~c | a) ^ b) + LE_32 ((param + 0x2c)) + d - 0x42C50DCB;
+  d = ((d << 0x0a) | (d >> 0x16)) + a;
+  c = ((~b | d) ^ a) + LE_32 ((param + 0x08)) + c + 0x2AD7D2BB;
+  c = ((c << 0x0f) | (c >> 0x11)) + d;
+  b = ((~a | c) ^ d) + LE_32 ((param + 0x24)) + b - 0x14792C6F;
+  b = ((b << 0x15) | (b >> 0x0b)) + c;
+
+  a += LE_32 (field);
+  b += LE_32 (field + 4);
+  c += LE_32 (field + 8);
+  d += LE_32 (field + 12);
+
+  LE_32C (field, a);
+  LE_32C (field + 4, b);
+  LE_32C (field + 8, c);
+  LE_32C (field + 12, d);
+}
+
+static void
+call_hash (char *key, char *challenge, int len)
+{
+  uint8_t *ptr1, *ptr2;
+  uint32_t a, b, c, d, tmp;
+
+  ptr1 = (uint8_t *) (key + 16);
+  ptr2 = (uint8_t *) (key + 20);
+
+  a = LE_32 (ptr1);
+  b = (a >> 3) & 0x3f;
+  a += len * 8;
+  LE_32C (ptr1, a);
+
+  if (a < (len << 3))
+    ptr2 += 4;
+
+  tmp = LE_32 (ptr2) + (len >> 0x1d);
+  LE_32C (ptr2, tmp);
+  a = 64 - b;
+  c = 0;
+  if (a <= len) {
+
+    memcpy (key + b + 24, challenge, a);
+    hash (key, key + 24);
+    c = a;
+    d = c + 0x3f;
+
+    while (d < len) {
+      hash (key, challenge + d - 0x3f);
+      d += 64;
+      c += 64;
+    }
+    b = 0;
+  }
+
+  memcpy (key + b + 24, challenge + c, len - c);
+}
+
+void
+gst_rtsp_ext_real_calc_response_and_checksum (char *response, char *chksum,
+    char *challenge)
+{
+  int ch_len, table_len, resp_len;
+  int i;
+  char *ptr;
+  char buf[128];
+  char field[128];
+  char zres[20];
+  char buf1[128];
+  char buf2[128];
+
+  /* initialize return values */
+  memset (response, 0, 64);
+  memset (chksum, 0, 34);
+
+  /* initialize buffer */
+  memset (buf, 0, 128);
+  ptr = buf;
+  BE_32C (ptr, 0xa1e9149d);
+  ptr += 4;
+  BE_32C (ptr, 0x0e6b3b59);
+  ptr += 4;
+
+  if ((ch_len = MIN (strlen (challenge), 56)) == 40) {
+    challenge[32] = 0;
+    ch_len = 32;
+  }
+  memcpy (ptr, challenge, ch_len);
+
+  /* xor challenge bytewise with xor_table */
+  table_len = MIN (strlen ((char *) xor_table), 56);
+  for (i = 0; i < table_len; i++)
+    ptr[i] = ptr[i] ^ xor_table[i];
+
+  /* initialize our field */
+  BE_32C (field, 0x01234567);
+  BE_32C (field + 4, 0x89ABCDEF);
+  BE_32C (field + 8, 0xFEDCBA98);
+  BE_32C (field + 12, 0x76543210);
+  BE_32C (field + 16, 0x00000000);
+  BE_32C (field + 20, 0x00000000);
+
+  /* calculate response */
+  call_hash (field, buf, 64);
+  memset (buf1, 0, 64);
+  *buf1 = 128;
+  memcpy (buf2, field + 16, 8);
+  i = (LE_32 ((buf2)) >> 3) & 0x3f;
+  if (i < 56)
+    i = 56 - i;
+  else
+    i = 120 - i;
+  call_hash (field, buf1, i);
+  call_hash (field, buf2, 8);
+  memcpy (zres, field, 16);
+
+  /* convert zres to ascii string */
+  for (i = 0; i < 16; i++) {
+    char a, b;
+
+    a = (zres[i] >> 4) & 15;
+    b = zres[i] & 15;
+
+    response[i * 2] = ((a < 10) ? (a + 48) : (a + 87)) & 255;
+    response[i * 2 + 1] = ((b < 10) ? (b + 48) : (b + 87)) & 255;
+  }
+
+  /* add tail */
+  resp_len = strlen (response);
+  strcpy (&response[resp_len], "01d0a8e3");
+
+  /* calculate checksum */
+  for (i = 0; i < resp_len / 4; i++)
+    chksum[i] = response[i * 4];
+}
diff --git a/gst/realmedia/realhash.h b/gst/realmedia/realhash.h
new file mode 100644 (file)
index 0000000..7ca3e1b
--- /dev/null
@@ -0,0 +1,31 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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_RTSP_HASH_H__
+#define __GST_RTSP_HASH_H__
+
+G_BEGIN_DECLS
+
+void
+gst_rtsp_ext_real_calc_response_and_checksum (char *response, char *chksum,
+    char *challenge);
+
+G_END_DECLS
+
+#endif /* __GST_RTSP_HASH_H__ */
diff --git a/gst/realmedia/realmedia.c b/gst/realmedia/realmedia.c
new file mode 100644 (file)
index 0000000..29a9250
--- /dev/null
@@ -0,0 +1,59 @@
+/* GStreamer
+ * Copyright (C) <2009> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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 "rmdemux.h"
+#include "rademux.h"
+#include "rdtdepay.h"
+#include "rdtmanager.h"
+#include "rtspreal.h"
+#include "pnmsrc.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_rmdemux_plugin_init (plugin))
+    return FALSE;
+
+  if (!gst_rademux_plugin_init (plugin))
+    return FALSE;
+
+  if (!gst_rdt_depay_plugin_init (plugin))
+    return FALSE;
+
+  if (!gst_rdt_manager_plugin_init (plugin))
+    return FALSE;
+
+  if (!gst_rtsp_real_plugin_init (plugin))
+    return FALSE;
+
+  if (!gst_pnm_src_plugin_init (plugin))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "realmedia",
+    "RealMedia support plugins",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/realmedia/rmdemux.c b/gst/realmedia/rmdemux.c
new file mode 100644 (file)
index 0000000..c17c877
--- /dev/null
@@ -0,0 +1,2671 @@
+/* GStreamer RealMedia demuxer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2003> David A. Schleef <ds@schleef.org>
+ * Copyright (C) <2004> Stephane Loeuillet <gstreamer@leroutier.net>
+ * Copyright (C) <2005> Owen Fraser-Green <owen@discobabe.net>
+ * Copyright (C) <2005> Michael Smith <fluendo.com>
+ * Copyright (C) <2006> Wim Taymans <wim@fluendo.com>
+ * Copyright (C) <2006> Tim-Philipp Müller <tim centricular net>
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
+ *
+ * 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
+
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include "rmdemux.h"
+#include "rmutils.h"
+
+#include <string.h>
+#include <ctype.h>
+
+#define RMDEMUX_GUINT32_GET(a)  GST_READ_UINT32_BE(a)
+#define RMDEMUX_GUINT16_GET(a)  GST_READ_UINT16_BE(a)
+#define RMDEMUX_FOURCC_GET(a)   GST_READ_UINT32_LE(a)
+#define HEADER_SIZE 10
+#define DATA_SIZE 8
+
+#define MAX_FRAGS 256
+
+static const guint8 sipr_subpk_size[4] = { 29, 19, 37, 20 };
+
+typedef struct _GstRMDemuxIndex GstRMDemuxIndex;
+
+struct _GstRMDemuxStream
+{
+  guint32 subtype;
+  guint32 fourcc;
+  guint32 subformat;
+  guint32 format;
+
+  int id;
+  GstPad *pad;
+  GstFlowReturn last_flow;
+  gboolean discont;
+  int timescale;
+
+  int sample_index;
+  GstRMDemuxIndex *index;
+  int index_length;
+  gint framerate_numerator;
+  gint framerate_denominator;
+  guint32 seek_offset;
+
+  guint16 width;
+  guint16 height;
+  guint16 flavor;
+  guint16 rate;                 /* samplerate         */
+  guint16 n_channels;           /* channels           */
+  guint16 sample_width;         /* bits_per_sample    */
+  guint16 leaf_size;            /* subpacket_size     */
+  guint32 packet_size;          /* coded_frame_size   */
+  guint16 version;
+  guint32 extra_data_size;      /* codec_data_length  */
+  guint8 *extra_data;           /* extras             */
+  guint32 bitrate;
+
+  gboolean needs_descrambling;
+  guint subpackets_needed;      /* subpackets needed for descrambling    */
+  GPtrArray *subpackets;        /* array containing subpacket GstBuffers */
+
+  /* Variables needed for fixing timestamps. */
+  GstClockTime next_ts, last_ts;
+  guint16 next_seq, last_seq;
+
+  gint frag_seqnum;
+  gint frag_subseq;
+  guint frag_length;
+  guint frag_current;
+  guint frag_count;
+  guint frag_offset[MAX_FRAGS];
+  GstAdapter *adapter;
+
+  GstTagList *pending_tags;
+};
+
+struct _GstRMDemuxIndex
+{
+  guint32 offset;
+  GstClockTime timestamp;
+};
+
+static GstStaticPadTemplate gst_rmdemux_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("application/vnd.rn-realmedia")
+    );
+
+static GstStaticPadTemplate gst_rmdemux_videosrc_template =
+GST_STATIC_PAD_TEMPLATE ("video_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate gst_rmdemux_audiosrc_template =
+GST_STATIC_PAD_TEMPLATE ("audio_%02d",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS_ANY);
+
+GST_DEBUG_CATEGORY_STATIC (rmdemux_debug);
+#define GST_CAT_DEFAULT rmdemux_debug
+
+static GstElementClass *parent_class = NULL;
+
+static void gst_rmdemux_class_init (GstRMDemuxClass * klass);
+static void gst_rmdemux_base_init (GstRMDemuxClass * klass);
+static void gst_rmdemux_init (GstRMDemux * rmdemux);
+static void gst_rmdemux_finalize (GObject * object);
+static GstStateChangeReturn gst_rmdemux_change_state (GstElement * element,
+    GstStateChange transition);
+static GstFlowReturn gst_rmdemux_chain (GstPad * pad, GstBuffer * buffer);
+static void gst_rmdemux_loop (GstPad * pad);
+static gboolean gst_rmdemux_sink_activate (GstPad * sinkpad);
+static gboolean gst_rmdemux_sink_activate_push (GstPad * sinkpad,
+    gboolean active);
+static gboolean gst_rmdemux_sink_activate_pull (GstPad * sinkpad,
+    gboolean active);
+static gboolean gst_rmdemux_sink_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rmdemux_src_event (GstPad * pad, GstEvent * event);
+static void gst_rmdemux_send_event (GstRMDemux * rmdemux, GstEvent * event);
+static const GstQueryType *gst_rmdemux_src_query_types (GstPad * pad);
+static gboolean gst_rmdemux_src_query (GstPad * pad, GstQuery * query);
+static gboolean gst_rmdemux_perform_seek (GstRMDemux * rmdemux,
+    GstEvent * event);
+
+static void gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data,
+    int length);
+static void gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data,
+    int length);
+static void gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux,
+    const guint8 * data, int length);
+static guint gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data,
+    int length);
+static void gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data,
+    int length);
+static void gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data,
+    int length);
+static GstFlowReturn gst_rmdemux_parse_packet (GstRMDemux * rmdemux,
+    GstBuffer * in, guint16 version);
+static void gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux,
+    const guint8 * data, int length);
+static void gst_rmdemux_stream_clear_cached_subpackets (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream);
+static GstRMDemuxStream *gst_rmdemux_get_stream_by_id (GstRMDemux * rmdemux,
+    int id);
+
+static GType
+gst_rmdemux_get_type (void)
+{
+  static GType rmdemux_type = 0;
+
+  if (!rmdemux_type) {
+    static const GTypeInfo rmdemux_info = {
+      sizeof (GstRMDemuxClass),
+      (GBaseInitFunc) gst_rmdemux_base_init, NULL,
+      (GClassInitFunc) gst_rmdemux_class_init,
+      NULL, NULL, sizeof (GstRMDemux), 0,
+      (GInstanceInitFunc) gst_rmdemux_init,
+    };
+
+    rmdemux_type =
+        g_type_register_static (GST_TYPE_ELEMENT, "GstRMDemux", &rmdemux_info,
+        0);
+  }
+  return rmdemux_type;
+}
+
+static void
+gst_rmdemux_base_init (GstRMDemuxClass * klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rmdemux_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rmdemux_videosrc_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rmdemux_audiosrc_template);
+  gst_element_class_set_details_simple (element_class, "RealMedia Demuxer",
+      "Codec/Demuxer",
+      "Demultiplex a RealMedia file into audio and video streams",
+      "David Schleef <ds@schleef.org>");
+}
+
+static void
+gst_rmdemux_class_init (GstRMDemuxClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_rmdemux_change_state);
+
+  GST_DEBUG_CATEGORY_INIT (rmdemux_debug, "rmdemux",
+      0, "Demuxer for Realmedia streams");
+
+  gobject_class->finalize = gst_rmdemux_finalize;
+}
+
+static void
+gst_rmdemux_finalize (GObject * object)
+{
+  GstRMDemux *rmdemux = GST_RMDEMUX (object);
+
+  if (rmdemux->adapter) {
+    g_object_unref (rmdemux->adapter);
+    rmdemux->adapter = NULL;
+  }
+
+  GST_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
+}
+
+static void
+gst_rmdemux_init (GstRMDemux * rmdemux)
+{
+  rmdemux->sinkpad =
+      gst_pad_new_from_static_template (&gst_rmdemux_sink_template, "sink");
+  gst_pad_set_event_function (rmdemux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_rmdemux_sink_event));
+  gst_pad_set_chain_function (rmdemux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_rmdemux_chain));
+  gst_pad_set_activate_function (rmdemux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_rmdemux_sink_activate));
+  gst_pad_set_activatepull_function (rmdemux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_rmdemux_sink_activate_pull));
+  gst_pad_set_activatepush_function (rmdemux->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_rmdemux_sink_activate_push));
+
+  gst_element_add_pad (GST_ELEMENT (rmdemux), rmdemux->sinkpad);
+
+  rmdemux->adapter = gst_adapter_new ();
+  rmdemux->first_ts = GST_CLOCK_TIME_NONE;
+  rmdemux->base_ts = GST_CLOCK_TIME_NONE;
+  rmdemux->need_newsegment = TRUE;
+
+  gst_rm_utils_run_tests ();
+}
+
+static gboolean
+gst_rmdemux_sink_event (GstPad * pad, GstEvent * event)
+{
+  GstRMDemux *rmdemux;
+  gboolean ret;
+
+  rmdemux = GST_RMDEMUX (gst_pad_get_parent (pad));
+
+  GST_LOG_OBJECT (pad, "%s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NEWSEGMENT:
+      gst_event_unref (event);
+      ret = TRUE;
+      break;
+    default:
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  gst_object_unref (rmdemux);
+  return ret;
+}
+
+static gboolean
+gst_rmdemux_src_event (GstPad * pad, GstEvent * event)
+{
+  gboolean ret = TRUE;
+
+  GstRMDemux *rmdemux = GST_RMDEMUX (GST_PAD_PARENT (pad));
+
+  GST_LOG_OBJECT (rmdemux, "handling src event");
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEEK:
+    {
+      gboolean running;
+
+      GST_LOG_OBJECT (rmdemux, "Event on src: SEEK");
+      /* can't seek if we are not seekable, FIXME could pass the
+       * seek query upstream after converting it to bytes using
+       * the average bitrate of the stream. */
+      if (!rmdemux->seekable) {
+        ret = FALSE;
+        GST_DEBUG ("seek on non seekable stream");
+        goto done_unref;
+      }
+
+      GST_OBJECT_LOCK (rmdemux);
+      /* check if we can do the seek now */
+      running = rmdemux->running;
+      GST_OBJECT_UNLOCK (rmdemux);
+
+      /* now do the seek */
+      if (running) {
+        ret = gst_rmdemux_perform_seek (rmdemux, event);
+      } else
+        ret = TRUE;
+
+      gst_event_unref (event);
+      break;
+    }
+    default:
+      GST_LOG_OBJECT (rmdemux, "Event on src: type=%d", GST_EVENT_TYPE (event));
+      ret = gst_pad_event_default (pad, event);
+      break;
+  }
+
+  return ret;
+
+done_unref:
+  GST_DEBUG ("error handling event");
+  gst_event_unref (event);
+  return ret;
+}
+
+/* Validate that this looks like a reasonable point to seek to */
+static gboolean
+gst_rmdemux_validate_offset (GstRMDemux * rmdemux)
+{
+  GstBuffer *buffer;
+  GstFlowReturn flowret;
+  guint16 version, length;
+  gboolean ret = TRUE;
+
+  flowret = gst_pad_pull_range (rmdemux->sinkpad, rmdemux->offset, 4, &buffer);
+
+  if (flowret != GST_FLOW_OK) {
+    GST_DEBUG_OBJECT (rmdemux, "Failed to pull data at offset %d",
+        rmdemux->offset);
+    return FALSE;
+  }
+  /* TODO: Can we also be seeking to a 'DATA' chunk header? Check this.
+   * Also, for the case we currently handle, can we check any more? It's pretty
+   * sucky to not be validating a little more heavily than this... */
+  /* This should now be the start of a data packet header. That begins with
+   * a 2-byte 'version' field, which has to be 0 or 1, then a length. I'm not
+   * certain what values are valid for length, but it must always be at least
+   * 4 bytes, and we can check that it won't take us past our known total size
+   */
+
+  version = RMDEMUX_GUINT16_GET (GST_BUFFER_DATA (buffer));
+  if (version != 0 && version != 1) {
+    GST_DEBUG_OBJECT (rmdemux, "Expected version 0 or 1, got %d",
+        (int) version);
+    ret = FALSE;
+  }
+
+  length = RMDEMUX_GUINT16_GET (GST_BUFFER_DATA (buffer) + 2);
+  /* TODO: Also check against total stream length */
+  if (length < 4) {
+    GST_DEBUG_OBJECT (rmdemux, "Expected length >= 4, got %d", (int) length);
+    ret = FALSE;
+  }
+
+  if (ret) {
+    rmdemux->offset += 4;
+    gst_adapter_clear (rmdemux->adapter);
+    gst_adapter_push (rmdemux->adapter, buffer);
+  } else {
+    GST_WARNING_OBJECT (rmdemux, "Failed to validate seek offset at %d",
+        rmdemux->offset);
+  }
+
+  return ret;
+}
+
+static gboolean
+find_seek_offset_bytes (GstRMDemux * rmdemux, guint target)
+{
+  int i;
+  GSList *cur;
+  gboolean ret = FALSE;
+
+  for (cur = rmdemux->streams; cur; cur = cur->next) {
+    GstRMDemuxStream *stream = cur->data;
+
+    /* Search backwards through this stream's index until we find the first
+     * timestamp before our target time */
+    for (i = stream->index_length - 1; i >= 0; i--) {
+      if (stream->index[i].offset <= target) {
+        /* Set the seek_offset for the stream so we don't bother parsing it
+         * until we've passed that point */
+        stream->seek_offset = stream->index[i].offset;
+        rmdemux->offset = stream->index[i].offset;
+        ret = TRUE;
+        break;
+      }
+    }
+  }
+  return ret;
+}
+
+static gboolean
+find_seek_offset_time (GstRMDemux * rmdemux, GstClockTime time)
+{
+  int i, n_stream;
+  gboolean ret = FALSE;
+  GSList *cur;
+  GstClockTime earliest = GST_CLOCK_TIME_NONE;
+
+  n_stream = 0;
+  for (cur = rmdemux->streams; cur; cur = cur->next, n_stream++) {
+    GstRMDemuxStream *stream = cur->data;
+
+    /* Search backwards through this stream's index until we find the first
+     * timestamp before our target time */
+    for (i = stream->index_length - 1; i >= 0; i--) {
+      if (stream->index[i].timestamp <= time) {
+        /* Set the seek_offset for the stream so we don't bother parsing it
+         * until we've passed that point */
+        stream->seek_offset = stream->index[i].offset;
+
+        /* If it's also the earliest timestamp we've seen of all streams, then
+         * that's our target!
+         */
+        if (earliest == GST_CLOCK_TIME_NONE ||
+            stream->index[i].timestamp < earliest) {
+          earliest = stream->index[i].timestamp;
+          rmdemux->offset = stream->index[i].offset;
+          GST_DEBUG_OBJECT (rmdemux,
+              "We're looking for %" GST_TIME_FORMAT
+              " and we found that stream %d has the latest index at %"
+              GST_TIME_FORMAT, GST_TIME_ARGS (rmdemux->segment.start), n_stream,
+              GST_TIME_ARGS (earliest));
+        }
+
+        ret = TRUE;
+
+        break;
+      }
+    }
+    stream->discont = TRUE;
+  }
+  return ret;
+}
+
+static gboolean
+gst_rmdemux_perform_seek (GstRMDemux * rmdemux, GstEvent * event)
+{
+  gboolean validated;
+  gboolean ret = TRUE;
+  gboolean flush;
+  GstFormat format;
+  gdouble rate;
+  GstSeekFlags flags;
+  GstSeekType cur_type, stop_type;
+  gint64 cur, stop;
+  gboolean update;
+
+  if (event) {
+    GST_DEBUG_OBJECT (rmdemux, "seek with event");
+
+    gst_event_parse_seek (event, &rate, &format, &flags,
+        &cur_type, &cur, &stop_type, &stop);
+
+    /* we can only seek on time */
+    if (format != GST_FORMAT_TIME) {
+      GST_DEBUG_OBJECT (rmdemux, "can only seek on TIME");
+      goto error;
+    }
+    /* cannot yet do backwards playback */
+    if (rate <= 0.0) {
+      GST_DEBUG_OBJECT (rmdemux, "can only seek with positive rate, not %lf",
+          rate);
+      goto error;
+    }
+  } else {
+    GST_DEBUG_OBJECT (rmdemux, "seek without event");
+
+    flags = 0;
+    rate = 1.0;
+  }
+
+  GST_DEBUG_OBJECT (rmdemux, "seek, rate %g", rate);
+
+  flush = flags & GST_SEEK_FLAG_FLUSH;
+
+  /* first step is to unlock the streaming thread if it is
+   * blocked in a chain call, we do this by starting the flush. */
+  if (flush) {
+    gst_pad_push_event (rmdemux->sinkpad, gst_event_new_flush_start ());
+    gst_rmdemux_send_event (rmdemux, gst_event_new_flush_start ());
+  } else {
+    gst_pad_pause_task (rmdemux->sinkpad);
+  }
+
+  GST_LOG_OBJECT (rmdemux, "Done starting flushes");
+
+  /* now grab the stream lock so that streaming cannot continue, for
+   * non flushing seeks when the element is in PAUSED this could block
+   * forever. */
+  GST_PAD_STREAM_LOCK (rmdemux->sinkpad);
+
+  GST_LOG_OBJECT (rmdemux, "Took streamlock");
+
+  /* close current segment first */
+  if (rmdemux->segment_running && !flush) {
+    GstEvent *newseg;
+
+    newseg = gst_event_new_new_segment (TRUE, rmdemux->segment.rate,
+        GST_FORMAT_TIME, rmdemux->segment.start,
+        rmdemux->segment.last_stop, rmdemux->segment.time);
+
+    gst_rmdemux_send_event (rmdemux, newseg);
+  }
+
+  if (event) {
+    gst_segment_set_seek (&rmdemux->segment, rate, format, flags,
+        cur_type, cur, stop_type, stop, &update);
+  }
+
+  GST_DEBUG_OBJECT (rmdemux, "segment positions set to %" GST_TIME_FORMAT "-%"
+      GST_TIME_FORMAT, GST_TIME_ARGS (rmdemux->segment.start),
+      GST_TIME_ARGS (rmdemux->segment.stop));
+
+  /* we need to stop flushing on the sinkpad as we're going to use it
+   * next. We can do this as we have the STREAM lock now. */
+  gst_pad_push_event (rmdemux->sinkpad, gst_event_new_flush_stop ());
+
+  GST_LOG_OBJECT (rmdemux, "Pushed FLUSH_STOP event");
+
+  /* For each stream, find the first index offset equal to or before our seek 
+   * target. Of these, find the smallest offset. That's where we seek to.
+   *
+   * Then we pull 4 bytes from that offset, and validate that we've seeked to a
+   * what looks like a plausible packet.
+   * If that fails, restart, with the seek target set to one less than the
+   * offset we just tried. If we run out of places to try, treat that as a fatal
+   * error.
+   */
+  if (!find_seek_offset_time (rmdemux, rmdemux->segment.last_stop)) {
+    GST_LOG_OBJECT (rmdemux, "Failed to find seek offset by time");
+    ret = FALSE;
+    goto done;
+  }
+
+  GST_LOG_OBJECT (rmdemux, "Validating offset %u", rmdemux->offset);
+  validated = gst_rmdemux_validate_offset (rmdemux);
+  while (!validated) {
+    GST_INFO_OBJECT (rmdemux, "Failed to validate offset at %u",
+        rmdemux->offset);
+    if (!find_seek_offset_bytes (rmdemux, rmdemux->offset - 1)) {
+      ret = FALSE;
+      goto done;
+    }
+    validated = gst_rmdemux_validate_offset (rmdemux);
+  }
+
+  GST_LOG_OBJECT (rmdemux, "Found final offset. Excellent!");
+
+  /* now we have a new position, prepare for streaming again */
+  {
+    /* Reset the demuxer state */
+    rmdemux->state = RMDEMUX_STATE_DATA_PACKET;
+
+    if (flush)
+      gst_rmdemux_send_event (rmdemux, gst_event_new_flush_stop ());
+
+    /* must send newsegment event from streaming thread, so just set flag */
+    rmdemux->need_newsegment = TRUE;
+
+    /* notify start of new segment */
+    if (rmdemux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
+      gst_element_post_message (GST_ELEMENT_CAST (rmdemux),
+          gst_message_new_segment_start (GST_OBJECT_CAST (rmdemux),
+              GST_FORMAT_TIME, rmdemux->segment.last_stop));
+    }
+
+    /* restart our task since it might have been stopped when we did the 
+     * flush. */
+    gst_pad_start_task (rmdemux->sinkpad, (GstTaskFunction) gst_rmdemux_loop,
+        rmdemux->sinkpad);
+  }
+
+done:
+  /* streaming can continue now */
+  GST_PAD_STREAM_UNLOCK (rmdemux->sinkpad);
+
+  return ret;
+
+error:
+  {
+    GST_DEBUG_OBJECT (rmdemux, "seek failed");
+    return FALSE;
+  }
+}
+
+
+static gboolean
+gst_rmdemux_src_query (GstPad * pad, GstQuery * query)
+{
+  gboolean res = FALSE;
+  GstRMDemux *rmdemux;
+
+  rmdemux = GST_RMDEMUX (gst_pad_get_parent (pad));
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_POSITION:
+      GST_DEBUG_OBJECT (rmdemux, "Position query: no idea from demuxer!");
+      break;
+    case GST_QUERY_DURATION:{
+      GstFormat fmt;
+
+      gst_query_parse_duration (query, &fmt, NULL);
+      if (fmt == GST_FORMAT_TIME) {
+        GST_OBJECT_LOCK (rmdemux);
+        if (G_LIKELY (rmdemux->running)) {
+          gst_query_set_duration (query, GST_FORMAT_TIME, rmdemux->duration);
+          GST_DEBUG_OBJECT (rmdemux, "duration set to %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (rmdemux->duration));
+          res = TRUE;
+        }
+        GST_OBJECT_UNLOCK (rmdemux);
+      }
+      break;
+    }
+    case GST_QUERY_SEEKING:{
+      GstFormat fmt;
+
+      gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
+      if (fmt == GST_FORMAT_TIME) {
+        GST_OBJECT_LOCK (rmdemux);
+        if (G_LIKELY (rmdemux->running)) {
+          gst_query_set_seeking (query, GST_FORMAT_TIME, rmdemux->seekable,
+              0, rmdemux->duration);
+          res = TRUE;
+        }
+        GST_OBJECT_UNLOCK (rmdemux);
+      }
+      break;
+    }
+    default:
+      res = gst_pad_query_default (pad, query);
+      break;
+  }
+
+  gst_object_unref (rmdemux);
+  return res;
+}
+
+static const GstQueryType *
+gst_rmdemux_src_query_types (GstPad * pad)
+{
+  static const GstQueryType query_types[] = {
+    GST_QUERY_POSITION,
+    GST_QUERY_DURATION,
+    GST_QUERY_SEEKING,
+    0
+  };
+
+  return query_types;
+}
+
+static void
+gst_rmdemux_reset (GstRMDemux * rmdemux)
+{
+  GSList *cur;
+
+  GST_OBJECT_LOCK (rmdemux);
+  rmdemux->running = FALSE;
+  GST_OBJECT_UNLOCK (rmdemux);
+
+  for (cur = rmdemux->streams; cur; cur = cur->next) {
+    GstRMDemuxStream *stream = cur->data;
+
+    g_object_unref (stream->adapter);
+    gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
+    gst_element_remove_pad (GST_ELEMENT (rmdemux), stream->pad);
+    if (stream->pending_tags)
+      gst_tag_list_free (stream->pending_tags);
+    if (stream->subpackets)
+      g_ptr_array_free (stream->subpackets, TRUE);
+    g_free (stream->index);
+    g_free (stream);
+  }
+  g_slist_free (rmdemux->streams);
+  rmdemux->streams = NULL;
+  rmdemux->n_audio_streams = 0;
+  rmdemux->n_video_streams = 0;
+
+  if (rmdemux->pending_tags != NULL) {
+    gst_tag_list_free (rmdemux->pending_tags);
+    rmdemux->pending_tags = NULL;
+  }
+
+  gst_adapter_clear (rmdemux->adapter);
+  rmdemux->state = RMDEMUX_STATE_HEADER;
+  rmdemux->have_pads = FALSE;
+
+  gst_segment_init (&rmdemux->segment, GST_FORMAT_UNDEFINED);
+  rmdemux->first_ts = GST_CLOCK_TIME_NONE;
+  rmdemux->base_ts = GST_CLOCK_TIME_NONE;
+  rmdemux->need_newsegment = TRUE;
+}
+
+static GstStateChangeReturn
+gst_rmdemux_change_state (GstElement * element, GstStateChange transition)
+{
+  GstRMDemux *rmdemux = GST_RMDEMUX (element);
+  GstStateChangeReturn res;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      rmdemux->state = RMDEMUX_STATE_HEADER;
+      rmdemux->have_pads = FALSE;
+      gst_segment_init (&rmdemux->segment, GST_FORMAT_TIME);
+      rmdemux->running = FALSE;
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  res = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:{
+      gst_rmdemux_reset (rmdemux);
+      break;
+    }
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+
+  return res;
+}
+
+/* this function is called when the pad is activated and should start
+ * processing data.
+ *
+ * We check if we can do random access to decide if we work push or
+ * pull based.
+ */
+static gboolean
+gst_rmdemux_sink_activate (GstPad * sinkpad)
+{
+  if (gst_pad_check_pull_range (sinkpad)) {
+    return gst_pad_activate_pull (sinkpad, TRUE);
+  } else {
+    return gst_pad_activate_push (sinkpad, TRUE);
+  }
+}
+
+/* this function gets called when we activate ourselves in push mode.
+ * We cannot seek (ourselves) in the stream */
+static gboolean
+gst_rmdemux_sink_activate_push (GstPad * pad, gboolean active)
+{
+  GstRMDemux *rmdemux;
+
+  rmdemux = GST_RMDEMUX (GST_PAD_PARENT (pad));
+
+  GST_DEBUG_OBJECT (rmdemux, "activate_push");
+
+  rmdemux->seekable = FALSE;
+
+  return TRUE;
+}
+
+/* this function gets called when we activate ourselves in pull mode.
+ * We can perform  random access to the resource and we start a task
+ * to start reading */
+static gboolean
+gst_rmdemux_sink_activate_pull (GstPad * pad, gboolean active)
+{
+  GstRMDemux *rmdemux;
+
+  rmdemux = GST_RMDEMUX (GST_PAD_PARENT (pad));
+
+  GST_DEBUG_OBJECT (rmdemux, "activate_pull");
+
+  if (active) {
+    rmdemux->seekable = TRUE;
+    rmdemux->offset = 0;
+    rmdemux->loop_state = RMDEMUX_LOOP_STATE_HEADER;
+    rmdemux->data_offset = G_MAXUINT;
+
+    return gst_pad_start_task (pad, (GstTaskFunction) gst_rmdemux_loop, pad);
+  } else {
+    return gst_pad_stop_task (pad);
+  }
+}
+
+/* random access mode - just pass over to our chain function */
+static void
+gst_rmdemux_loop (GstPad * pad)
+{
+  GstRMDemux *rmdemux;
+  GstBuffer *buffer;
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint size;
+
+  rmdemux = GST_RMDEMUX (GST_PAD_PARENT (pad));
+
+  GST_LOG_OBJECT (rmdemux, "loop with state=%d and offset=0x%x",
+      rmdemux->loop_state, rmdemux->offset);
+
+  switch (rmdemux->state) {
+    case RMDEMUX_STATE_HEADER:
+      size = HEADER_SIZE;
+      break;
+    case RMDEMUX_STATE_HEADER_DATA:
+      size = DATA_SIZE;
+      break;
+    case RMDEMUX_STATE_DATA_PACKET:
+      size = rmdemux->avg_packet_size;
+      break;
+    case RMDEMUX_STATE_EOS:
+      GST_LOG_OBJECT (rmdemux, "At EOS, pausing task");
+      ret = GST_FLOW_UNEXPECTED;
+      goto need_pause;
+    default:
+      GST_LOG_OBJECT (rmdemux, "Default: requires %d bytes (state is %d)",
+          (int) rmdemux->size, rmdemux->state);
+      size = rmdemux->size;
+  }
+
+  ret = gst_pad_pull_range (pad, rmdemux->offset, size, &buffer);
+  if (ret != GST_FLOW_OK) {
+    if (rmdemux->offset == rmdemux->index_offset) {
+      /* The index isn't available so forget about it */
+      rmdemux->loop_state = RMDEMUX_LOOP_STATE_DATA;
+      rmdemux->offset = rmdemux->data_offset;
+      GST_OBJECT_LOCK (rmdemux);
+      rmdemux->running = TRUE;
+      rmdemux->seekable = FALSE;
+      GST_OBJECT_UNLOCK (rmdemux);
+      return;
+    } else {
+      GST_DEBUG_OBJECT (rmdemux, "Unable to pull %d bytes at offset 0x%08x "
+          "(pull_range returned flow %s, state is %d)", (gint) size,
+          rmdemux->offset, gst_flow_get_name (ret), GST_STATE (rmdemux));
+      goto need_pause;
+    }
+  }
+
+  size = GST_BUFFER_SIZE (buffer);
+
+  /* Defer to the chain function */
+  ret = gst_rmdemux_chain (pad, buffer);
+  if (ret != GST_FLOW_OK) {
+    GST_DEBUG_OBJECT (rmdemux, "Chain flow failed at offset 0x%08x",
+        rmdemux->offset);
+    goto need_pause;
+  }
+
+  rmdemux->offset += size;
+
+  switch (rmdemux->loop_state) {
+    case RMDEMUX_LOOP_STATE_HEADER:
+      if (rmdemux->offset >= rmdemux->data_offset) {
+        /* It's the end of the header */
+        rmdemux->loop_state = RMDEMUX_LOOP_STATE_INDEX;
+        rmdemux->offset = rmdemux->index_offset;
+      }
+      break;
+    case RMDEMUX_LOOP_STATE_INDEX:
+      if (rmdemux->state == RMDEMUX_STATE_HEADER) {
+        if (rmdemux->index_offset == 0) {
+          /* We've read the last index */
+          rmdemux->loop_state = RMDEMUX_LOOP_STATE_DATA;
+          rmdemux->offset = rmdemux->data_offset;
+          GST_OBJECT_LOCK (rmdemux);
+          rmdemux->running = TRUE;
+          GST_OBJECT_UNLOCK (rmdemux);
+        } else {
+          /* Get the next index */
+          rmdemux->offset = rmdemux->index_offset;
+        }
+      }
+      break;
+    case RMDEMUX_LOOP_STATE_DATA:
+      break;
+  }
+
+  return;
+
+  /* ERRORS */
+need_pause:
+  {
+    const gchar *reason = gst_flow_get_name (ret);
+
+    GST_LOG_OBJECT (rmdemux, "pausing task, reason %s", reason);
+    rmdemux->segment_running = FALSE;
+    gst_pad_pause_task (rmdemux->sinkpad);
+
+    if (ret == GST_FLOW_UNEXPECTED) {
+      /* perform EOS logic */
+      if (rmdemux->segment.flags & GST_SEEK_FLAG_SEGMENT) {
+        gint64 stop;
+
+        /* for segment playback we need to post when (in stream time)
+         * we stopped, this is either stop (when set) or the duration. */
+        if ((stop = rmdemux->segment.stop) == -1)
+          stop = rmdemux->segment.duration;
+
+        GST_LOG_OBJECT (rmdemux, "Sending segment done, at end of segment");
+        gst_element_post_message (GST_ELEMENT (rmdemux),
+            gst_message_new_segment_done (GST_OBJECT (rmdemux),
+                GST_FORMAT_TIME, stop));
+      } else {
+        /* normal playback, send EOS to all linked pads */
+        GST_LOG_OBJECT (rmdemux, "Sending EOS, at end of stream");
+        gst_rmdemux_send_event (rmdemux, gst_event_new_eos ());
+      }
+    } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_UNEXPECTED) {
+      GST_ELEMENT_ERROR (rmdemux, STREAM, FAILED,
+          (NULL), ("stream stopped, reason %s", reason));
+      gst_rmdemux_send_event (rmdemux, gst_event_new_eos ());
+    }
+    return;
+  }
+}
+
+static gboolean
+gst_rmdemux_fourcc_isplausible (guint32 fourcc)
+{
+  int i;
+
+  for (i = 0; i < 4; i++) {
+    if (!isprint ((int) ((unsigned char *) (&fourcc))[i])) {
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_rmdemux_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  const guint8 *data;
+  guint16 version;
+  guint avail;
+
+  GstRMDemux *rmdemux = GST_RMDEMUX (GST_PAD_PARENT (pad));
+
+  if (rmdemux->base_ts == -1) {
+    rmdemux->base_ts = GST_BUFFER_TIMESTAMP (buffer);
+    GST_LOG_OBJECT (rmdemux, "base_ts %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (rmdemux->base_ts));
+  }
+
+  gst_adapter_push (rmdemux->adapter, buffer);
+
+  GST_LOG_OBJECT (rmdemux, "Chaining buffer of size %d",
+      GST_BUFFER_SIZE (buffer));
+
+  while (TRUE) {
+    avail = gst_adapter_available (rmdemux->adapter);
+
+    GST_LOG_OBJECT (rmdemux, "looping in chain, avail %u", avail);
+    switch (rmdemux->state) {
+      case RMDEMUX_STATE_HEADER:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < HEADER_SIZE)
+          goto unlock;
+
+        data = gst_adapter_peek (rmdemux->adapter, HEADER_SIZE);
+
+        rmdemux->object_id = RMDEMUX_FOURCC_GET (data + 0);
+        rmdemux->size = RMDEMUX_GUINT32_GET (data + 4) - HEADER_SIZE;
+        rmdemux->object_version = RMDEMUX_GUINT16_GET (data + 8);
+
+        /* Sanity-check. We assume that the FOURCC is printable ASCII */
+        if (!gst_rmdemux_fourcc_isplausible (rmdemux->object_id)) {
+          /* Failed. Remain in HEADER state, try again... We flush only 
+           * the actual FOURCC, not the entire header, because we could 
+           * need to resync anywhere at all... really, this should never 
+           * happen. */
+          GST_WARNING_OBJECT (rmdemux, "Bogus looking header, unprintable "
+              "FOURCC");
+          gst_adapter_flush (rmdemux->adapter, 4);
+
+          break;
+        }
+
+        GST_LOG_OBJECT (rmdemux, "header found with object_id=%"
+            GST_FOURCC_FORMAT
+            " size=%08x object_version=%d",
+            GST_FOURCC_ARGS (rmdemux->object_id), rmdemux->size,
+            rmdemux->object_version);
+
+        gst_adapter_flush (rmdemux->adapter, HEADER_SIZE);
+
+        switch (rmdemux->object_id) {
+          case GST_MAKE_FOURCC ('.', 'R', 'M', 'F'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_RMF;
+            break;
+          case GST_MAKE_FOURCC ('P', 'R', 'O', 'P'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_PROP;
+            break;
+          case GST_MAKE_FOURCC ('M', 'D', 'P', 'R'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_MDPR;
+            break;
+          case GST_MAKE_FOURCC ('I', 'N', 'D', 'X'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_INDX;
+            break;
+          case GST_MAKE_FOURCC ('D', 'A', 'T', 'A'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_DATA;
+            break;
+          case GST_MAKE_FOURCC ('C', 'O', 'N', 'T'):
+            rmdemux->state = RMDEMUX_STATE_HEADER_CONT;
+            break;
+          default:
+            rmdemux->state = RMDEMUX_STATE_HEADER_UNKNOWN;
+            break;
+        }
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_UNKNOWN:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+
+        GST_WARNING_OBJECT (rmdemux, "Unknown object_id %" GST_FOURCC_FORMAT,
+            GST_FOURCC_ARGS (rmdemux->object_id));
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_RMF:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+
+        if ((rmdemux->object_version == 0) || (rmdemux->object_version == 1)) {
+          data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+          gst_rmdemux_parse__rmf (rmdemux, data, rmdemux->size);
+        }
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_PROP:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+        data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+        gst_rmdemux_parse_prop (rmdemux, data, rmdemux->size);
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_MDPR:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+        data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+        gst_rmdemux_parse_mdpr (rmdemux, data, rmdemux->size);
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_CONT:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+        data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+        gst_rmdemux_parse_cont (rmdemux, data, rmdemux->size);
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_DATA:
+      {
+        /* If we haven't already done so then signal there are no more pads */
+        if (!rmdemux->have_pads) {
+          GST_LOG_OBJECT (rmdemux, "no more pads");
+          gst_element_no_more_pads (GST_ELEMENT (rmdemux));
+          rmdemux->have_pads = TRUE;
+        }
+
+        /* The actual header is only 8 bytes */
+        rmdemux->size = DATA_SIZE;
+        GST_LOG_OBJECT (rmdemux, "data available %d",
+            gst_adapter_available (rmdemux->adapter));
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+
+        data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+        gst_rmdemux_parse_data (rmdemux, data, rmdemux->size);
+
+        gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+
+        rmdemux->state = RMDEMUX_STATE_DATA_PACKET;
+        break;
+      }
+      case RMDEMUX_STATE_HEADER_INDX:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+          goto unlock;
+        data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+        rmdemux->size = gst_rmdemux_parse_indx (rmdemux, data, rmdemux->size);
+
+        /* Only flush the header */
+        gst_adapter_flush (rmdemux->adapter, HEADER_SIZE);
+
+        rmdemux->state = RMDEMUX_STATE_INDX_DATA;
+        break;
+      }
+      case RMDEMUX_STATE_INDX_DATA:
+      {
+        /* There's not always an data to get... */
+        if (rmdemux->size > 0) {
+          if (gst_adapter_available (rmdemux->adapter) < rmdemux->size)
+            goto unlock;
+
+          data = gst_adapter_peek (rmdemux->adapter, rmdemux->size);
+
+          gst_rmdemux_parse_indx_data (rmdemux, data, rmdemux->size);
+
+          gst_adapter_flush (rmdemux->adapter, rmdemux->size);
+        }
+
+        rmdemux->state = RMDEMUX_STATE_HEADER;
+        break;
+      }
+      case RMDEMUX_STATE_DATA_PACKET:
+      {
+        if (gst_adapter_available (rmdemux->adapter) < 2)
+          goto unlock;
+
+        data = gst_adapter_peek (rmdemux->adapter, 2);
+        version = RMDEMUX_GUINT16_GET (data);
+        GST_LOG_OBJECT (rmdemux, "Data packet with version=%d", version);
+
+        if (version == 0 || version == 1) {
+          guint16 length;
+
+          if (gst_adapter_available (rmdemux->adapter) < 4)
+            goto unlock;
+          data = gst_adapter_peek (rmdemux->adapter, 4);
+
+          length = RMDEMUX_GUINT16_GET (data + 2);
+          GST_LOG_OBJECT (rmdemux, "Got length %d", length);
+
+          if (length < 4) {
+            GST_LOG_OBJECT (rmdemux, "length too small, dropping");
+            /* Invalid, just drop it */
+            gst_adapter_flush (rmdemux->adapter, 4);
+          } else {
+            GstBuffer *buffer;
+
+            avail = gst_adapter_available (rmdemux->adapter);
+            if (avail < length)
+              goto unlock;
+
+            GST_LOG_OBJECT (rmdemux, "we have %u available and we needed %d",
+                avail, length);
+
+            /* flush version and length */
+            gst_adapter_flush (rmdemux->adapter, 4);
+            length -= 4;
+
+            buffer = gst_adapter_take_buffer (rmdemux->adapter, length);
+
+            ret = gst_rmdemux_parse_packet (rmdemux, buffer, version);
+            rmdemux->chunk_index++;
+          }
+
+          if (rmdemux->chunk_index == rmdemux->n_chunks || length == 0)
+            rmdemux->state = RMDEMUX_STATE_HEADER;
+        } else {
+          /* Stream done */
+          gst_adapter_flush (rmdemux->adapter, 2);
+
+          if (rmdemux->data_offset == 0) {
+            GST_LOG_OBJECT (rmdemux,
+                "No further data, internal demux state EOS");
+            rmdemux->state = RMDEMUX_STATE_EOS;
+          } else
+            rmdemux->state = RMDEMUX_STATE_HEADER;
+        }
+        break;
+      }
+      case RMDEMUX_STATE_EOS:
+        gst_rmdemux_send_event (rmdemux, gst_event_new_eos ());
+        goto unlock;
+      default:
+        GST_WARNING_OBJECT (rmdemux, "Unhandled state %d", rmdemux->state);
+        goto unlock;
+    }
+  }
+
+unlock:
+  return ret;
+}
+
+static GstRMDemuxStream *
+gst_rmdemux_get_stream_by_id (GstRMDemux * rmdemux, int id)
+{
+  GSList *cur;
+
+  for (cur = rmdemux->streams; cur; cur = cur->next) {
+    GstRMDemuxStream *stream = cur->data;
+
+    if (stream->id == id) {
+      return stream;
+    }
+  }
+
+  return NULL;
+}
+
+static void
+gst_rmdemux_send_event (GstRMDemux * rmdemux, GstEvent * event)
+{
+  GSList *cur;
+
+  for (cur = rmdemux->streams; cur; cur = cur->next) {
+    GstRMDemuxStream *stream = cur->data;
+
+    GST_DEBUG_OBJECT (rmdemux, "Pushing %s event on pad %s",
+        GST_EVENT_TYPE_NAME (event), GST_PAD_NAME (stream->pad));
+
+    switch (GST_EVENT_TYPE (event)) {
+      case GST_EVENT_FLUSH_STOP:
+        stream->last_ts = -1;
+        stream->next_ts = -1;
+        stream->last_seq = -1;
+        stream->next_seq = -1;
+        stream->last_flow = GST_FLOW_OK;
+        break;
+      default:
+        break;
+    }
+    gst_event_ref (event);
+    gst_pad_push_event (stream->pad, event);
+  }
+  gst_event_unref (event);
+}
+
+static void
+gst_rmdemux_add_stream (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
+{
+  GstCaps *stream_caps = NULL;
+  const gchar *codec_tag = NULL;
+  gchar *codec_name = NULL;
+  int version = 0;
+
+  if (stream->subtype == GST_RMDEMUX_STREAM_VIDEO) {
+    char *name = g_strdup_printf ("video_%02d", rmdemux->n_video_streams);
+
+    stream->pad =
+        gst_pad_new_from_static_template (&gst_rmdemux_videosrc_template, name);
+    g_free (name);
+
+    codec_tag = GST_TAG_VIDEO_CODEC;
+
+    switch (stream->fourcc) {
+      case GST_RM_VDO_RV10:
+        version = 1;
+        break;
+      case GST_RM_VDO_RV20:
+        version = 2;
+        break;
+      case GST_RM_VDO_RV30:
+        version = 3;
+        break;
+      case GST_RM_VDO_RV40:
+        version = 4;
+        break;
+      default:
+        stream_caps = gst_caps_new_simple ("video/x-unknown-fourcc",
+            "fourcc", GST_TYPE_FOURCC, stream->fourcc, NULL);
+        GST_WARNING_OBJECT (rmdemux,
+            "Unknown video FOURCC code \"%" GST_FOURCC_FORMAT "\" (%08x)",
+            GST_FOURCC_ARGS (stream->fourcc), stream->fourcc);
+    }
+
+    if (version) {
+      stream_caps =
+          gst_caps_new_simple ("video/x-pn-realvideo", "rmversion", G_TYPE_INT,
+          (int) version,
+          "format", G_TYPE_INT,
+          (int) stream->format,
+          "subformat", G_TYPE_INT, (int) stream->subformat, NULL);
+    }
+
+    if (stream_caps) {
+      gst_caps_set_simple (stream_caps,
+          "width", G_TYPE_INT, stream->width,
+          "height", G_TYPE_INT, stream->height,
+          "framerate", GST_TYPE_FRACTION, stream->framerate_numerator,
+          stream->framerate_denominator, NULL);
+    }
+    rmdemux->n_video_streams++;
+
+  } else if (stream->subtype == GST_RMDEMUX_STREAM_AUDIO) {
+    char *name = g_strdup_printf ("audio_%02d", rmdemux->n_audio_streams);
+
+    stream->pad =
+        gst_pad_new_from_static_template (&gst_rmdemux_audiosrc_template, name);
+    GST_LOG_OBJECT (rmdemux, "Created audio pad \"%s\"", name);
+    g_free (name);
+
+    codec_tag = GST_TAG_AUDIO_CODEC;
+
+    switch (stream->fourcc) {
+        /* Older RealAudio Codecs */
+      case GST_RM_AUD_14_4:
+        version = 1;
+        break;
+
+      case GST_RM_AUD_28_8:
+        version = 2;
+        break;
+
+        /* DolbyNet (Dolby AC3, low bitrate) */
+      case GST_RM_AUD_DNET:
+        stream_caps =
+            gst_caps_new_simple ("audio/x-ac3", "rate", G_TYPE_INT,
+            (int) stream->rate, NULL);
+        stream->needs_descrambling = TRUE;
+        stream->subpackets_needed = 1;
+        stream->subpackets = NULL;
+        break;
+
+        /* MPEG-4 based */
+      case GST_RM_AUD_RAAC:
+      case GST_RM_AUD_RACP:
+        stream_caps =
+            gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT,
+            (int) 4, "framed", G_TYPE_BOOLEAN, TRUE, NULL);
+        if (stream->extra_data_size > 0) {
+          /* strip off an unknown byte in the extra data */
+          stream->extra_data_size--;
+          stream->extra_data++;
+        }
+        stream->needs_descrambling = TRUE;
+        stream->subpackets_needed = 1;
+        stream->subpackets = NULL;
+        break;
+
+        /* Sony ATRAC3 */
+      case GST_RM_AUD_ATRC:
+        stream_caps = gst_caps_new_simple ("audio/x-vnd.sony.atrac3", NULL);
+        stream->needs_descrambling = TRUE;
+        stream->subpackets_needed = stream->height;
+        stream->subpackets = NULL;
+        break;
+
+        /* RealAudio G2 audio */
+      case GST_RM_AUD_COOK:
+        version = 8;
+        stream->needs_descrambling = TRUE;
+        stream->subpackets_needed = stream->height;
+        stream->subpackets = NULL;
+        break;
+
+        /* RALF is lossless */
+      case GST_RM_AUD_RALF:
+        GST_DEBUG_OBJECT (rmdemux, "RALF");
+        stream_caps = gst_caps_new_simple ("audio/x-ralf-mpeg4-generic", NULL);
+        break;
+
+      case GST_RM_AUD_SIPR:
+
+        if (stream->flavor > 3) {
+          GST_WARNING_OBJECT (rmdemux, "bad SIPR flavor %d, freeing it",
+              stream->flavor);
+          g_free (stream);
+          goto beach;
+        }
+
+        GST_DEBUG_OBJECT (rmdemux, "SIPR");
+        stream_caps = gst_caps_new_simple ("audio/x-sipro", NULL);
+        stream->needs_descrambling = TRUE;
+        stream->subpackets_needed = stream->height;
+        stream->subpackets = NULL;
+        stream->leaf_size = sipr_subpk_size[stream->flavor];
+
+        break;
+
+      default:
+        stream_caps = gst_caps_new_simple ("video/x-unknown-fourcc",
+            "fourcc", GST_TYPE_FOURCC, stream->fourcc, NULL);
+        GST_WARNING_OBJECT (rmdemux,
+            "Unknown audio FOURCC code \"%" GST_FOURCC_FORMAT "\" (%08x)",
+            GST_FOURCC_ARGS (stream->fourcc), stream->fourcc);
+        break;
+    }
+
+    if (version) {
+      stream_caps =
+          gst_caps_new_simple ("audio/x-pn-realaudio", "raversion", G_TYPE_INT,
+          (int) version, NULL);
+    }
+
+    if (stream_caps) {
+      gst_caps_set_simple (stream_caps,
+          "flavor", G_TYPE_INT, (int) stream->flavor,
+          "rate", G_TYPE_INT, (int) stream->rate,
+          "channels", G_TYPE_INT, (int) stream->n_channels,
+          "width", G_TYPE_INT, (int) stream->sample_width,
+          "leaf_size", G_TYPE_INT, (int) stream->leaf_size,
+          "packet_size", G_TYPE_INT, (int) stream->packet_size,
+          "bitrate", G_TYPE_INT, (int) stream->bitrate,
+          "height", G_TYPE_INT, (int) stream->height, NULL);
+    }
+    rmdemux->n_audio_streams++;
+  } else {
+    GST_WARNING_OBJECT (rmdemux, "not adding stream of type %d, freeing it",
+        stream->subtype);
+    g_free (stream);
+    goto beach;
+  }
+
+  GST_PAD_ELEMENT_PRIVATE (stream->pad) = stream;
+  rmdemux->streams = g_slist_append (rmdemux->streams, stream);
+  GST_LOG_OBJECT (rmdemux, "n_streams is now %d",
+      g_slist_length (rmdemux->streams));
+
+  GST_LOG ("stream->pad = %p, stream_caps = %" GST_PTR_FORMAT, stream->pad,
+      stream_caps);
+
+  if (stream->pad && stream_caps) {
+
+    GST_LOG_OBJECT (rmdemux, "%d bytes of extra data for stream %s",
+        stream->extra_data_size, GST_PAD_NAME (stream->pad));
+
+    /* add codec_data if there is any */
+    if (stream->extra_data_size > 0) {
+      GstBuffer *buffer;
+
+      buffer = gst_buffer_new_and_alloc (stream->extra_data_size);
+      memcpy (GST_BUFFER_DATA (buffer), stream->extra_data,
+          stream->extra_data_size);
+
+      gst_caps_set_simple (stream_caps, "codec_data", GST_TYPE_BUFFER,
+          buffer, NULL);
+
+      gst_buffer_unref (buffer);
+    }
+
+    gst_pad_use_fixed_caps (stream->pad);
+
+    gst_pad_set_caps (stream->pad, stream_caps);
+    gst_pad_set_event_function (stream->pad,
+        GST_DEBUG_FUNCPTR (gst_rmdemux_src_event));
+    gst_pad_set_query_type_function (stream->pad,
+        GST_DEBUG_FUNCPTR (gst_rmdemux_src_query_types));
+    gst_pad_set_query_function (stream->pad,
+        GST_DEBUG_FUNCPTR (gst_rmdemux_src_query));
+
+    GST_DEBUG_OBJECT (rmdemux, "adding pad %s with caps %" GST_PTR_FORMAT
+        ", stream_id=%d", GST_PAD_NAME (stream->pad), stream_caps, stream->id);
+    gst_pad_set_active (stream->pad, TRUE);
+    gst_element_add_pad (GST_ELEMENT_CAST (rmdemux), stream->pad);
+
+    codec_name = gst_pb_utils_get_codec_description (stream_caps);
+
+    /* save for later, we must send the tags after the newsegment event */
+    if (codec_tag != NULL && codec_name != NULL) {
+      if (stream->pending_tags == NULL)
+        stream->pending_tags = gst_tag_list_new ();
+      gst_tag_list_add (stream->pending_tags, GST_TAG_MERGE_KEEP,
+          codec_tag, codec_name, NULL);
+      g_free (codec_name);
+    }
+  }
+
+beach:
+
+  if (stream_caps)
+    gst_caps_unref (stream_caps);
+}
+
+static int
+re_skip_pascal_string (const guint8 * ptr)
+{
+  int length;
+
+  length = ptr[0];
+
+  return length + 1;
+}
+
+static void
+gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  GST_LOG_OBJECT (rmdemux, "file_version: %d", RMDEMUX_GUINT32_GET (data));
+  GST_LOG_OBJECT (rmdemux, "num_headers: %d", RMDEMUX_GUINT32_GET (data + 4));
+}
+
+static void
+gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  GST_LOG_OBJECT (rmdemux, "max bitrate: %d", RMDEMUX_GUINT32_GET (data));
+  GST_LOG_OBJECT (rmdemux, "avg bitrate: %d", RMDEMUX_GUINT32_GET (data + 4));
+  GST_LOG_OBJECT (rmdemux, "max packet size: %d",
+      RMDEMUX_GUINT32_GET (data + 8));
+  rmdemux->avg_packet_size = RMDEMUX_GUINT32_GET (data + 12);
+  GST_LOG_OBJECT (rmdemux, "avg packet size: %d", rmdemux->avg_packet_size);
+  rmdemux->num_packets = RMDEMUX_GUINT32_GET (data + 16);
+  GST_LOG_OBJECT (rmdemux, "number of packets: %d", rmdemux->num_packets);
+
+  GST_LOG_OBJECT (rmdemux, "duration: %d", RMDEMUX_GUINT32_GET (data + 20));
+  rmdemux->duration = RMDEMUX_GUINT32_GET (data + 20) * GST_MSECOND;
+
+  GST_LOG_OBJECT (rmdemux, "preroll: %d", RMDEMUX_GUINT32_GET (data + 24));
+  rmdemux->index_offset = RMDEMUX_GUINT32_GET (data + 28);
+  GST_LOG_OBJECT (rmdemux, "offset of INDX section: 0x%08x",
+      rmdemux->index_offset);
+  rmdemux->data_offset = RMDEMUX_GUINT32_GET (data + 32);
+  GST_LOG_OBJECT (rmdemux, "offset of DATA section: 0x%08x",
+      rmdemux->data_offset);
+  GST_LOG_OBJECT (rmdemux, "n streams: %d", RMDEMUX_GUINT16_GET (data + 36));
+  GST_LOG_OBJECT (rmdemux, "flags: 0x%04x", RMDEMUX_GUINT16_GET (data + 38));
+}
+
+static void
+gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  GstRMDemuxStream *stream;
+  char *stream1_type_string;
+  char *stream2_type_string;
+  guint str_len = 0;
+  int stream_type;
+  int offset;
+  guint32 max_bitrate;
+  guint32 avg_bitrate;
+
+  stream = g_new0 (GstRMDemuxStream, 1);
+
+  stream->id = RMDEMUX_GUINT16_GET (data);
+  stream->index = NULL;
+  stream->seek_offset = 0;
+  stream->last_ts = -1;
+  stream->next_ts = -1;
+  stream->last_flow = GST_FLOW_OK;
+  stream->discont = TRUE;
+  stream->adapter = gst_adapter_new ();
+  GST_LOG_OBJECT (rmdemux, "stream_number=%d", stream->id);
+
+  /* parse the bitrates */
+  max_bitrate = RMDEMUX_GUINT32_GET (data + 2);
+  avg_bitrate = RMDEMUX_GUINT32_GET (data + 6);
+  stream->bitrate = avg_bitrate;
+  GST_LOG_OBJECT (rmdemux, "Stream max bitrate=%u", max_bitrate);
+  GST_LOG_OBJECT (rmdemux, "Stream avg bitrate=%u", avg_bitrate);
+  if (max_bitrate != 0) {
+    if (stream->pending_tags == NULL)
+      stream->pending_tags = gst_tag_list_new ();
+    gst_tag_list_add (stream->pending_tags, GST_TAG_MERGE_REPLACE,
+        GST_TAG_MAXIMUM_BITRATE, max_bitrate, NULL);
+  }
+  if (avg_bitrate != 0) {
+    if (stream->pending_tags == NULL)
+      stream->pending_tags = gst_tag_list_new ();
+    gst_tag_list_add (stream->pending_tags, GST_TAG_MERGE_REPLACE,
+        GST_TAG_BITRATE, avg_bitrate, NULL);
+  }
+
+  offset = 30;
+  stream1_type_string = gst_rm_utils_read_string8 (data + offset,
+      length - offset, &str_len);
+  offset += str_len;
+  stream2_type_string = gst_rm_utils_read_string8 (data + offset,
+      length - offset, &str_len);
+  offset += str_len;
+
+  /* stream1_type_string for audio and video stream is a "put_whatever_you_want" field :
+   * observed values :
+   * - "[The ]Video/Audio Stream" (File produced by an official Real encoder)
+   * - "RealVideoPremierePlugIn-VIDEO/AUDIO" (File produced by Abobe Premiere)
+   *
+   * so, we should not rely on it to know which stream type it is
+   */
+
+  GST_LOG_OBJECT (rmdemux, "stream type: %s", stream1_type_string);
+  GST_LOG_OBJECT (rmdemux, "MIME type=%s", stream2_type_string);
+
+  if (strcmp (stream2_type_string, "video/x-pn-realvideo") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_VIDEO;
+  } else if (strcmp (stream2_type_string,
+          "video/x-pn-multirate-realvideo") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_VIDEO;
+  } else if (strcmp (stream2_type_string, "audio/x-pn-realaudio") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_AUDIO;
+  } else if (strcmp (stream2_type_string,
+          "audio/x-pn-multirate-realaudio") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_AUDIO;
+  } else if (strcmp (stream2_type_string,
+          "audio/x-pn-multirate-realaudio-live") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_AUDIO;
+  } else if (strcmp (stream2_type_string, "audio/x-ralf-mpeg4-generic") == 0) {
+    /* Another audio type found in the real testsuite */
+    stream_type = GST_RMDEMUX_STREAM_AUDIO;
+  } else if (strcmp (stream1_type_string, "") == 0 &&
+      strcmp (stream2_type_string, "logical-fileinfo") == 0) {
+    stream_type = GST_RMDEMUX_STREAM_FILEINFO;
+  } else {
+    stream_type = GST_RMDEMUX_STREAM_UNKNOWN;
+    GST_WARNING_OBJECT (rmdemux, "unknown stream type \"%s\",\"%s\"",
+        stream1_type_string, stream2_type_string);
+  }
+  g_free (stream1_type_string);
+  g_free (stream2_type_string);
+
+  offset += 4;
+
+  stream->subtype = stream_type;
+  switch (stream_type) {
+
+    case GST_RMDEMUX_STREAM_VIDEO:
+      /* RV10/RV20/RV30/RV40 => video/x-pn-realvideo, version=1,2,3,4 */
+      stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 8);
+      stream->width = RMDEMUX_GUINT16_GET (data + offset + 12);
+      stream->height = RMDEMUX_GUINT16_GET (data + offset + 14);
+      stream->rate = RMDEMUX_GUINT16_GET (data + offset + 16);
+      stream->subformat = RMDEMUX_GUINT32_GET (data + offset + 26);
+      stream->format = RMDEMUX_GUINT32_GET (data + offset + 30);
+      stream->extra_data_size = length - (offset + 26);
+      stream->extra_data = (guint8 *) data + offset + 26;
+      /* Natural way to represent framerates here requires unsigned 32 bit
+       * numerator, which we don't have. For the nasty case, approximate...
+       */
+      {
+        guint32 numerator = RMDEMUX_GUINT16_GET (data + offset + 22) * 65536 +
+            RMDEMUX_GUINT16_GET (data + offset + 24);
+        if (numerator > G_MAXINT) {
+          stream->framerate_numerator = (gint) (numerator >> 1);
+          stream->framerate_denominator = 32768;
+        } else {
+          stream->framerate_numerator = (gint) numerator;
+          stream->framerate_denominator = 65536;
+        }
+      }
+
+      GST_DEBUG_OBJECT (rmdemux,
+          "Video stream with fourcc=%" GST_FOURCC_FORMAT
+          " width=%d height=%d rate=%d framerate=%d/%d subformat=%x format=%x extra_data_size=%d",
+          GST_FOURCC_ARGS (stream->fourcc), stream->width, stream->height,
+          stream->rate, stream->framerate_numerator,
+          stream->framerate_denominator, stream->subformat, stream->format,
+          stream->extra_data_size);
+      break;
+    case GST_RMDEMUX_STREAM_AUDIO:{
+      stream->version = RMDEMUX_GUINT16_GET (data + offset + 4);
+      GST_INFO ("stream version = %u", stream->version);
+      switch (stream->version) {
+        case 3:
+          stream->fourcc = GST_RM_AUD_14_4;
+          stream->packet_size = 20;
+          stream->rate = 8000;
+          stream->n_channels = 1;
+          stream->sample_width = 16;
+          stream->flavor = 1;
+          stream->leaf_size = 0;
+          stream->height = 0;
+          break;
+        case 4:
+          stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22);
+          stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24);
+          /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */
+          stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44);
+          stream->height = RMDEMUX_GUINT16_GET (data + offset + 40);
+          stream->rate = RMDEMUX_GUINT16_GET (data + offset + 48);
+          stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 52);
+          stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 54);
+          stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 62);
+          stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 69);
+          GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data",
+              stream->extra_data_size);
+          if (length - (offset + 73) >= stream->extra_data_size) {
+            stream->extra_data = (guint8 *) data + offset + 73;
+          } else {
+            GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk");
+            stream->extra_data_size = 0;
+          }
+          break;
+        case 5:
+          stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22);
+          stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24);
+          /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */
+          stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44);
+          stream->height = RMDEMUX_GUINT16_GET (data + offset + 40);
+          stream->rate = RMDEMUX_GUINT16_GET (data + offset + 54);
+          stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 58);
+          stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 60);
+          stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 66);
+          stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 74);
+          GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data",
+              stream->extra_data_size);
+          if (length - (offset + 78) >= stream->extra_data_size) {
+            stream->extra_data = (guint8 *) data + offset + 78;
+          } else {
+            GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk");
+            stream->extra_data_size = 0;
+          }
+          break;
+        default:{
+          GST_WARNING_OBJECT (rmdemux, "Unhandled audio stream version %d",
+              stream->version);
+          break;
+        }
+      }
+      /*  14_4, 28_8, cook, dnet, sipr, raac, racp, ralf, atrc */
+      GST_DEBUG_OBJECT (rmdemux,
+          "Audio stream with rate=%d sample_width=%d n_channels=%d",
+          stream->rate, stream->sample_width, stream->n_channels);
+
+      break;
+    }
+    case GST_RMDEMUX_STREAM_FILEINFO:
+    {
+      int element_nb;
+
+      /* Length of this section */
+      GST_DEBUG_OBJECT (rmdemux, "length2: 0x%08x",
+          RMDEMUX_GUINT32_GET (data + offset));
+      offset += 4;
+
+      /* Unknown : 00 00 00 00 */
+      offset += 4;
+
+      /* Number of variables that would follow (loop iterations) */
+      element_nb = RMDEMUX_GUINT32_GET (data + offset);
+      offset += 4;
+
+      while (element_nb) {
+        /* Category Id : 00 00 00 XX 00 00 */
+        offset += 6;
+
+        /* Variable Name */
+        offset += re_skip_pascal_string (data + offset);
+
+        /* Variable Value Type */
+        /*   00 00 00 00 00 => integer/boolean, preceded by length */
+        /*   00 00 00 02 00 => pascal string, preceded by length, no trailing \0 */
+        offset += 5;
+
+        /* Variable Value */
+        offset += re_skip_pascal_string (data + offset);
+
+        element_nb--;
+      }
+    }
+      break;
+    case GST_RMDEMUX_STREAM_UNKNOWN:
+    default:
+      break;
+  }
+
+  gst_rmdemux_add_stream (rmdemux, stream);
+}
+
+static guint
+gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  int n;
+  int id;
+
+  n = RMDEMUX_GUINT32_GET (data);
+  id = RMDEMUX_GUINT16_GET (data + 4);
+  rmdemux->index_offset = RMDEMUX_GUINT32_GET (data + 6);
+
+  GST_DEBUG_OBJECT (rmdemux, "Number of indices=%d Stream ID=%d length=%d", n,
+      id, length);
+
+  /* Point to the next index_stream */
+  rmdemux->index_stream = gst_rmdemux_get_stream_by_id (rmdemux, id);
+
+  /* Return the length of the index */
+  return 14 * n;
+}
+
+static void
+gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, const guint8 * data,
+    int length)
+{
+  int i;
+  int n;
+  GstRMDemuxIndex *index;
+
+  /* The number of index records */
+  n = length / 14;
+
+  if (rmdemux->index_stream == NULL)
+    return;
+
+  /* don't parse the index a second time when operating pull-based and
+   * reaching the end of the file */
+  if (rmdemux->index_stream->index_length > 0) {
+    GST_DEBUG_OBJECT (rmdemux, "Already have an index for this stream");
+    return;
+  }
+
+  index = g_malloc (sizeof (GstRMDemuxIndex) * n);
+  rmdemux->index_stream->index = index;
+  rmdemux->index_stream->index_length = n;
+
+  for (i = 0; i < n; i++) {
+    index[i].timestamp = RMDEMUX_GUINT32_GET (data + 2) * GST_MSECOND;
+    index[i].offset = RMDEMUX_GUINT32_GET (data + 6);
+
+    GST_DEBUG_OBJECT (rmdemux, "Index found for timestamp=%f (at offset=%x)",
+        gst_guint64_to_gdouble (index[i].timestamp) / GST_SECOND,
+        index[i].offset);
+    data += 14;
+  }
+}
+
+static void
+gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  rmdemux->n_chunks = RMDEMUX_GUINT32_GET (data);
+  rmdemux->data_offset = RMDEMUX_GUINT32_GET (data + 4);
+  rmdemux->chunk_index = 0;
+  GST_DEBUG_OBJECT (rmdemux, "Data chunk found with %d packets "
+      "(next data at 0x%08x)", rmdemux->n_chunks, rmdemux->data_offset);
+}
+
+static void
+gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, int length)
+{
+  GstTagList *tags;
+
+  tags = gst_rm_utils_read_tags (data, length, gst_rm_utils_read_string16);
+
+  GST_LOG_OBJECT (rmdemux, "tags: %" GST_PTR_FORMAT, tags);
+
+  rmdemux->pending_tags =
+      gst_tag_list_merge (rmdemux->pending_tags, tags, GST_TAG_MERGE_APPEND);
+}
+
+static GstFlowReturn
+gst_rmdemux_combine_flows (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
+    GstFlowReturn ret)
+{
+  GSList *cur;
+
+  /* store the value */
+  stream->last_flow = ret;
+
+  /* if it's success we can return the value right away */
+  if (ret == GST_FLOW_OK)
+    goto done;
+
+  /* any other error that is not-linked can be returned right
+   * away */
+  if (ret != GST_FLOW_NOT_LINKED)
+    goto done;
+
+  for (cur = rmdemux->streams; cur; cur = cur->next) {
+    GstRMDemuxStream *ostream = cur->data;
+
+    ret = ostream->last_flow;
+    /* some other return value (must be SUCCESS but we can return
+     * other values as well) */
+    if (ret != GST_FLOW_NOT_LINKED)
+      goto done;
+  }
+  /* if we get here, all other pads were unlinked and we return
+   * NOT_LINKED then */
+done:
+  return ret;
+}
+
+static void
+gst_rmdemux_stream_clear_cached_subpackets (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream)
+{
+  if (stream->subpackets == NULL || stream->subpackets->len == 0)
+    return;
+
+  GST_DEBUG_OBJECT (rmdemux, "discarding %u previously collected subpackets",
+      stream->subpackets->len);
+  g_ptr_array_foreach (stream->subpackets, (GFunc) gst_mini_object_unref, NULL);
+  g_ptr_array_set_size (stream->subpackets, 0);
+}
+
+static GstFlowReturn
+gst_rmdemux_descramble_audio (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
+{
+  GstFlowReturn ret = GST_FLOW_ERROR;
+  GstBuffer *outbuf;
+  guint packet_size = stream->packet_size;
+  guint height = stream->subpackets->len;
+  guint leaf_size = stream->leaf_size;
+  guint p, x;
+
+  g_assert (stream->height == height);
+
+  GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
+      leaf_size, height);
+
+  outbuf = gst_buffer_new_and_alloc (height * packet_size);
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
+
+  for (p = 0; p < height; ++p) {
+    GstBuffer *b = g_ptr_array_index (stream->subpackets, p);
+    guint8 *b_data = GST_BUFFER_DATA (b);
+
+    if (p == 0)
+      GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (b);
+
+    for (x = 0; x < packet_size / leaf_size; ++x) {
+      guint idx;
+
+      idx = height * x + ((height + 1) / 2) * (p % 2) + (p / 2);
+      /* GST_LOG ("%3u => %3u", (height * p) + x, idx); */
+      memcpy (GST_BUFFER_DATA (outbuf) + leaf_size * idx, b_data, leaf_size);
+      b_data += leaf_size;
+    }
+  }
+
+  /* some decoders, such as realaudiodec, need to be fed in packet units */
+  for (p = 0; p < height; ++p) {
+    GstBuffer *subbuf;
+
+    subbuf = gst_buffer_create_sub (outbuf, p * packet_size, packet_size);
+
+    GST_LOG_OBJECT (rmdemux, "pushing buffer timestamp %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (subbuf)));
+
+    if (stream->discont) {
+      GST_BUFFER_FLAG_SET (subbuf, GST_BUFFER_FLAG_DISCONT);
+      stream->discont = FALSE;
+    }
+
+    gst_buffer_set_caps (subbuf, GST_PAD_CAPS (stream->pad));
+    ret = gst_pad_push (stream->pad, subbuf);
+    if (ret != GST_FLOW_OK)
+      break;
+  }
+
+  gst_buffer_unref (outbuf);
+
+  gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_rmdemux_descramble_dnet_audio (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream)
+{
+  GstBuffer *buf;
+
+  buf = g_ptr_array_index (stream->subpackets, 0);
+  g_ptr_array_index (stream->subpackets, 0) = NULL;
+  g_ptr_array_set_size (stream->subpackets, 0);
+
+  buf = gst_rm_utils_descramble_dnet_buffer (buf);
+
+  if (stream->discont) {
+    GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+    stream->discont = FALSE;
+  }
+  return gst_pad_push (stream->pad, buf);
+}
+
+static GstFlowReturn
+gst_rmdemux_descramble_mp4a_audio (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream)
+{
+  GstFlowReturn res;
+  GstBuffer *buf, *outbuf;
+  guint frames, index, i;
+  guint8 *data;
+  GstClockTime timestamp;
+
+  res = GST_FLOW_OK;
+
+  buf = g_ptr_array_index (stream->subpackets, 0);
+  g_ptr_array_index (stream->subpackets, 0) = NULL;
+  g_ptr_array_set_size (stream->subpackets, 0);
+
+  data = GST_BUFFER_DATA (buf);
+  timestamp = GST_BUFFER_TIMESTAMP (buf);
+
+  frames = (data[1] & 0xf0) >> 4;
+  index = 2 * frames + 2;
+
+  for (i = 0; i < frames; i++) {
+    guint len = (data[i * 2 + 2] << 8) | data[i * 2 + 3];
+
+    outbuf = gst_buffer_create_sub (buf, index, len);
+    if (i == 0)
+      GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
+    gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
+
+    index += len;
+
+    if (stream->discont) {
+      GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT);
+      stream->discont = FALSE;
+    }
+    res = gst_pad_push (stream->pad, outbuf);
+    if (res != GST_FLOW_OK)
+      break;
+  }
+  gst_buffer_unref (buf);
+  return res;
+}
+
+static GstFlowReturn
+gst_rmdemux_descramble_sipr_audio (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream)
+{
+  GstFlowReturn ret;
+  GstBuffer *outbuf;
+  guint packet_size = stream->packet_size;
+  guint height = stream->subpackets->len;
+  guint p;
+
+  g_assert (stream->height == height);
+
+  GST_LOG ("packet_size = %u, leaf_size = %u, height= %u", packet_size,
+      stream->leaf_size, height);
+
+  outbuf = gst_buffer_new_and_alloc (height * packet_size);
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
+
+  for (p = 0; p < height; ++p) {
+    GstBuffer *b = g_ptr_array_index (stream->subpackets, p);
+    guint8 *b_data = GST_BUFFER_DATA (b);
+
+    if (p == 0)
+      GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (b);
+
+    memcpy (GST_BUFFER_DATA (outbuf) + packet_size * p, b_data, packet_size);
+  }
+
+  GST_LOG_OBJECT (rmdemux, "pushing buffer timestamp %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
+
+  if (stream->discont) {
+    GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT);
+    stream->discont = FALSE;
+  }
+
+  outbuf = gst_rm_utils_descramble_sipr_buffer (outbuf);
+
+  gst_buffer_set_caps (outbuf, GST_PAD_CAPS (stream->pad));
+  ret = gst_pad_push (stream->pad, outbuf);
+
+  gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_rmdemux_handle_scrambled_packet (GstRMDemux * rmdemux,
+    GstRMDemuxStream * stream, GstBuffer * buf, gboolean keyframe)
+{
+  GstFlowReturn ret;
+
+  if (stream->subpackets == NULL)
+    stream->subpackets = g_ptr_array_sized_new (stream->subpackets_needed);
+
+  GST_LOG ("Got subpacket %u/%u, len=%u, key=%d", stream->subpackets->len + 1,
+      stream->subpackets_needed, GST_BUFFER_SIZE (buf), keyframe);
+
+  if (keyframe && stream->subpackets->len > 0) {
+    gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
+  }
+
+  g_ptr_array_add (stream->subpackets, buf);
+
+  if (stream->subpackets->len < stream->subpackets_needed)
+    return GST_FLOW_OK;
+
+  g_assert (stream->subpackets->len >= 1);
+
+  switch (stream->fourcc) {
+    case GST_RM_AUD_DNET:
+      ret = gst_rmdemux_descramble_dnet_audio (rmdemux, stream);
+      break;
+    case GST_RM_AUD_COOK:
+    case GST_RM_AUD_ATRC:
+      ret = gst_rmdemux_descramble_audio (rmdemux, stream);
+      break;
+    case GST_RM_AUD_RAAC:
+    case GST_RM_AUD_RACP:
+      ret = gst_rmdemux_descramble_mp4a_audio (rmdemux, stream);
+      break;
+    case GST_RM_AUD_SIPR:
+      ret = gst_rmdemux_descramble_sipr_audio (rmdemux, stream);
+      break;
+    default:
+      g_assert_not_reached ();
+  }
+
+  return ret;
+}
+
+static GstClockTime
+gst_rmdemux_fix_timestamp (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
+    guint8 * data, GstClockTime timestamp)
+{
+  guint8 frame_type;
+  guint16 seq;
+  GstClockTime ts = timestamp;
+
+  if (timestamp == GST_CLOCK_TIME_NONE)
+    goto done;
+
+  /* only adjust when we have a stream with B frames */
+  if (stream->format < 0x20200002)
+    goto done;
+
+  /* Fix timestamp. */
+  switch (stream->fourcc) {
+    case GST_RM_VDO_RV10:
+      goto done;
+    case GST_RM_VDO_RV20:
+    {
+      /*
+       * Bit  1- 2: frame type
+       * Bit  3- 9: ?
+       * Bit 10-22: sequence number
+       * Bit 23-32: ?
+       */
+      frame_type = (data[0] >> 6) & 0x03;
+      seq = ((data[1] & 0x7f) << 6) + ((data[2] & 0xfc) >> 2);
+      break;
+    }
+    case GST_RM_VDO_RV30:
+    {
+      /*
+       * Bit  1- 2: ?
+       * Bit     3: skip packet if 1
+       * Bit  4- 5: frame type
+       * Bit  6-12: ?
+       * Bit 13-25: sequence number
+       * Bit 26-32: ?
+       */
+      frame_type = (data[0] >> 3) & 0x03;
+      seq = ((data[1] & 0x0f) << 9) + (data[2] << 1) + ((data[3] & 0x80) >> 7);
+      break;
+    }
+    case GST_RM_VDO_RV40:
+    {
+      /*
+       * Bit     1: skip packet if 1
+       * Bit  2- 3: frame type
+       * Bit  4-13: ?
+       * Bit 14-26: sequence number
+       * Bit 27-32: ?
+       */
+      frame_type = (data[0] >> 5) & 0x03;
+      seq = ((data[1] & 0x07) << 10) + (data[2] << 2) + ((data[3] & 0xc0) >> 6);
+      break;
+    }
+    default:
+      goto unknown_version;
+  }
+
+  switch (frame_type) {
+    case 0:
+    case 1:
+    {
+      GST_LOG_OBJECT (rmdemux, "I frame %d", frame_type);
+      /* I frame */
+      if (stream->next_ts == -1)
+        stream->next_ts = timestamp;
+      else
+        timestamp = stream->next_ts;
+      stream->last_ts = stream->next_ts;
+      stream->next_ts = ts;
+      stream->last_seq = stream->next_seq;
+      stream->next_seq = seq;
+      break;
+    }
+    case 2:
+    {
+      GST_LOG_OBJECT (rmdemux, "P frame");
+      /* P frame */
+      timestamp = stream->last_ts = stream->next_ts;
+      if (seq < stream->next_seq)
+        stream->next_ts += (seq + 0x2000 - stream->next_seq) * GST_MSECOND;
+      else
+        stream->next_ts += (seq - stream->next_seq) * GST_MSECOND;
+      stream->last_seq = stream->next_seq;
+      stream->next_seq = seq;
+      break;
+    }
+    case 3:
+    {
+      GST_LOG_OBJECT (rmdemux, "B frame");
+      /* B frame */
+      if (seq < stream->last_seq) {
+        timestamp =
+            (seq + 0x2000 - stream->last_seq) * GST_MSECOND + stream->last_ts;
+      } else {
+        timestamp = (seq - stream->last_seq) * GST_MSECOND + stream->last_ts;
+      }
+      break;
+    }
+    default:
+      goto unknown_frame_type;
+  }
+
+done:
+  GST_LOG_OBJECT (rmdemux,
+      "timestamp %" GST_TIME_FORMAT " -> %" GST_TIME_FORMAT, GST_TIME_ARGS (ts),
+      GST_TIME_ARGS (timestamp));
+
+  return timestamp;
+
+  /* Errors */
+unknown_version:
+  {
+    GST_ELEMENT_ERROR (rmdemux, STREAM, DECODE,
+        ("Unknown version: %i.", stream->version), (NULL));
+    return GST_FLOW_ERROR;
+  }
+
+unknown_frame_type:
+  {
+    GST_ELEMENT_ERROR (rmdemux, STREAM, DECODE, ("Unknown frame type %d.",
+            frame_type), (NULL));
+    return GST_FLOW_ERROR;
+  }
+}
+
+#define PARSE_NUMBER(data, size, number, label) \
+G_STMT_START {                                  \
+  if (size < 2)                                 \
+    goto label;                                 \
+  number = GST_READ_UINT16_BE (data);           \
+  if (!(number & 0xc000)) {                     \
+    if (size < 4)                               \
+      goto label;                               \
+    number = GST_READ_UINT32_BE (data);         \
+    data += 4;                                  \
+    size -= 4;                                  \
+  } else {                                      \
+    number &= 0x3fff;                           \
+    data += 2;                                  \
+    size -= 2;                                  \
+  }                                             \
+} G_STMT_END
+
+static GstFlowReturn
+gst_rmdemux_parse_video_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
+    GstBuffer * in, guint offset, guint16 version,
+    GstClockTime timestamp, gboolean key)
+{
+  GstFlowReturn ret;
+  const guint8 *data, *base;
+  guint size;
+
+  base = GST_BUFFER_DATA (in);
+  data = base + offset;
+  size = GST_BUFFER_SIZE (in) - offset;
+  /* if size <= 2, we want this method to return the same GstFlowReturn as it
+   * was previously for that given stream. */
+  ret = stream->last_flow;
+
+  while (size > 2) {
+    guint8 pkg_header;
+    guint pkg_offset;
+    guint pkg_length;
+    guint pkg_subseq = 0, pkg_seqnum = G_MAXUINT;
+    guint fragment_size;
+    GstBuffer *fragment;
+
+    pkg_header = *data++;
+    size--;
+
+    /* packet header
+     * bit 7: 1=last block in block chain
+     * bit 6: 1=short header (only one block?)
+     */
+    if ((pkg_header & 0xc0) == 0x40) {
+      /* skip unknown byte */
+      data++;
+      size--;
+      pkg_offset = 0;
+      pkg_length = size;
+    } else {
+      if ((pkg_header & 0x40) == 0) {
+        pkg_subseq = (*data++) & 0x7f;
+        size--;
+      } else {
+        pkg_subseq = 0;
+      }
+
+      /* length */
+      PARSE_NUMBER (data, size, pkg_length, not_enough_data);
+
+      /* offset */
+      PARSE_NUMBER (data, size, pkg_offset, not_enough_data);
+
+      /* seqnum */
+      if (size < 1)
+        goto not_enough_data;
+
+      pkg_seqnum = *data++;
+      size--;
+    }
+
+    GST_DEBUG_OBJECT (rmdemux,
+        "seq %d, subseq %d, offset %d, length %d, size %d, header %02x",
+        pkg_seqnum, pkg_subseq, pkg_offset, pkg_length, size, pkg_header);
+
+    /* calc size of fragment */
+    if ((pkg_header & 0xc0) == 0x80) {
+      fragment_size = pkg_offset;
+    } else {
+      if ((pkg_header & 0xc0) == 0)
+        fragment_size = size;
+      else
+        fragment_size = pkg_length;
+    }
+    GST_DEBUG_OBJECT (rmdemux, "fragment size %d", fragment_size);
+
+    /* get the fragment */
+    fragment = gst_buffer_create_sub (in, data - base, fragment_size);
+
+    if (pkg_subseq == 1) {
+      GST_DEBUG_OBJECT (rmdemux, "start new fragment");
+      gst_adapter_clear (stream->adapter);
+      stream->frag_current = 0;
+      stream->frag_count = 0;
+      stream->frag_length = pkg_length;
+    } else if (pkg_subseq == 0) {
+      GST_DEBUG_OBJECT (rmdemux, "non fragmented packet");
+      stream->frag_current = 0;
+      stream->frag_count = 0;
+      stream->frag_length = fragment_size;
+    }
+
+    /* put fragment in adapter */
+    gst_adapter_push (stream->adapter, fragment);
+    stream->frag_offset[stream->frag_count] = stream->frag_current;
+    stream->frag_current += fragment_size;
+    stream->frag_count++;
+
+    if (stream->frag_count > MAX_FRAGS)
+      goto too_many_fragments;
+
+    GST_DEBUG_OBJECT (rmdemux, "stored fragment in adapter %d/%d",
+        stream->frag_current, stream->frag_length);
+
+    /* flush fragment when complete */
+    if (stream->frag_current >= stream->frag_length) {
+      GstBuffer *out;
+      guint8 *outdata;
+      guint header_size;
+      gint i, avail;
+
+      /* calculate header size, which is:
+       * 1 byte for the number of fragments - 1
+       * for each fragment:
+       *   4 bytes 0x00000001 little endian
+       *   4 bytes fragment offset
+       *
+       * This is also the matroska header for realvideo, the decoder needs the
+       * fragment offsets, both in ffmpeg and real .so, so we just give it that
+       * in front of the data.
+       */
+      header_size = 1 + (8 * (stream->frag_count));
+
+      GST_DEBUG_OBJECT (rmdemux,
+          "fragmented completed. count %d, header_size %u", stream->frag_count,
+          header_size);
+
+      avail = gst_adapter_available (stream->adapter);
+
+      out = gst_buffer_new_and_alloc (header_size + avail);
+      outdata = GST_BUFFER_DATA (out);
+
+      /* create header */
+      *outdata++ = stream->frag_count - 1;
+      for (i = 0; i < stream->frag_count; i++) {
+        GST_WRITE_UINT32_LE (outdata, 0x00000001);
+        outdata += 4;
+        GST_WRITE_UINT32_LE (outdata, stream->frag_offset[i]);
+        outdata += 4;
+      }
+
+      /* copy packet data after the header now */
+      gst_adapter_copy (stream->adapter, outdata, 0, avail);
+      gst_adapter_flush (stream->adapter, avail);
+
+      stream->frag_current = 0;
+      stream->frag_count = 0;
+      stream->frag_length = 0;
+
+      gst_buffer_set_caps (out, GST_PAD_CAPS (stream->pad));
+
+      if (timestamp != -1) {
+        if (rmdemux->first_ts != -1 && timestamp > rmdemux->first_ts)
+          timestamp -= rmdemux->first_ts;
+        else
+          timestamp = 0;
+
+        if (rmdemux->base_ts != -1)
+          timestamp += rmdemux->base_ts;
+      }
+      timestamp =
+          gst_rmdemux_fix_timestamp (rmdemux, stream, outdata, timestamp);
+
+      GST_BUFFER_TIMESTAMP (out) = timestamp;
+
+      GST_LOG_OBJECT (rmdemux, "pushing timestamp %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (timestamp));
+
+      if (stream->discont) {
+        GST_BUFFER_FLAG_SET (out, GST_BUFFER_FLAG_DISCONT);
+        stream->discont = FALSE;
+      }
+
+      if (!key) {
+        GST_BUFFER_FLAG_SET (out, GST_BUFFER_FLAG_DELTA_UNIT);
+      }
+
+      ret = gst_pad_push (stream->pad, out);
+      ret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
+      if (ret != GST_FLOW_OK)
+        break;
+
+      timestamp = GST_CLOCK_TIME_NONE;
+    }
+    data += fragment_size;
+    size -= fragment_size;
+  }
+  GST_DEBUG_OBJECT (rmdemux, "%d bytes left", size);
+
+  gst_buffer_unref (in);
+
+  return ret;
+
+  /* ERRORS */
+not_enough_data:
+  {
+    GST_ELEMENT_WARNING (rmdemux, STREAM, DECODE, ("Skipping bad packet."),
+        (NULL));
+    gst_buffer_unref (in);
+    return GST_FLOW_OK;
+  }
+too_many_fragments:
+  {
+    GST_ELEMENT_ERROR (rmdemux, STREAM, DECODE,
+        ("Got more fragments (%u) than can be handled (%u)",
+            stream->frag_count, MAX_FRAGS), (NULL));
+    gst_buffer_unref (in);
+    return GST_FLOW_ERROR;
+  }
+}
+
+static GstFlowReturn
+gst_rmdemux_parse_audio_packet (GstRMDemux * rmdemux, GstRMDemuxStream * stream,
+    GstBuffer * in, guint offset, guint16 version,
+    GstClockTime timestamp, gboolean key)
+{
+  GstFlowReturn ret;
+  GstBuffer *buffer;
+  const guint8 *data;
+  guint size;
+
+  data = GST_BUFFER_DATA (in) + offset;
+  size = GST_BUFFER_SIZE (in) - offset;
+
+  buffer = gst_buffer_new_and_alloc (size);
+  gst_buffer_set_caps (buffer, GST_PAD_CAPS (stream->pad));
+
+  memcpy (GST_BUFFER_DATA (buffer), (guint8 *) data, size);
+
+  if (rmdemux->first_ts != -1 && timestamp > rmdemux->first_ts)
+    timestamp -= rmdemux->first_ts;
+  else
+    timestamp = 0;
+
+  if (rmdemux->base_ts != -1)
+    timestamp += rmdemux->base_ts;
+
+  GST_BUFFER_TIMESTAMP (buffer) = timestamp;
+
+  if (stream->needs_descrambling) {
+    GST_LOG_OBJECT (rmdemux, "descramble timestamp %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (timestamp));
+    ret = gst_rmdemux_handle_scrambled_packet (rmdemux, stream, buffer, key);
+  } else {
+    GST_LOG_OBJECT (rmdemux,
+        "Pushing buffer of size %d, timestamp %" GST_TIME_FORMAT "to pad %s",
+        GST_BUFFER_SIZE (buffer), GST_TIME_ARGS (timestamp),
+        GST_PAD_NAME (stream->pad));
+
+    if (stream->discont) {
+      GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+      stream->discont = FALSE;
+    }
+    ret = gst_pad_push (stream->pad, buffer);
+  }
+
+  gst_buffer_unref (in);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_rmdemux_parse_packet (GstRMDemux * rmdemux, GstBuffer * in, guint16 version)
+{
+  guint16 id;
+  GstRMDemuxStream *stream;
+  guint size;
+  GstFlowReturn cret, ret;
+  GstClockTime timestamp;
+  gboolean key;
+  guint8 *data, *base;
+  guint8 flags;
+  guint32 ts;
+
+  base = data = GST_BUFFER_DATA (in);
+  size = GST_BUFFER_SIZE (in);
+
+  /* stream number */
+  id = RMDEMUX_GUINT16_GET (data);
+
+  stream = gst_rmdemux_get_stream_by_id (rmdemux, id);
+  if (!stream || !stream->pad)
+    goto unknown_stream;
+
+  /* timestamp in Msec */
+  ts = RMDEMUX_GUINT32_GET (data + 2);
+  timestamp = ts * GST_MSECOND;
+
+  gst_segment_set_last_stop (&rmdemux->segment, GST_FORMAT_TIME, timestamp);
+
+  GST_LOG_OBJECT (rmdemux, "Parsing a packet for stream=%d, timestamp=%"
+      GST_TIME_FORMAT ", size %u, version=%d, ts=%u", id,
+      GST_TIME_ARGS (timestamp), size, version, ts);
+
+  if (rmdemux->first_ts == GST_CLOCK_TIME_NONE) {
+    GST_DEBUG_OBJECT (rmdemux, "First timestamp: %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (timestamp));
+    rmdemux->first_ts = timestamp;
+  }
+
+  /* skip stream_id and timestamp */
+  data += (2 + 4);
+  size -= (2 + 4);
+
+  /* get flags */
+  flags = GST_READ_UINT8 (data + 1);
+
+  data += 2;
+  size -= 2;
+
+  /* version 1 has an extra byte */
+  if (version == 1) {
+    data += 1;
+    size -= 1;
+  }
+  key = (flags & 0x02) != 0;
+  GST_DEBUG_OBJECT (rmdemux, "flags %d, Keyframe %d", flags, key);
+
+  if (rmdemux->need_newsegment) {
+    GstEvent *event;
+
+    event = gst_event_new_new_segment (FALSE, rmdemux->segment.rate,
+        rmdemux->segment.format, rmdemux->segment.start,
+        rmdemux->segment.stop, rmdemux->segment.time);
+
+    GST_DEBUG_OBJECT (rmdemux, "sending NEWSEGMENT event, segment.start= %"
+        GST_TIME_FORMAT, GST_TIME_ARGS (rmdemux->segment.start));
+
+    gst_rmdemux_send_event (rmdemux, event);
+    rmdemux->need_newsegment = FALSE;
+
+    if (rmdemux->pending_tags != NULL) {
+      gst_element_found_tags (GST_ELEMENT (rmdemux), rmdemux->pending_tags);
+      rmdemux->pending_tags = NULL;
+    }
+  }
+
+  if (stream->pending_tags != NULL) {
+    GST_LOG_OBJECT (stream->pad, "tags %" GST_PTR_FORMAT, stream->pending_tags);
+    gst_element_found_tags_for_pad (GST_ELEMENT_CAST (rmdemux), stream->pad,
+        stream->pending_tags);
+    stream->pending_tags = NULL;
+  }
+
+  if ((rmdemux->offset + size) <= stream->seek_offset) {
+    GST_DEBUG_OBJECT (rmdemux,
+        "Stream %d is skipping: seek_offset=%d, offset=%d, size=%u",
+        stream->id, stream->seek_offset, rmdemux->offset, size);
+    cret = GST_FLOW_OK;
+    goto beach;
+  }
+
+  /* do special headers */
+  if (stream->subtype == GST_RMDEMUX_STREAM_VIDEO) {
+    ret =
+        gst_rmdemux_parse_video_packet (rmdemux, stream, in, data - base,
+        version, timestamp, key);
+  } else if (stream->subtype == GST_RMDEMUX_STREAM_AUDIO) {
+    ret =
+        gst_rmdemux_parse_audio_packet (rmdemux, stream, in, data - base,
+        version, timestamp, key);
+  } else
+    ret = GST_FLOW_OK;
+
+  cret = gst_rmdemux_combine_flows (rmdemux, stream, ret);
+
+beach:
+  return cret;
+
+  /* ERRORS */
+unknown_stream:
+  {
+    GST_WARNING_OBJECT (rmdemux, "No stream for stream id %d in parsing "
+        "data packet", id);
+    return GST_FLOW_OK;
+  }
+}
+
+gboolean
+gst_rmdemux_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "rmdemux",
+      GST_RANK_PRIMARY, GST_TYPE_RMDEMUX);
+}
diff --git a/gst/realmedia/rmdemux.h b/gst/realmedia/rmdemux.h
new file mode 100644 (file)
index 0000000..eafba04
--- /dev/null
@@ -0,0 +1,159 @@
+/* GStreamer RealMedia demuxer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * 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_RMDEMUX_H__
+#define __GST_RMDEMUX_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/pbutils/descriptions.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RMDEMUX \
+  (gst_rmdemux_get_type())
+#define GST_RMDEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RMDEMUX,GstRMDemux))
+#define GST_RMDEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RMDEMUX,GstRMDemuxClass))
+#define GST_IS_RMDEMUX(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RMDEMUX))
+#define GST_IS_RMDEMUX_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RMDEMUX))
+
+typedef enum
+{
+  RMDEMUX_STATE_NULL,
+  RMDEMUX_STATE_HEADER,
+  RMDEMUX_STATE_HEADER_UNKNOWN,
+  RMDEMUX_STATE_HEADER_RMF,
+  RMDEMUX_STATE_HEADER_PROP,
+  RMDEMUX_STATE_HEADER_MDPR,
+  RMDEMUX_STATE_HEADER_INDX,
+  RMDEMUX_STATE_HEADER_DATA,
+  RMDEMUX_STATE_HEADER_CONT,
+  RMDEMUX_STATE_HEADER_SEEKING,
+  RMDEMUX_STATE_SEEKING,
+  RMDEMUX_STATE_DATA_PACKET,
+  RMDEMUX_STATE_SEEKING_EOS,
+  RMDEMUX_STATE_EOS,
+  RMDEMUX_STATE_INDX_DATA
+} GstRMDemuxState;
+
+typedef enum
+{
+  RMDEMUX_LOOP_STATE_HEADER,
+  RMDEMUX_LOOP_STATE_INDEX,
+  RMDEMUX_LOOP_STATE_DATA
+} GstRMDemuxLoopState;
+
+typedef enum
+{
+  GST_RMDEMUX_STREAM_UNKNOWN,
+  GST_RMDEMUX_STREAM_VIDEO,
+  GST_RMDEMUX_STREAM_AUDIO,
+  GST_RMDEMUX_STREAM_FILEINFO
+} GstRMDemuxStreamType;
+
+typedef struct _GstRMDemux GstRMDemux;
+typedef struct _GstRMDemuxClass GstRMDemuxClass;
+typedef struct _GstRMDemuxStream GstRMDemuxStream;
+
+struct _GstRMDemux {
+  GstElement element;
+
+  /* pads */
+  GstPad *sinkpad;
+
+  GSList *streams;
+  int n_video_streams;
+  int n_audio_streams;
+  GstAdapter *adapter;
+  gboolean have_pads;
+
+  guint32 timescale;
+  guint64 duration;
+  guint32 avg_packet_size;
+  guint32 index_offset;
+  guint32 data_offset;
+  guint32 num_packets;
+
+  guint offset;
+  gboolean seekable;
+
+  GstRMDemuxState state;
+  GstRMDemuxLoopState loop_state;
+  GstRMDemuxStream *index_stream;
+
+  /* playback start/stop positions */
+  GstSegment segment;
+  gboolean segment_running;
+  gboolean running;
+
+  /* Whether we need to send a newsegment event */
+  gboolean need_newsegment;
+
+  /* Current timestamp */
+  GstClockTime cur_timestamp;
+
+  /* First timestamp */
+  GstClockTime base_ts;
+  GstClockTime first_ts;
+
+  int n_chunks;
+  int chunk_index;
+
+  guint32 object_id;
+  guint32 size;
+  guint16 object_version;
+
+  /* container tags for all streams */
+  GstTagList *pending_tags;
+};
+
+struct _GstRMDemuxClass {
+  GstElementClass parent_class;
+};
+
+/* RealMedia VideoCodec FOURCC codes */
+#define GST_RM_VDO_RV10 GST_MAKE_FOURCC('R','V','1','0') // RealVideo 1
+#define GST_RM_VDO_RV20 GST_MAKE_FOURCC('R','V','2','0') // RealVideo G2
+#define GST_RM_VDO_RV30 GST_MAKE_FOURCC('R','V','3','0') // RealVideo 8
+#define GST_RM_VDO_RV40 GST_MAKE_FOURCC('R','V','4','0') // RealVideo 9+10
+
+/* RealMedia AudioCodec FOURCC codes */
+#define GST_RM_AUD_14_4 GST_MAKE_FOURCC('1','4','_','4') // 14.4 Audio Codec
+#define GST_RM_AUD_28_8 GST_MAKE_FOURCC('2','8','_','8') // 28.8 Audio Codec
+#define GST_RM_AUD_COOK GST_MAKE_FOURCC('c','o','o','k') // Cooker G2 Audio Codec
+#define GST_RM_AUD_DNET GST_MAKE_FOURCC('d','n','e','t') // DolbyNet Audio Codec (low bitrate Dolby AC3)
+#define GST_RM_AUD_SIPR GST_MAKE_FOURCC('s','i','p','r') // Sipro/ACELP.NET Voice Codec
+#define GST_RM_AUD_RAAC GST_MAKE_FOURCC('r','a','a','c') // LE-AAC Audio Codec
+#define GST_RM_AUD_RACP GST_MAKE_FOURCC('r','a','c','p') // HE-AAC Audio Codec
+#define GST_RM_AUD_RALF GST_MAKE_FOURCC('r','a','l','f') // RealAudio Lossless
+#define GST_RM_AUD_ATRC GST_MAKE_FOURCC('a','t','r','c') // Sony ATRAC3 Audio Codec
+
+#define GST_RM_AUD_xRA4 GST_MAKE_FOURCC('.','r','a','4') // Not a real audio codec
+#define GST_RM_AUD_xRA5 GST_MAKE_FOURCC('.','r','a','5') // Not a real audio codec
+
+gboolean gst_rmdemux_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_RMDEMUX_H__ */
diff --git a/gst/realmedia/rmutils.c b/gst/realmedia/rmutils.c
new file mode 100644 (file)
index 0000000..6ae6878
--- /dev/null
@@ -0,0 +1,289 @@
+/* GStreamer RealMedia utility functions
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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 <string.h>
+#include "rmutils.h"
+
+gchar *
+gst_rm_utils_read_string8 (const guint8 * data, guint datalen,
+    guint * p_total_len)
+{
+  gint length;
+
+  if (p_total_len)
+    *p_total_len = 0;
+
+  if (datalen < 1)
+    return NULL;
+
+  length = GST_READ_UINT8 (data);
+  if (datalen < (1 + length))
+    return NULL;
+
+  if (p_total_len)
+    *p_total_len = 1 + length;
+
+  return g_strndup ((gchar *) data + 1, length);
+}
+
+gchar *
+gst_rm_utils_read_string16 (const guint8 * data, guint datalen,
+    guint * p_total_len)
+{
+  gint length;
+
+  if (p_total_len)
+    *p_total_len = 0;
+
+  if (datalen < 2)
+    return NULL;
+
+  length = GST_READ_UINT16_BE (data);
+  if (datalen < (2 + length))
+    return NULL;
+
+  if (p_total_len)
+    *p_total_len = 2 + length;
+
+  return g_strndup ((gchar *) data + 2, length);
+}
+
+GstTagList *
+gst_rm_utils_read_tags (const guint8 * data, guint datalen,
+    GstRmUtilsStringReadFunc read_string_func)
+{
+  const gchar *gst_tags[] = { GST_TAG_TITLE, GST_TAG_ARTIST,
+    GST_TAG_COPYRIGHT, GST_TAG_COMMENT
+  };
+  GstTagList *tags;
+  guint i;
+
+  g_assert (read_string_func != NULL);
+
+  GST_DEBUG ("File Content : (CONT) len = %d", datalen);
+
+  tags = gst_tag_list_new ();
+
+  for (i = 0; i < G_N_ELEMENTS (gst_tags); ++i) {
+    gchar *str = NULL;
+    guint total_length = 0;
+
+    str = read_string_func (data, datalen, &total_length);
+    data += total_length;
+    datalen -= total_length;
+
+    if (str != NULL && !g_utf8_validate (str, -1, NULL)) {
+      const gchar *encoding;
+      gchar *tmp;
+
+      encoding = g_getenv ("GST_TAG_ENCODING");
+      if (encoding == NULL || *encoding == '\0') {
+        if (g_get_charset (&encoding))
+          encoding = "ISO-8859-15";
+      }
+      GST_DEBUG ("converting tag from %s to UTF-8", encoding);
+      tmp = g_convert_with_fallback (str, -1, "UTF-8", encoding, (gchar *) "*",
+          NULL, NULL, NULL);
+      g_free (str);
+      str = tmp;
+    }
+
+    GST_DEBUG ("%s = %s", gst_tags[i], GST_STR_NULL (str));
+    if (str != NULL && *str != '\0') {
+      gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, gst_tags[i], str, NULL);
+    }
+    g_free (str);
+  }
+
+  if (gst_structure_n_fields ((GstStructure *) tags) > 0)
+    return tags;
+
+  gst_tag_list_free (tags);
+  return NULL;
+}
+
+GstBuffer *
+gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf)
+{
+  guint8 *data, *end, tmp;
+
+  buf = gst_buffer_make_writable (buf);
+
+  /* dnet = byte-order swapped AC3 */
+  data = GST_BUFFER_DATA (buf);
+  end = GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf);
+  while ((data + 1) < end) {
+    /* byte-swap */
+    tmp = data[0];
+    data[0] = data[1];
+    data[1] = tmp;
+    data += sizeof (guint16);
+  }
+  return buf;
+}
+
+static void
+gst_rm_utils_swap_nibbles (guint8 * data, gint idx1, gint idx2, gint len)
+{
+  guint8 *d1, *d2, tmp1 = 0, tmp2, tmp1n, tmp2n;
+
+  if ((idx2 & 1) && !(idx1 & 1)) {
+    /* align destination to a byte by swapping the indexes */
+    tmp1 = idx1;
+    idx1 = idx2;
+    idx2 = tmp1;
+  }
+  d1 = data + (idx1 >> 1);
+  d2 = data + (idx2 >> 1);
+
+  /* check if we have aligned offsets and we can copy bytes */
+  if ((idx1 & 1) == (idx2 & 1)) {
+    if (idx1 & 1) {
+      /* swap first nibble */
+      tmp1 = *d1;
+      tmp2 = *d2;
+      *d1++ = (tmp2 & 0xf0) | (tmp1 & 0x0f);
+      *d2++ = (tmp1 & 0xf0) | (tmp2 & 0x0f);
+      len--;
+    }
+    for (; len > 1; len -= 2) {
+      /* swap 2 nibbles */
+      tmp1 = *d1;
+      *d1++ = *d2;
+      *d2++ = tmp1;
+    }
+    if (len) {
+      /* swap leftover nibble */
+      tmp1 = *d1;
+      tmp2 = *d2;
+      *d1 = (tmp2 & 0x0f) | (tmp1 & 0xf0);
+      *d2 = (tmp1 & 0x0f) | (tmp2 & 0xf0);
+    }
+  } else {
+    /* preload nibbles from source */
+    tmp2n = *d1;
+    tmp2 = *d2;
+
+    for (; len > 1; len -= 2) {
+      /* assemble nibbles */
+      *d1++ = (tmp2n & 0x0f) | (tmp2 << 4);
+      tmp1n = *d1;
+      *d2++ = (tmp1n << 4) | (tmp1 >> 4);
+
+      tmp1 = tmp1n;
+      tmp2n = (tmp2 >> 4);
+      tmp2 = *d2;
+    }
+    if (len) {
+      /* last leftover */
+      *d1 = (tmp2 << 4) | (tmp2n & 0x0f);
+      *d2 = (tmp1 >> 4) | (tmp2 & 0xf0);
+    } else {
+      *d1 = (tmp1 & 0xf0) | (tmp2n);
+    }
+  }
+}
+
+static const gint sipr_swap_index[38][2] = {
+  {0, 63}, {1, 22}, {2, 44}, {3, 90},
+  {5, 81}, {7, 31}, {8, 86}, {9, 58},
+  {10, 36}, {12, 68}, {13, 39}, {14, 73},
+  {15, 53}, {16, 69}, {17, 57}, {19, 88},
+  {20, 34}, {21, 71}, {24, 46}, {25, 94},
+  {26, 54}, {28, 75}, {29, 50}, {32, 70},
+  {33, 92}, {35, 74}, {38, 85}, {40, 56},
+  {42, 87}, {43, 65}, {45, 59}, {48, 79},
+  {49, 93}, {51, 89}, {55, 95}, {61, 76},
+  {67, 83}, {77, 80}
+};
+
+GstBuffer *
+gst_rm_utils_descramble_sipr_buffer (GstBuffer * buf)
+{
+  guint8 *data;
+  guint size;
+  gint n, bs;
+
+  size = GST_BUFFER_SIZE (buf);
+
+  /* split the packet in 96 blocks of nibbles */
+  bs = size * 2 / 96;
+  if (bs == 0)
+    return buf;
+
+  buf = gst_buffer_make_writable (buf);
+
+  data = GST_BUFFER_DATA (buf);
+
+  /* we need to perform 38 swaps on the blocks */
+  for (n = 0; n < 38; n++) {
+    gint idx1, idx2;
+
+    /* get the indexes of the blocks of nibbles that need swapping */
+    idx1 = bs * sipr_swap_index[n][0];
+    idx2 = bs * sipr_swap_index[n][1];
+
+    /* swap the blocks */
+    gst_rm_utils_swap_nibbles (data, idx1, idx2, bs);
+  }
+  return buf;
+}
+
+void
+gst_rm_utils_run_tests (void)
+{
+#if 0
+  guint8 tab1[] = { 0x10, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe };
+  guint8 tab2[8];
+
+  memcpy (tab2, tab1, 8);
+  gst_util_dump_mem (tab2, 8);
+
+  gst_rm_utils_swap_nibbles (tab2, 0, 8, 4);
+  gst_util_dump_mem (tab2, 8);
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 0, 8, 5);
+  gst_util_dump_mem (tab2, 8);
+
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 1, 8, 4);
+  gst_util_dump_mem (tab2, 8);
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 1, 8, 5);
+  gst_util_dump_mem (tab2, 8);
+
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 0, 9, 4);
+  gst_util_dump_mem (tab2, 8);
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 0, 9, 5);
+  gst_util_dump_mem (tab2, 8);
+
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 1, 9, 4);
+  gst_util_dump_mem (tab2, 8);
+  memcpy (tab2, tab1, 8);
+  gst_rm_utils_swap_nibbles (tab2, 1, 9, 5);
+  gst_util_dump_mem (tab2, 8);
+#endif
+}
diff --git a/gst/realmedia/rmutils.h b/gst/realmedia/rmutils.h
new file mode 100644 (file)
index 0000000..bd10c5e
--- /dev/null
@@ -0,0 +1,50 @@
+/* GStreamer RealMedia utility functions
+ * Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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_RM_UTILS_H__
+#define __GST_RM_UTILS_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+typedef gchar * (*GstRmUtilsStringReadFunc) (const guint8 * data, guint datalen, guint * p_strlen);
+
+gchar         *gst_rm_utils_read_string8  (const guint8 * data,
+                                           guint          datalen,
+                                           guint        * p_totallen);
+
+gchar         *gst_rm_utils_read_string16 (const guint8 * data,
+                                           guint          datalen,
+                                           guint        * p_totallen);
+
+GstTagList    *gst_rm_utils_read_tags     (const guint8            * data,
+                                           guint                     datalen,
+                                           GstRmUtilsStringReadFunc  func);
+
+GstBuffer     *gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf);
+GstBuffer     *gst_rm_utils_descramble_sipr_buffer (GstBuffer * buf);
+
+void gst_rm_utils_run_tests (void);
+
+
+G_END_DECLS
+
+#endif /* __GST_RM_UTILS_H__ */
+
diff --git a/gst/realmedia/rtspreal.c b/gst/realmedia/rtspreal.c
new file mode 100644 (file)
index 0000000..b08a9db
--- /dev/null
@@ -0,0 +1,753 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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.
+ */
+/* Element-Checklist-Version: 5 */
+
+/**
+ * SECTION:element-rtspreal
+ *
+ * A RealMedia RTSP extension
+ *
+ * Last reviewed on 2007-07-25 (0.10.14)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include "_stdint.h"
+#include <string.h>
+
+#include <gst/rtsp/gstrtspextension.h>
+#include <gst/rtsp/gstrtspbase64.h>
+
+#include "realhash.h"
+#include "rtspreal.h"
+#include "asmrules.h"
+
+GST_DEBUG_CATEGORY_STATIC (rtspreal_debug);
+#define GST_CAT_DEFAULT (rtspreal_debug)
+
+#define SERVER_PREFIX "RealServer"
+#define DEFAULT_BANDWIDTH      "10485800"
+
+static GstRTSPResult
+rtsp_ext_real_get_transports (GstRTSPExtension * ext,
+    GstRTSPLowerTrans protocols, gchar ** transport)
+{
+  GstRTSPReal *ctx = (GstRTSPReal *) ext;
+  GString *str;
+
+  if (!ctx->isreal)
+    return GST_RTSP_OK;
+
+  GST_DEBUG_OBJECT (ext, "generating transports for %d", protocols);
+
+  str = g_string_new ("");
+
+  /*
+     if (protocols & GST_RTSP_LOWER_TRANS_UDP_MCAST) {
+     g_string_append (str, "x-real-rdt/mcast;client_port=%%u1;mode=play,");
+     }
+     if (protocols & GST_RTSP_LOWER_TRANS_UDP) {
+     g_string_append (str, "x-real-rdt/udp;client_port=%%u1;mode=play,");
+     g_string_append (str, "x-pn-tng/udp;client_port=%%u1;mode=play,");
+     }
+   */
+  if (protocols & GST_RTSP_LOWER_TRANS_TCP) {
+    g_string_append (str, "x-real-rdt/tcp;mode=play,");
+    g_string_append (str, "x-pn-tng/tcp;mode=play,");
+  }
+
+  /* if we added something, remove trailing ',' */
+  if (str->len > 0)
+    g_string_truncate (str, str->len - 1);
+
+  *transport = g_string_free (str, FALSE);
+
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+rtsp_ext_real_before_send (GstRTSPExtension * ext, GstRTSPMessage * request)
+{
+  GstRTSPReal *ctx = (GstRTSPReal *) ext;
+
+  switch (request->type_data.request.method) {
+    case GST_RTSP_OPTIONS:
+    {
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_USER_AGENT,
+          //"RealMedia Player (" GST_PACKAGE_NAME ")");
+          "RealMedia Player Version 6.0.9.1235 (linux-2.0-libc6-i386-gcc2.95)");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_CLIENT_CHALLENGE,
+          "9e26d33f2984236010ef6253fb1887f7");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_COMPANY_ID,
+          "KnKV4M4I/B2FjJ1TToLycw==");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_GUID,
+          "00000000-0000-0000-0000-000000000000");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_REGION_DATA, "0");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_PLAYER_START_TIME,
+          "[28/03/2003:22:50:23 00:00]");
+      gst_rtsp_message_add_header (request, GST_RTSP_HDR_CLIENT_ID,
+          "Linux_2.4_6.0.9.1235_play32_RN01_EN_586");
+      ctx->isreal = FALSE;
+      break;
+    }
+    case GST_RTSP_DESCRIBE:
+    {
+      if (ctx->isreal) {
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_BANDWIDTH,
+            DEFAULT_BANDWIDTH);
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_GUID,
+            "00000000-0000-0000-0000-000000000000");
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_REGION_DATA, "0");
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_CLIENT_ID,
+            "Linux_2.4_6.0.9.1235_play32_RN01_EN_586");
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_MAX_ASM_WIDTH, "1");
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_LANGUAGE, "en-US");
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_REQUIRE,
+            "com.real.retain-entity-for-setup");
+      }
+      break;
+    }
+    case GST_RTSP_SETUP:
+    {
+      if (ctx->isreal) {
+        gchar *value =
+            g_strdup_printf ("%s, sd=%s", ctx->challenge2, ctx->checksum);
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_REAL_CHALLENGE2,
+            value);
+        gst_rtsp_message_add_header (request, GST_RTSP_HDR_IF_MATCH, ctx->etag);
+        g_free (value);
+      }
+      break;
+    }
+    default:
+      break;
+  }
+  return GST_RTSP_OK;
+}
+
+static GstRTSPResult
+rtsp_ext_real_after_send (GstRTSPExtension * ext, GstRTSPMessage * req,
+    GstRTSPMessage * resp)
+{
+  GstRTSPReal *ctx = (GstRTSPReal *) ext;
+
+  switch (req->type_data.request.method) {
+    case GST_RTSP_OPTIONS:
+    {
+      gchar *challenge1 = NULL;
+      gchar *server = NULL;
+
+      gst_rtsp_message_get_header (resp, GST_RTSP_HDR_SERVER, &server, 0);
+
+      gst_rtsp_message_get_header (resp, GST_RTSP_HDR_REAL_CHALLENGE1,
+          &challenge1, 0);
+      if (!challenge1)
+        goto no_challenge1;
+
+      gst_rtsp_ext_real_calc_response_and_checksum (ctx->challenge2,
+          ctx->checksum, challenge1);
+
+      GST_DEBUG_OBJECT (ctx, "Found Real challenge tag");
+      ctx->isreal = TRUE;
+      break;
+    }
+    case GST_RTSP_DESCRIBE:
+    {
+      gchar *etag = NULL;
+      guint len;
+
+      gst_rtsp_message_get_header (resp, GST_RTSP_HDR_ETAG, &etag, 0);
+      if (etag) {
+        len = sizeof (ctx->etag);
+        strncpy (ctx->etag, etag, len);
+        ctx->etag[len - 1] = '\0';
+      }
+      break;
+    }
+    default:
+      break;
+  }
+  return GST_RTSP_OK;
+
+  /* ERRORS */
+no_challenge1:
+  {
+    GST_DEBUG_OBJECT (ctx, "Could not find challenge tag.");
+    ctx->isreal = FALSE;
+    return GST_RTSP_OK;
+  }
+}
+
+#define ENSURE_SIZE(size)              \
+G_STMT_START {                        \
+  while (data_len < size) {            \
+    data_len += 1024;                  \
+    data = g_realloc (data, data_len); \
+  }                                    \
+} G_STMT_END
+
+#define READ_BUFFER_GEN(src, func, name, dest, dest_len)    \
+G_STMT_START {                                             \
+  dest = (gchar *)func (src, name);                         \
+  if (!dest) {                                              \
+    dest = (char *) "";                                     \
+    dest_len = 0;                                           \
+  }                                                         \
+  else if (!strncmp (dest, "buffer;\"", 8)) {               \
+    dest += 8;                                              \
+    dest_len = strlen (dest) - 1;                           \
+    dest[dest_len] = '\0';                                  \
+    g_base64_decode_inplace (dest, &dest_len);            \
+  }                                                         \
+} G_STMT_END
+
+#define READ_BUFFER(sdp, name, dest, dest_len)        \
+ READ_BUFFER_GEN(sdp, gst_sdp_message_get_attribute_val, name, dest, dest_len)
+#define READ_BUFFER_M(media, name, dest, dest_len)    \
+ READ_BUFFER_GEN(media, gst_sdp_media_get_attribute_val, name, dest, dest_len)
+
+#define READ_INT_GEN(src, func, name, dest)               \
+G_STMT_START {                                           \
+  const gchar *val = func (src, name);                          \
+  if (val && !strncmp (val, "integer;", 8))               \
+      dest = atoi (val + 8);                              \
+    else                                                  \
+      dest = 0;                                           \
+} G_STMT_END
+
+#define READ_INT(sdp, name, dest)                             \
+ READ_INT_GEN(sdp, gst_sdp_message_get_attribute_val, name, dest)
+#define READ_INT_M(media, name, dest)                         \
+ READ_INT_GEN(media, gst_sdp_media_get_attribute_val, name, dest)
+
+#define READ_STRING(media, name, dest, dest_len)              \
+G_STMT_START {                                               \
+  const gchar *val = gst_sdp_media_get_attribute_val (media, name); \
+  if (val && !strncmp (val, "string;\"", 8)) {                \
+    dest = (gchar *) val + 8;                                 \
+    dest_len = strlen (dest) - 1;                             \
+    dest[dest_len] = '\0';                                    \
+  } else {                                                    \
+    dest = (char *) "";                                       \
+    dest_len = 0;                                             \
+  }                                                           \
+} G_STMT_END
+
+#define WRITE_STRING1(datap, str, str_len)            \
+G_STMT_START {                                       \
+  *datap = str_len;                                   \
+  memcpy ((datap) + 1, str, str_len);                 \
+  datap += str_len + 1;                               \
+} G_STMT_END
+
+#define WRITE_STRING2(datap, str, str_len)            \
+G_STMT_START {                                       \
+  GST_WRITE_UINT16_BE (datap, str_len);               \
+  memcpy (datap + 2, str, str_len);                   \
+  datap += str_len + 2;                               \
+} G_STMT_END
+
+static GstRTSPResult
+rtsp_ext_real_parse_sdp (GstRTSPExtension * ext, GstSDPMessage * sdp,
+    GstStructure * props)
+{
+  GstRTSPReal *ctx = (GstRTSPReal *) ext;
+  guint size;
+  gint i;
+  gchar *title, *author, *copyright, *comment;
+  gsize title_len, author_len, copyright_len, comment_len;
+  guint8 *data = NULL, *datap;
+  guint data_len = 0, offset;
+  GstBuffer *buf;
+  gchar *opaque_data;
+  gsize opaque_data_len, asm_rule_book_len;
+  GHashTable *vars;
+  GString *rules;
+
+  /* don't bother for non-real formats */
+  READ_INT (sdp, "IsRealDataType", ctx->isreal);
+  if (!ctx->isreal)
+    return TRUE;
+
+  /* Force PAUSE | PLAY */
+  //src->methods |= GST_RTSP_PLAY | GST_RTSP_PAUSE;
+
+  ctx->n_streams = gst_sdp_message_medias_len (sdp);
+
+  ctx->max_bit_rate = 0;
+  ctx->avg_bit_rate = 0;
+  ctx->max_packet_size = 0;
+  ctx->avg_packet_size = 0;
+  ctx->duration = 0;
+
+  for (i = 0; i < ctx->n_streams; i++) {
+    const GstSDPMedia *media;
+    gint intval;
+
+    media = gst_sdp_message_get_media (sdp, i);
+
+    READ_INT_M (media, "MaxBitRate", intval);
+    ctx->max_bit_rate += intval;
+    READ_INT_M (media, "AvgBitRate", intval);
+    ctx->avg_bit_rate += intval;
+    READ_INT_M (media, "MaxPacketSize", intval);
+    ctx->max_packet_size = MAX (ctx->max_packet_size, intval);
+    READ_INT_M (media, "AvgPacketSize", intval);
+    ctx->avg_packet_size = (ctx->avg_packet_size * i + intval) / (i + 1);
+    READ_INT_M (media, "Duration", intval);
+    ctx->duration = MAX (ctx->duration, intval);
+  }
+
+  /* FIXME: use GstByteWriter to write the header */
+  /* PROP */
+  offset = 0;
+  size = 50;
+  ENSURE_SIZE (size);
+  datap = data + offset;
+
+  memcpy (datap + 0, "PROP", 4);
+  GST_WRITE_UINT32_BE (datap + 4, size);
+  GST_WRITE_UINT16_BE (datap + 8, 0);
+  GST_WRITE_UINT32_BE (datap + 10, ctx->max_bit_rate);
+  GST_WRITE_UINT32_BE (datap + 14, ctx->avg_bit_rate);
+  GST_WRITE_UINT32_BE (datap + 18, ctx->max_packet_size);
+  GST_WRITE_UINT32_BE (datap + 22, ctx->avg_packet_size);
+  GST_WRITE_UINT32_BE (datap + 26, 0);
+  GST_WRITE_UINT32_BE (datap + 30, ctx->duration);
+  GST_WRITE_UINT32_BE (datap + 34, 0);
+  GST_WRITE_UINT32_BE (datap + 38, 0);
+  GST_WRITE_UINT32_BE (datap + 42, 0);
+  GST_WRITE_UINT16_BE (datap + 46, ctx->n_streams);
+  GST_WRITE_UINT16_BE (datap + 48, 0);
+  offset += size;
+
+  /* CONT */
+  READ_BUFFER (sdp, "Title", title, title_len);
+  READ_BUFFER (sdp, "Author", author, author_len);
+  READ_BUFFER (sdp, "Comment", comment, comment_len);
+  READ_BUFFER (sdp, "Copyright", copyright, copyright_len);
+
+  size = 18 + title_len + author_len + comment_len + copyright_len;
+  ENSURE_SIZE (offset + size);
+  datap = data + offset;
+
+  memcpy (datap, "CONT", 4);
+  GST_WRITE_UINT32_BE (datap + 4, size);
+  GST_WRITE_UINT16_BE (datap + 8, 0);   /* Version */
+  datap += 10;
+  WRITE_STRING2 (datap, title, title_len);
+  WRITE_STRING2 (datap, author, author_len);
+  WRITE_STRING2 (datap, copyright, copyright_len);
+  WRITE_STRING2 (datap, comment, comment_len);
+  offset += size;
+
+  /* fix the hashtale for the rule parser */
+  rules = g_string_new ("");
+  vars = g_hash_table_new (g_str_hash, g_str_equal);
+  g_hash_table_insert (vars, (gchar *) "Bandwidth",
+      (gchar *) DEFAULT_BANDWIDTH);
+
+  /* MDPR */
+  for (i = 0; i < ctx->n_streams; i++) {
+    const GstSDPMedia *media;
+    guint32 len;
+    GstRTSPRealStream *stream;
+    gchar *str;
+    gint rulematches[MAX_RULEMATCHES];
+    gint sel, j, n;
+
+    media = gst_sdp_message_get_media (sdp, i);
+
+    if (media->media && !strcmp (media->media, "data"))
+      continue;
+
+    stream = g_new0 (GstRTSPRealStream, 1);
+    ctx->streams = g_list_append (ctx->streams, stream);
+
+    READ_INT_M (media, "MaxBitRate", stream->max_bit_rate);
+    READ_INT_M (media, "AvgBitRate", stream->avg_bit_rate);
+    READ_INT_M (media, "MaxPacketSize", stream->max_packet_size);
+    READ_INT_M (media, "AvgPacketSize", stream->avg_packet_size);
+    READ_INT_M (media, "StartTime", stream->start_time);
+    READ_INT_M (media, "Preroll", stream->preroll);
+    READ_INT_M (media, "Duration", stream->duration);
+    READ_STRING (media, "StreamName", str, stream->stream_name_len);
+    stream->stream_name = g_strndup (str, stream->stream_name_len);
+    READ_STRING (media, "mimetype", str, stream->mime_type_len);
+    stream->mime_type = g_strndup (str, stream->mime_type_len);
+
+    /* FIXME: Depending on the current bandwidth, we need to select one
+     * bandwith out of a list offered by the server. Someone needs to write
+     * a parser for strings like
+     *
+     * #($Bandwidth < 67959),TimestampDelivery=T,DropByN=T,priority=9;
+     * #($Bandwidth >= 67959) && ($Bandwidth < 167959),AverageBandwidth=67959,
+     * Priority=9;#($Bandwidth >= 67959) && ($Bandwidth < 167959),
+     * AverageBandwidth=0,Priority=5,OnDepend=\"1\";
+     * #($Bandwidth >= 167959) && ($Bandwidth < 267959),
+     * AverageBandwidth=167959,Priority=9;
+     * #($Bandwidth >= 167959) && ($Bandwidth < 267959),AverageBandwidth=0,
+     * Priority=5,OnDepend=\"3\";#($Bandwidth >= 267959),
+     * AverageBandwidth=267959,Priority=9;#($Bandwidth >= 267959),
+     * AverageBandwidth=0,Priority=5,OnDepend=\"5\";
+     *
+     * As I don't know how to do that, I just use the first entry (sel = 0).
+     * But to give you a starting point, I offer you above string
+     * in the variable 'asm_rule_book'.
+     */
+    READ_STRING (media, "ASMRuleBook", str, asm_rule_book_len);
+    stream->rulebook = gst_asm_rule_book_new (str);
+
+    n = gst_asm_rule_book_match (stream->rulebook, vars, rulematches);
+    for (j = 0; j < n; j++) {
+      g_string_append_printf (rules, "stream=%u;rule=%u,", i, rulematches[j]);
+    }
+
+    /* get the MLTI for the first matched rules */
+    sel = rulematches[0];
+
+    READ_BUFFER_M (media, "OpaqueData", opaque_data, opaque_data_len);
+
+    if (opaque_data_len < 4) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 4",
+          opaque_data_len);
+      goto strange_opaque_data;
+    }
+    if (strncmp (opaque_data, "MLTI", 4)) {
+      GST_DEBUG_OBJECT (ctx, "no MLTI found, appending all");
+      stream->type_specific_data_len = opaque_data_len;
+      stream->type_specific_data = g_memdup (opaque_data, opaque_data_len);
+      goto no_type_specific;
+    }
+    opaque_data += 4;
+    opaque_data_len -= 4;
+
+    if (opaque_data_len < 2) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 2",
+          opaque_data_len);
+      goto strange_opaque_data;
+    }
+    stream->num_rules = GST_READ_UINT16_BE (opaque_data);
+    opaque_data += 2;
+    opaque_data_len -= 2;
+
+    if (sel >= stream->num_rules) {
+      GST_DEBUG_OBJECT (ctx, "sel %d >= num_rules %d", sel, stream->num_rules);
+      goto strange_opaque_data;
+    }
+
+    if (opaque_data_len < 2 * sel) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT
+          " < 2 * sel (%d)", opaque_data_len, 2 * sel);
+      goto strange_opaque_data;
+    }
+    opaque_data += 2 * sel;
+    opaque_data_len -= 2 * sel;
+
+    if (opaque_data_len < 2) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 2",
+          opaque_data_len);
+      goto strange_opaque_data;
+    }
+    stream->codec = GST_READ_UINT16_BE (opaque_data);
+    opaque_data += 2;
+    opaque_data_len -= 2;
+
+    if (opaque_data_len < 2 * (stream->num_rules - sel - 1)) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT
+          " < %d", opaque_data_len, 2 * (stream->num_rules - sel - 1));
+      goto strange_opaque_data;
+    }
+    opaque_data += 2 * (stream->num_rules - sel - 1);
+    opaque_data_len -= 2 * (stream->num_rules - sel - 1);
+
+    if (opaque_data_len < 2) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 2",
+          opaque_data_len);
+      goto strange_opaque_data;
+    }
+    stream->num_rules = GST_READ_UINT16_BE (opaque_data);
+    opaque_data += 2;
+    opaque_data_len -= 2;
+
+    if (stream->codec > stream->num_rules) {
+      GST_DEBUG_OBJECT (ctx, "codec %d > num_rules %d", stream->codec,
+          stream->num_rules);
+      goto strange_opaque_data;
+    }
+
+    for (j = 0; j < stream->codec; j++) {
+      if (opaque_data_len < 4) {
+        GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 4",
+            opaque_data_len);
+        goto strange_opaque_data;
+      }
+      len = GST_READ_UINT32_BE (opaque_data);
+      opaque_data += 4;
+      opaque_data_len -= 4;
+
+      if (opaque_data_len < len) {
+        GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < len %d",
+            opaque_data_len, len);
+        goto strange_opaque_data;
+      }
+      opaque_data += len;
+      opaque_data_len -= len;
+    }
+
+    if (opaque_data_len < 4) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < 4",
+          opaque_data_len);
+      goto strange_opaque_data;
+    }
+    stream->type_specific_data_len = GST_READ_UINT32_BE (opaque_data);
+    opaque_data += 4;
+    opaque_data_len -= 4;
+
+    if (opaque_data_len < stream->type_specific_data_len) {
+      GST_DEBUG_OBJECT (ctx, "opaque_data_len %" G_GSIZE_FORMAT " < %d",
+          opaque_data_len, stream->type_specific_data_len);
+      goto strange_opaque_data;
+    }
+    stream->type_specific_data =
+        g_memdup (opaque_data, stream->type_specific_data_len);
+
+  no_type_specific:
+    size =
+        46 + stream->stream_name_len + stream->mime_type_len +
+        stream->type_specific_data_len;
+    ENSURE_SIZE (offset + size);
+    datap = data + offset;
+
+    memcpy (datap, "MDPR", 4);
+    GST_WRITE_UINT32_BE (datap + 4, size);
+    GST_WRITE_UINT16_BE (datap + 8, 0);
+    GST_WRITE_UINT16_BE (datap + 10, i);
+    GST_WRITE_UINT32_BE (datap + 12, stream->max_bit_rate);
+    GST_WRITE_UINT32_BE (datap + 16, stream->avg_bit_rate);
+    GST_WRITE_UINT32_BE (datap + 20, stream->max_packet_size);
+    GST_WRITE_UINT32_BE (datap + 24, stream->avg_packet_size);
+    GST_WRITE_UINT32_BE (datap + 28, stream->start_time);
+    GST_WRITE_UINT32_BE (datap + 32, stream->preroll);
+    GST_WRITE_UINT32_BE (datap + 36, stream->duration);
+    datap += 40;
+    WRITE_STRING1 (datap, stream->stream_name, stream->stream_name_len);
+    WRITE_STRING1 (datap, stream->mime_type, stream->mime_type_len);
+    GST_WRITE_UINT32_BE (datap, stream->type_specific_data_len);
+    if (stream->type_specific_data_len)
+      memcpy (datap + 4, stream->type_specific_data,
+          stream->type_specific_data_len);
+    offset += size;
+  }
+
+  /* destroy the rulebook hashtable now */
+  g_hash_table_destroy (vars);
+
+  /* strip final , if we added some stream rules */
+  if (rules->len > 0) {
+    rules = g_string_truncate (rules, rules->len - 1);
+  }
+
+  /* and store rules in the context */
+  ctx->rules = g_string_free (rules, FALSE);
+
+  /* DATA */
+  size = 18;
+  ENSURE_SIZE (offset + size);
+  datap = data + offset;
+
+  memcpy (datap, "DATA", 4);
+  GST_WRITE_UINT32_BE (datap + 4, size);
+  GST_WRITE_UINT16_BE (datap + 8, 0);
+  GST_WRITE_UINT32_BE (datap + 10, 0);  /* number of packets */
+  GST_WRITE_UINT32_BE (datap + 14, 0);  /* next data header */
+  offset += size;
+
+  buf = gst_buffer_new ();
+  GST_BUFFER_DATA (buf) = data;
+  GST_BUFFER_MALLOCDATA (buf) = data;
+  GST_BUFFER_SIZE (buf) = offset;
+
+  /* Set on caps */
+  GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_IN_CAPS);
+  gst_structure_set (props, "config", GST_TYPE_BUFFER, buf, NULL);
+  gst_buffer_unref (buf);
+
+  /* Overwrite encoding and media fields */
+  gst_structure_set (props, "encoding-name", G_TYPE_STRING, "X-REAL-RDT", NULL);
+  gst_structure_set (props, "media", G_TYPE_STRING, "application", NULL);
+
+  return TRUE;
+
+  /* ERRORS */
+strange_opaque_data:
+  {
+    GST_ELEMENT_ERROR (ctx, RESOURCE, WRITE, ("Strange opaque data."), (NULL));
+    return FALSE;
+  }
+}
+
+static GstRTSPResult
+rtsp_ext_real_stream_select (GstRTSPExtension * ext, GstRTSPUrl * url)
+{
+  GstRTSPReal *ctx = (GstRTSPReal *) ext;
+  GstRTSPResult res;
+  GstRTSPMessage request = { 0 };
+  GstRTSPMessage response = { 0 };
+  gchar *req_url;
+
+  if (!ctx->isreal)
+    return GST_RTSP_OK;
+
+  if (!ctx->rules)
+    return GST_RTSP_OK;
+
+  req_url = gst_rtsp_url_get_request_uri (url);
+
+  /* create SET_PARAMETER */
+  if ((res = gst_rtsp_message_init_request (&request, GST_RTSP_SET_PARAMETER,
+              req_url)) < 0)
+    goto create_request_failed;
+
+  g_free (req_url);
+
+  gst_rtsp_message_add_header (&request, GST_RTSP_HDR_SUBSCRIBE, ctx->rules);
+
+  /* send SET_PARAMETER */
+  if ((res = gst_rtsp_extension_send (ext, &request, &response)) < 0)
+    goto send_error;
+
+  gst_rtsp_message_unset (&request);
+  gst_rtsp_message_unset (&response);
+
+  return GST_RTSP_OK;
+
+  /* ERRORS */
+create_request_failed:
+  {
+    GST_ELEMENT_ERROR (ctx, LIBRARY, INIT,
+        ("Could not create request."), (NULL));
+    goto reset;
+  }
+send_error:
+  {
+    GST_ELEMENT_ERROR (ctx, RESOURCE, WRITE,
+        ("Could not send message."), (NULL));
+    goto reset;
+  }
+reset:
+  {
+    gst_rtsp_message_unset (&request);
+    gst_rtsp_message_unset (&response);
+    return res;
+  }
+}
+
+static void gst_rtsp_real_extension_init (gpointer g_iface,
+    gpointer iface_data);
+static void gst_rtsp_real_finalize (GObject * obj);
+
+static void
+_do_init (GType rtspreal_type)
+{
+  static const GInterfaceInfo rtspextension_info = {
+    gst_rtsp_real_extension_init,
+    NULL,
+    NULL
+  };
+
+  g_type_add_interface_static (rtspreal_type, GST_TYPE_RTSP_EXTENSION,
+      &rtspextension_info);
+}
+
+GST_BOILERPLATE_FULL (GstRTSPReal, gst_rtsp_real, GstElement, GST_TYPE_ELEMENT,
+    _do_init);
+
+static void
+gst_rtsp_real_base_init (gpointer klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_set_details_simple (element_class,
+      "RealMedia RTSP Extension", "Network/Extension/Protocol",
+      "Extends RTSP so that it can handle RealMedia setup",
+      "Wim Taymans <wim.taymans@gmail.com>");
+}
+
+static void
+gst_rtsp_real_class_init (GstRTSPRealClass * g_class)
+{
+  GObjectClass *gobject_class = (GObjectClass *) g_class;
+
+  gobject_class->finalize = gst_rtsp_real_finalize;
+
+  GST_DEBUG_CATEGORY_INIT (rtspreal_debug, "rtspreal", 0,
+      "RealMedia RTSP extension");
+}
+
+static void
+gst_rtsp_real_init (GstRTSPReal * rtspreal, GstRTSPRealClass * klass)
+{
+  rtspreal->isreal = FALSE;
+}
+
+static void
+gst_rtsp_stream_free (GstRTSPRealStream * stream)
+{
+  g_free (stream->stream_name);
+  g_free (stream->mime_type);
+  gst_asm_rule_book_free (stream->rulebook);
+  g_free (stream->type_specific_data);
+
+  g_free (stream);
+}
+
+static void
+gst_rtsp_real_finalize (GObject * obj)
+{
+  GstRTSPReal *r = (GstRTSPReal *) obj;
+
+  g_list_foreach (r->streams, (GFunc) gst_rtsp_stream_free, NULL);
+  g_list_free (r->streams);
+  g_free (r->rules);
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_rtsp_real_extension_init (gpointer g_iface, gpointer iface_data)
+{
+  GstRTSPExtensionInterface *iface = (GstRTSPExtensionInterface *) g_iface;
+
+  iface->before_send = rtsp_ext_real_before_send;
+  iface->after_send = rtsp_ext_real_after_send;
+  iface->parse_sdp = rtsp_ext_real_parse_sdp;
+  iface->stream_select = rtsp_ext_real_stream_select;
+  iface->get_transports = rtsp_ext_real_get_transports;
+}
+
+gboolean
+gst_rtsp_real_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "rtspreal",
+      GST_RANK_MARGINAL, GST_TYPE_RTSP_REAL);
+}
diff --git a/gst/realmedia/rtspreal.h b/gst/realmedia/rtspreal.h
new file mode 100644 (file)
index 0000000..6605f14
--- /dev/null
@@ -0,0 +1,92 @@
+/* GStreamer
+ * Copyright (C) <2005,2006> Wim Taymans <wim@fluendo.com>
+ *
+ * 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_RTSP_REAL_H__
+#define __GST_RTSP_REAL_H__
+
+#include <gst/gst.h>
+
+#include "asmrules.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RTSP_REAL             (gst_rtsp_real_get_type())
+#define GST_IS_RTSP_REAL(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTSP_REAL))
+#define GST_IS_RTSP_REAL_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTSP_REAL))
+#define GST_RTSP_REAL(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTSP_REAL, GstRTSPReal))
+#define GST_RTSP_REAL_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTSP_REAL, GstRTSPRealClass))
+
+typedef struct _GstRTSPReal GstRTSPReal;
+typedef struct _GstRTSPRealClass GstRTSPRealClass;
+
+typedef struct _GstRTSPRealStream GstRTSPRealStream;
+
+struct _GstRTSPRealStream {
+  guint  id;
+  guint  max_bit_rate;
+  guint  avg_bit_rate;
+  guint  max_packet_size;
+  guint  avg_packet_size;
+  guint  start_time;
+  guint  preroll;
+  guint  duration;
+  gchar *stream_name;
+  guint  stream_name_len;
+  gchar *mime_type;
+  guint  mime_type_len;
+
+  GstASMRuleBook *rulebook;
+
+  gchar *type_specific_data;
+  guint  type_specific_data_len;
+
+  guint16 num_rules, j, sel, codec;
+};
+
+struct _GstRTSPReal {
+  GstElement  element;
+
+  gchar checksum[34];
+  gchar challenge2[64];
+  gchar etag[64];
+  gboolean isreal;
+
+  guint   n_streams;
+  GList  *streams;
+
+  guint  max_bit_rate;
+  guint  avg_bit_rate;
+  guint  max_packet_size;
+  guint  avg_packet_size;
+  guint  duration;
+
+  gchar *rules;
+};
+
+struct _GstRTSPRealClass {
+  GstElementClass parent_class;
+};
+
+GType gst_rtsp_real_get_type(void);
+
+gboolean gst_rtsp_real_plugin_init (GstPlugin * plugin);
+
+G_END_DECLS
+
+#endif /* __GST_RTSP_REAL_H__ */
diff --git a/gst/synaesthesia/Makefile.am b/gst/synaesthesia/Makefile.am
new file mode 100644 (file)
index 0000000..da4f986
--- /dev/null
@@ -0,0 +1,26 @@
+plugin_LTLIBRARIES = libgstsynaesthesia.la
+
+libgstsynaesthesia_la_SOURCES = gstsynaesthesia.c synaescope.c
+
+noinst_HEADERS = synaescope.h gstsynaesthesia.h
+
+libgstsynaesthesia_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstsynaesthesia_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
+libgstsynaesthesia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstsynaesthesia_la_LIBTOOLFLAGS = --tag=disable-static
+
+EXTRA_DIST = README
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstsynaesthesia -:SHARED libgstsynaesthesia \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstsynaesthesia_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstsynaesthesia_la_CFLAGS) \
+        -:LDFLAGS $(libgstsynaesthesia_la_LDFLAGS) \
+                  $(libgstsynaesthesia_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
diff --git a/gst/synaesthesia/Makefile.in b/gst/synaesthesia/Makefile.in
new file mode 100644 (file)
index 0000000..3d58362
--- /dev/null
@@ -0,0 +1,746 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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/synaesthesia
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstsynaesthesia_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstsynaesthesia_la_OBJECTS =  \
+       libgstsynaesthesia_la-gstsynaesthesia.lo \
+       libgstsynaesthesia_la-synaescope.lo
+libgstsynaesthesia_la_OBJECTS = $(am_libgstsynaesthesia_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+libgstsynaesthesia_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+       $(libgstsynaesthesia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+       --mode=link $(CCLD) $(libgstsynaesthesia_la_CFLAGS) $(CFLAGS) \
+       $(libgstsynaesthesia_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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(libgstsynaesthesia_la_SOURCES)
+DIST_SOURCES = $(libgstsynaesthesia_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+plugin_LTLIBRARIES = libgstsynaesthesia.la
+libgstsynaesthesia_la_SOURCES = gstsynaesthesia.c synaescope.c
+noinst_HEADERS = synaescope.h gstsynaesthesia.h
+libgstsynaesthesia_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstsynaesthesia_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
+libgstsynaesthesia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstsynaesthesia_la_LIBTOOLFLAGS = --tag=disable-static
+EXTRA_DIST = README
+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/synaesthesia/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu gst/synaesthesia/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
+libgstsynaesthesia.la: $(libgstsynaesthesia_la_OBJECTS) $(libgstsynaesthesia_la_DEPENDENCIES) $(EXTRA_libgstsynaesthesia_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libgstsynaesthesia_la_LINK) -rpath $(plugindir) $(libgstsynaesthesia_la_OBJECTS) $(libgstsynaesthesia_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsynaesthesia_la-gstsynaesthesia.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsynaesthesia_la-synaescope.Plo@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstsynaesthesia_la-gstsynaesthesia.lo: gstsynaesthesia.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsynaesthesia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsynaesthesia_la_CFLAGS) $(CFLAGS) -MT libgstsynaesthesia_la-gstsynaesthesia.lo -MD -MP -MF $(DEPDIR)/libgstsynaesthesia_la-gstsynaesthesia.Tpo -c -o libgstsynaesthesia_la-gstsynaesthesia.lo `test -f 'gstsynaesthesia.c' || echo '$(srcdir)/'`gstsynaesthesia.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsynaesthesia_la-gstsynaesthesia.Tpo $(DEPDIR)/libgstsynaesthesia_la-gstsynaesthesia.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gstsynaesthesia.c' object='libgstsynaesthesia_la-gstsynaesthesia.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsynaesthesia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsynaesthesia_la_CFLAGS) $(CFLAGS) -c -o libgstsynaesthesia_la-gstsynaesthesia.lo `test -f 'gstsynaesthesia.c' || echo '$(srcdir)/'`gstsynaesthesia.c
+
+libgstsynaesthesia_la-synaescope.lo: synaescope.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsynaesthesia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsynaesthesia_la_CFLAGS) $(CFLAGS) -MT libgstsynaesthesia_la-synaescope.lo -MD -MP -MF $(DEPDIR)/libgstsynaesthesia_la-synaescope.Tpo -c -o libgstsynaesthesia_la-synaescope.lo `test -f 'synaescope.c' || echo '$(srcdir)/'`synaescope.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsynaesthesia_la-synaescope.Tpo $(DEPDIR)/libgstsynaesthesia_la-synaescope.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='synaescope.c' object='libgstsynaesthesia_la-synaescope.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsynaesthesia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsynaesthesia_la_CFLAGS) $(CFLAGS) -c -o libgstsynaesthesia_la-synaescope.lo `test -f 'synaescope.c' || echo '$(srcdir)/'`synaescope.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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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
+
+
+Android.mk: Makefile.am $(BUILT_SOURCES)
+       androgenizer \
+       -:PROJECT libgstsynaesthesia -:SHARED libgstsynaesthesia \
+        -:TAGS eng debug \
+         -:REL_TOP $(top_srcdir) -:ABS_TOP $(abs_top_srcdir) \
+        -:SOURCES $(libgstsynaesthesia_la_SOURCES) \
+        -:CFLAGS $(DEFS) $(DEFAULT_INCLUDES) $(libgstsynaesthesia_la_CFLAGS) \
+        -:LDFLAGS $(libgstsynaesthesia_la_LDFLAGS) \
+                  $(libgstsynaesthesia_la_LIBADD) \
+                  -ldl \
+        -:PASSTHROUGH LOCAL_ARM_MODE:=arm \
+                      LOCAL_MODULE_PATH:='$$(TARGET_OUT)/lib/gstreamer-0.10' \
+       > $@
+
+# 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 --git a/gst/synaesthesia/README b/gst/synaesthesia/README
new file mode 100644 (file)
index 0000000..3932682
--- /dev/null
@@ -0,0 +1,151 @@
+This is a visualization based on on synaesthesia. (see the synaesthesia
+README below)
+
+This implementation is taken from alsaplayer: http://www.alsaplayer.org/ It
+is based on synaesthesia version 1.3 (or maybe 1.4, I'm not entirely
+certain), with some modifications by Richard Boulton to try and ensure that
+something interesting is displayed for both very quiet and very loud music.
+
+Note: only one instance of this plugin may be created at a time: it has a
+lot of static data.  This should be fixed (and it shouldn't be hard to do
+so, either).
+
+----------------------------------------------------------------------------
+
+SYNAESTHESIA v2.0
+
+Introduction
+============
+
+This is a program for representing sounds visually from a CD or line
+input or piped from another program. It goes beyond the usual oscilliscope
+style program by combining an FFT and stereo positioning information to
+give a two dimensional display. Some of the shapes I have observed are:
+  * Drums: clouds of color, fairly high
+  * Clean guitar: several horizontal lines, low down
+  * Rough guitar: a cloud, low down
+  * Trumpet: Lots of horizontal lines everywhere
+  * Flute: A single horizontal line, low down
+  * Voice: A vertical line with some internal structure
+  * Synthesizer: All kinds of weird shapes!
+
+Synaesthesia can run in a window in X or full screen using SVGAlib.
+
+The display represents frequency as vertical position on screen, 
+left-right position as left-right position on screen. It can also
+understand surround sound encoded music, and shows ambient noise 
+in orange.
+
+X-Windows support was added in version 1.3, as well as a major redesign
+of the interface. You can use Synaesthesia as a fully functional
+CD player, suitable for use while working.
+
+There is command line support for play lists and piping from another
+program (such as an mp3 player).
+
+Usage
+=====
+
+Synaesthesia should work on Linux and BSD systems. (Note: I don't
+have access to a BSD system myself, I have to rely on patches -- if it
+doesn't work, please tell me!) LinuxPPC users may have to use the pipe
+mode rather than taking sound input from the CD player, as I believe
+sound recording is not yet implemented.
+
+Compile Synaesthesia by typing
+
+  make
+  
+then install it by typing
+
+  make install
+
+This will create three versions of Synaesthesia:
+
+  synaesthesia    - full screen SVGAlib version (Linux only)
+  xsynaesthesia   - Version that runs as a window in X
+  sdlsynaesthesia - Version that uses the SDL graphics library
+
+If you want to use the SDL version, you need to get SDL from
+http://www.devolution.com/~slouken/SDL.
+
+You will need to run Synaesthesia as root to run it full screen
+with SVGAlib. Other varieties can be run by any user providing you 
+provide permissions on /dev/dsp, /dev/cdrom, and /dev/mixer.
+
+Synaesthesia creates a configuration file, named ~/.synaesthesia,
+to store settings such as brightness, color, and window size, as
+well as which devices to use to control sound input.
+
+BSD users will have to edit this file to set the CD-ROM device name
+before using Synaesthesia in order to control the CD.
+
+Run Synaesthesia with no parameters for further information on how to 
+use it.
+
+Notes for code rippers
+======================
+
+This program contains code that you may wish to use in your own projects.
+If you want to, please do. (For example, you might want to add some
+snazzy visual effects to your favourite MP3 or CD player)
+
+The actual code to do the mapping from sound to visual display is
+all in core.cpp, it should be fairly easy to disentangle from other
+parts of the program. It does make reference to some globals defined
+in syna.h, namely the #defines m (log2 of the sample size for each
+frame) and brightness, data (which stores the sound input), outputBmp,
+lastOutputBmp and lastLastOutputBmp (which hold the output), outWidth
+and outHeight (size of the bitmaps), and fadeMode, brightnessTwiddler,
+starSize and pointsAreDiamonds (various parameters affecting the display).
+
+The normal way to use it would be:
+
+  Call coreInit() to set up some look-up tables
+  Call setStarSize(starSize) to set up some more look-up tables
+  Loop
+    Put data into the data array
+    Call fade() to apply the fade/wave/heat effect to the output
+    Call coreGo() to add the next fragment of sound input to the output
+    Display contents of outputBmp to screen
+
+There is a simple anti-aliased polygon drawing engine in the file
+polygon.h. sound.cpp contains code for driving the CD. xlib.c and
+xlibwrap.cpp contain code for setting up a window under X (originally
+ripped from the Xaos fractal viewer program :-) ).
+
+Authors
+=======
+
+This program is free. If you like it, or have any suggestions, please
+send me (Paul Harrison) an email (pfh@yoyo.cc.monash.edu.au).
+
+Thanks to Asger Alstrup Nielsen for many great suggestions, and for 
+writing optimized 32 bit loops for fading and drawing to screen.
+
+Thanks to Roger Knobbe for porting Synaesthesia to FreeBSD. 
+
+Thanks to Ben Gertzfield and Martin Mitchell for some small fixes to the
+CD controlling code. 
+
+Thanks to Simon Budig for an improvement to the X code.
+
+Changes
+=======
+
+1.1 - Added surround sound decoding.
+1.2 - Fixed a bug in the ioctl calls to /dev/dsp.
+1.3 - Asger Alstrup Nielsen's optimizations added.
+      Added X-Windows support.
+      More options, redesigned interface.
+1.4 - Bug fixes, including a great reduction in
+      "Sound: Recording overrun" warnings.
+      New command line options: play lists and piping.
+      Support for SDL.
+2.0 - Bug fixes: Fixed problem in xlib.c that caused occasional segfaults,
+        several endianness problems fixed.
+      New effects: Wave, heat, diamond shaped points.
+      Piping sound now longer requires the twiddle factor.
+      Yet another interface redesign.
+      Partial support for LinuxPPC (pipe mode only)
+
diff --git a/gst/synaesthesia/gstsynaesthesia.c b/gst/synaesthesia/gstsynaesthesia.c
new file mode 100644 (file)
index 0000000..4b74f75
--- /dev/null
@@ -0,0 +1,443 @@
+/* GStreamer
+ * Copyright (C) <2001> Richard Boulton <richard@tartarus.org>
+ *
+ * gstsynaesthesia.c: implementation of synaesthesia drawing element
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+/**
+ * SECTION:element-synaesthesia
+ * @see_also: goom
+ *
+ * Synaesthesia is an audio visualisation element. It creates glitter and
+ * pulsating fog based on the incomming audio signal.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch -v audiotestsrc ! audioconvert ! synaesthesia ! ximagesink
+ * gst-launch -v audiotestsrc ! audioconvert ! synaesthesia ! ffmpegcolorspace ! xvimagesink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstsynaesthesia.h"
+
+static GstStaticPadTemplate gst_synaesthesia_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_xRGB_HOST_ENDIAN)
+    );
+
+static GstStaticPadTemplate gst_synaesthesia_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_AUDIO_INT_STANDARD_PAD_TEMPLATE_CAPS)
+    );
+
+static void gst_synaesthesia_finalize (GObject * object);
+static void gst_synaesthesia_dispose (GObject * object);
+
+static GstFlowReturn gst_synaesthesia_chain (GstPad * pad, GstBuffer * buffer);
+
+static GstStateChangeReturn
+gst_synaesthesia_change_state (GstElement * element, GstStateChange transition);
+
+static gboolean gst_synaesthesia_src_negotiate (GstSynaesthesia * synaesthesia);
+static gboolean gst_synaesthesia_src_setcaps (GstPad * pad, GstCaps * caps);
+static gboolean gst_synaesthesia_sink_setcaps (GstPad * pad, GstCaps * caps);
+
+GST_BOILERPLATE (GstSynaesthesia, gst_synaesthesia, GstElement,
+    GST_TYPE_ELEMENT);
+
+static void
+gst_synaesthesia_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_element_class_set_details_simple (element_class, "Synaesthesia",
+      "Visualization",
+      "Creates video visualizations of audio input, using stereo and pitch information",
+      "Richard Boulton <richard@tartarus.org>");
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_synaesthesia_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_synaesthesia_sink_template);
+}
+
+static void
+gst_synaesthesia_class_init (GstSynaesthesiaClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class->dispose = gst_synaesthesia_dispose;
+  gobject_class->finalize = gst_synaesthesia_finalize;
+
+  gstelement_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_synaesthesia_change_state);
+
+  synaesthesia_init ();
+}
+
+static void
+gst_synaesthesia_init (GstSynaesthesia * synaesthesia,
+    GstSynaesthesiaClass * g_class)
+{
+  /* create the sink and src pads */
+  synaesthesia->sinkpad =
+      gst_pad_new_from_static_template (&gst_synaesthesia_sink_template,
+      "sink");
+  gst_pad_set_chain_function (synaesthesia->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_synaesthesia_chain));
+  gst_pad_set_setcaps_function (synaesthesia->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_synaesthesia_sink_setcaps));
+  gst_element_add_pad (GST_ELEMENT (synaesthesia), synaesthesia->sinkpad);
+
+  synaesthesia->srcpad =
+      gst_pad_new_from_static_template (&gst_synaesthesia_src_template, "src");
+  gst_pad_set_setcaps_function (synaesthesia->srcpad,
+      GST_DEBUG_FUNCPTR (gst_synaesthesia_src_setcaps));
+  gst_element_add_pad (GST_ELEMENT (synaesthesia), synaesthesia->srcpad);
+
+  synaesthesia->adapter = gst_adapter_new ();
+
+  /* reset the initial video state */
+  synaesthesia->width = 320;
+  synaesthesia->height = 200;
+  synaesthesia->fps_n = 25;     /* desired frame rate */
+  synaesthesia->fps_d = 1;
+  synaesthesia->frame_duration = -1;
+
+  /* reset the initial audio state */
+  synaesthesia->rate = GST_AUDIO_DEF_RATE;
+  synaesthesia->channels = 2;
+
+  synaesthesia->next_ts = GST_CLOCK_TIME_NONE;
+
+  synaesthesia->si =
+      synaesthesia_new (synaesthesia->width, synaesthesia->height);
+}
+
+static void
+gst_synaesthesia_dispose (GObject * object)
+{
+  GstSynaesthesia *synaesthesia;
+
+  synaesthesia = GST_SYNAESTHESIA (object);
+
+  if (synaesthesia->adapter) {
+    g_object_unref (synaesthesia->adapter);
+    synaesthesia->adapter = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_synaesthesia_finalize (GObject * object)
+{
+  GstSynaesthesia *synaesthesia;
+
+  synaesthesia = GST_SYNAESTHESIA (object);
+
+  synaesthesia_close (synaesthesia->si);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static gboolean
+gst_synaesthesia_sink_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstSynaesthesia *synaesthesia;
+  GstStructure *structure;
+  gint channels;
+  gint rate;
+  gboolean res = TRUE;
+
+  synaesthesia = GST_SYNAESTHESIA (gst_pad_get_parent (pad));
+  structure = gst_caps_get_structure (caps, 0);
+
+  if (!gst_structure_get_int (structure, "channels", &channels) ||
+      !gst_structure_get_int (structure, "rate", &rate))
+    goto missing_caps_details;
+
+  if (channels != 2)
+    goto wrong_channels;
+
+  if (rate <= 0)
+    goto wrong_rate;
+
+  synaesthesia->channels = channels;
+  synaesthesia->rate = rate;
+
+done:
+  gst_object_unref (synaesthesia);
+  return res;
+
+  /* Errors */
+missing_caps_details:
+  {
+    GST_WARNING_OBJECT (synaesthesia, "missing channels or rate in the caps");
+    res = FALSE;
+    goto done;
+  }
+wrong_channels:
+  {
+    GST_WARNING_OBJECT (synaesthesia, "number of channels must be 2, but is %d",
+        channels);
+    res = FALSE;
+    goto done;
+  }
+wrong_rate:
+  {
+    GST_WARNING_OBJECT (synaesthesia, "sample rate must be >0, but is %d",
+        rate);
+    res = FALSE;
+    goto done;
+  }
+}
+
+static gboolean
+gst_synaesthesia_src_negotiate (GstSynaesthesia * synaesthesia)
+{
+  GstCaps *othercaps, *target, *intersect;
+  GstStructure *structure;
+  const GstCaps *templ;
+
+  templ = gst_pad_get_pad_template_caps (synaesthesia->srcpad);
+
+  GST_DEBUG_OBJECT (synaesthesia, "performing negotiation");
+
+  /* see what the peer can do */
+  othercaps = gst_pad_peer_get_caps (synaesthesia->srcpad);
+  if (othercaps) {
+    intersect = gst_caps_intersect (othercaps, templ);
+    gst_caps_unref (othercaps);
+
+    if (gst_caps_is_empty (intersect))
+      goto no_format;
+
+    target = gst_caps_copy_nth (intersect, 0);
+    gst_caps_unref (intersect);
+  } else {
+    target = gst_caps_ref ((GstCaps *) templ);
+  }
+
+  structure = gst_caps_get_structure (target, 0);
+  gst_structure_fixate_field_nearest_int (structure, "width",
+      synaesthesia->width);
+  gst_structure_fixate_field_nearest_int (structure, "height",
+      synaesthesia->height);
+  gst_structure_fixate_field_nearest_fraction (structure, "framerate",
+      synaesthesia->fps_n, synaesthesia->fps_d);
+
+  GST_DEBUG_OBJECT (synaesthesia, "final caps are %" GST_PTR_FORMAT, target);
+
+  gst_pad_set_caps (synaesthesia->srcpad, target);
+  gst_caps_unref (target);
+
+  return TRUE;
+
+no_format:
+  {
+    gst_caps_unref (intersect);
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_synaesthesia_src_setcaps (GstPad * pad, GstCaps * caps)
+{
+  GstSynaesthesia *synaesthesia;
+  GstStructure *structure;
+  gint w, h;
+  gint num, denom;
+  gboolean res = TRUE;
+
+  synaesthesia = GST_SYNAESTHESIA (gst_pad_get_parent (pad));
+  structure = gst_caps_get_structure (caps, 0);
+
+  if (!gst_structure_get_int (structure, "width", &w) ||
+      !gst_structure_get_int (structure, "height", &h) ||
+      !gst_structure_get_fraction (structure, "framerate", &num, &denom)) {
+    goto missing_caps_details;
+  }
+
+  synaesthesia->width = w;
+  synaesthesia->height = h;
+  synaesthesia->fps_n = num;
+  synaesthesia->fps_d = denom;
+
+  synaesthesia_resize (synaesthesia->si, synaesthesia->width,
+      synaesthesia->height);
+
+  synaesthesia->frame_duration = gst_util_uint64_scale_int (GST_SECOND,
+      synaesthesia->fps_d, synaesthesia->fps_n);
+  synaesthesia->spf = gst_util_uint64_scale_int (synaesthesia->rate,
+      synaesthesia->fps_d, synaesthesia->fps_n);
+
+  GST_DEBUG_OBJECT (synaesthesia, "dimension %dx%d, framerate %d/%d, spf %d",
+      synaesthesia->width, synaesthesia->height,
+      synaesthesia->fps_n, synaesthesia->fps_d, synaesthesia->spf);
+
+done:
+  gst_object_unref (synaesthesia);
+  return res;
+
+  /* Errors */
+missing_caps_details:
+  {
+    GST_WARNING_OBJECT (synaesthesia,
+        "missing width, height or framerate in the caps");
+    res = FALSE;
+    goto done;
+  }
+}
+
+static GstFlowReturn
+gst_synaesthesia_chain (GstPad * pad, GstBuffer * buffer)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstSynaesthesia *synaesthesia;
+  guint32 avail, bytesperread;
+
+  synaesthesia = GST_SYNAESTHESIA (gst_pad_get_parent (pad));
+
+  GST_LOG_OBJECT (synaesthesia, "chainfunc called");
+
+  /* resync on DISCONT */
+  if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
+    synaesthesia->next_ts = GST_CLOCK_TIME_NONE;
+    gst_adapter_clear (synaesthesia->adapter);
+  }
+
+  if (GST_PAD_CAPS (synaesthesia->srcpad) == NULL) {
+    if (!gst_synaesthesia_src_negotiate (synaesthesia))
+      return GST_FLOW_NOT_NEGOTIATED;
+  }
+
+  /* Match timestamps from the incoming audio */
+  if (GST_BUFFER_TIMESTAMP (buffer) != GST_CLOCK_TIME_NONE)
+    synaesthesia->next_ts = GST_BUFFER_TIMESTAMP (buffer);
+
+  gst_adapter_push (synaesthesia->adapter, buffer);
+
+  /* this is what we want */
+  bytesperread =
+      MAX (FFT_BUFFER_SIZE,
+      synaesthesia->spf) * synaesthesia->channels * sizeof (gint16);
+
+  /* this is what we have */
+  avail = gst_adapter_available (synaesthesia->adapter);
+  while (avail > bytesperread) {
+    const guint16 *data =
+        (const guint16 *) gst_adapter_peek (synaesthesia->adapter,
+        bytesperread);
+    GstBuffer *outbuf;
+    guchar *out_frame;
+    guint i;
+
+    /* deinterleave */
+    for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+      synaesthesia->datain[0][i] = *data++;
+      synaesthesia->datain[1][i] = *data++;
+    }
+
+    ret =
+        gst_pad_alloc_buffer_and_set_caps (synaesthesia->srcpad,
+        GST_BUFFER_OFFSET_NONE,
+        synaesthesia->width * synaesthesia->height * 4,
+        GST_PAD_CAPS (synaesthesia->srcpad), &outbuf);
+
+    /* no buffer allocated, we don't care why. */
+    if (ret != GST_FLOW_OK)
+      break;
+
+    GST_BUFFER_TIMESTAMP (outbuf) = synaesthesia->next_ts;
+    GST_BUFFER_DURATION (outbuf) = synaesthesia->frame_duration;
+
+    out_frame = (guchar *)
+        synaesthesia_update (synaesthesia->si, synaesthesia->datain);
+    memcpy (GST_BUFFER_DATA (outbuf), out_frame, GST_BUFFER_SIZE (outbuf));
+
+    ret = gst_pad_push (synaesthesia->srcpad, outbuf);
+    outbuf = NULL;
+
+    if (ret != GST_FLOW_OK)
+      break;
+
+    if (synaesthesia->next_ts != GST_CLOCK_TIME_NONE)
+      synaesthesia->next_ts += synaesthesia->frame_duration;
+
+    /* flush sampled for one frame */
+    gst_adapter_flush (synaesthesia->adapter, synaesthesia->spf *
+        synaesthesia->channels * sizeof (gint16));
+
+    avail = gst_adapter_available (synaesthesia->adapter);
+  }
+
+  gst_object_unref (synaesthesia);
+
+  return ret;
+}
+
+static GstStateChangeReturn
+gst_synaesthesia_change_state (GstElement * element, GstStateChange transition)
+{
+  GstSynaesthesia *synaesthesia;
+
+  synaesthesia = GST_SYNAESTHESIA (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      synaesthesia->next_ts = GST_CLOCK_TIME_NONE;
+      gst_adapter_clear (synaesthesia->adapter);
+      break;
+    default:
+      break;
+  }
+
+  return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+}
+
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (synaesthesia_debug, "synaesthesia", 0,
+      "synaesthesia audio visualisations");
+
+  return gst_element_register (plugin, "synaesthesia", GST_RANK_NONE,
+      GST_TYPE_SYNAESTHESIA);
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    "synaesthesia",
+    "Creates video visualizations of audio input, using stereo and pitch information",
+    plugin_init, VERSION, "GPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/gst/synaesthesia/gstsynaesthesia.h b/gst/synaesthesia/gstsynaesthesia.h
new file mode 100644 (file)
index 0000000..dd63e56
--- /dev/null
@@ -0,0 +1,80 @@
+/* GStreamer
+ * Copyright (C) <2001> Richard Boulton <richard@tartarus.org>
+ *
+ * gstsynaesthesia.c: implementation of synaesthesia drawing element
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_SYNAESTHESIA_H__
+#define __GST_SYNAESTHESIA_H__
+
+#include <string.h>
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <gst/audio/audio.h>
+#include <gst/base/gstadapter.h>
+#include "synaescope.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_SYNAESTHESIA            (gst_synaesthesia_get_type())
+#define GST_SYNAESTHESIA(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SYNAESTHESIA,GstSynaesthesia))
+#define GST_SYNAESTHESIA_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SYNAESTHESIA,GstSynaesthesiaClass))
+#define GST_IS_SYNAESTHESIA(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SYNAESTHESIA))
+#define GST_IS_SYNAESTHESIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SYNAESTHESIA))
+typedef struct _GstSynaesthesia GstSynaesthesia;
+typedef struct _GstSynaesthesiaClass GstSynaesthesiaClass;
+
+GST_DEBUG_CATEGORY_STATIC (synaesthesia_debug);
+#define GST_CAT_DEFAULT (synaesthesia_debug)
+
+struct _GstSynaesthesia
+{
+  GstElement element;
+
+  /* pads */
+  GstPad *sinkpad, *srcpad;
+  GstAdapter *adapter;
+
+  guint64 next_ts;              /* the timestamp of the next frame */
+  guint64 frame_duration;
+  guint bps;                    /* bytes per sample        */
+  guint spf;                    /* samples per video frame */
+
+  gint16 datain[2][FFT_BUFFER_SIZE];
+
+  /* video state */
+  gint fps_n, fps_d;
+  gint width;
+  gint height;
+  gint channels;
+
+  /* Audio state */
+  gint sample_rate;
+  gint rate;
+
+  /* Synaesthesia instance */
+  syn_instance *si;
+};
+
+struct _GstSynaesthesiaClass
+{
+  GstElementClass parent_class;
+};
+
+GType gst_synaesthesia_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_SYNAESTHESIA_H__ */
diff --git a/gst/synaesthesia/synaescope.c b/gst/synaesthesia/synaescope.c
new file mode 100644 (file)
index 0000000..92abd39
--- /dev/null
@@ -0,0 +1,460 @@
+/* synaescope.cpp
+ * Copyright (C) 1999,2002 Richard Boulton <richard@tartarus.org>
+ *
+ * Much code copied from Synaesthesia - a program to display sound
+ * graphically, by Paul Francis Harrison <pfh@yoyo.cc.monash.edu.au>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; 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 "synaescope.h"
+
+#include <pthread.h>
+#include <dirent.h>
+#include <sys/stat.h>
+#ifndef _MSC_VER
+#include <sys/time.h>
+#include <time.h>
+#endif
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifndef _MSC_VER
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <assert.h>
+
+#ifdef G_OS_WIN32
+#ifndef M_PI
+#define M_PI  3.14159265358979323846
+#endif
+#endif
+
+#define SCOPE_BG_RED 0
+#define SCOPE_BG_GREEN 0
+#define SCOPE_BG_BLUE 0
+
+#define brightMin 200
+#define brightMax 2000
+#define brightDec 10
+#define brightInc 6
+#define brTotTargetLow 5000
+#define brTotTargetHigh 15000
+
+#define BOUND(x) ((x) > 255 ? 255 : (x))
+#define PEAKIFY(x) BOUND((x) - (x)*(255-(x))/255/2)
+
+/* Instance data */
+struct syn_instance
+{
+  /* options */
+  unsigned int resx, resy;
+  int autobrightness;           /* Whether to use automatic brightness adjust */
+  unsigned int brightFactor;
+
+  /* data */
+  unsigned char *output;
+  guint32 *display;
+  gint16 pcmt_l[FFT_BUFFER_SIZE];
+  gint16 pcmt_r[FFT_BUFFER_SIZE];
+  gint16 pcm_l[FFT_BUFFER_SIZE];
+  gint16 pcm_r[FFT_BUFFER_SIZE];
+  double fftout_l[FFT_BUFFER_SIZE];
+  double fftout_r[FFT_BUFFER_SIZE];
+  double corr_l[FFT_BUFFER_SIZE];
+  double corr_r[FFT_BUFFER_SIZE];
+  int clarity[FFT_BUFFER_SIZE]; /* Surround sound */
+
+  /* pre calculated values */
+  int heightFactor;
+  int heightAdd;
+  double brightFactor2;
+};
+
+/* Shared lookup tables for the FFT */
+static double fftmult[FFT_BUFFER_SIZE / 2 + 1];
+static double cosTable[FFT_BUFFER_SIZE];
+static double negSinTable[FFT_BUFFER_SIZE];
+static int bitReverse[FFT_BUFFER_SIZE];
+/* Shared lookup tables for colors */
+static int scaleDown[256];
+static guint32 colEq[256];
+
+static void synaes_fft (double *x, double *y);
+static void synaescope_coreGo (syn_instance * si);
+
+static inline void
+addPixel (syn_instance * si, int x, int y, int br1, int br2)
+{
+  unsigned char *p;
+
+  if (G_UNLIKELY (x < 0 || x >= si->resx || y < 0 || y >= si->resy))
+    return;
+
+  p = si->output + x * 2 + y * si->resx * 2;
+  if (p[0] < 255 - br1)
+    p[0] += br1;
+  else
+    p[0] = 255;
+  if (p[1] < 255 - br2)
+    p[1] += br2;
+  else
+    p[1] = 255;
+}
+
+static inline void
+addPixelFast (unsigned char *p, int br1, int br2)
+{
+  if (p[0] < 255 - br1)
+    p[0] += br1;
+  else
+    p[0] = 255;
+  if (p[1] < 255 - br2)
+    p[1] += br2;
+  else
+    p[1] = 255;
+}
+
+static void
+synaescope_coreGo (syn_instance * si)
+{
+  int i, j;
+  register guint32 *ptr;
+  register guint32 *end;
+  long int brtot = 0;
+
+  memcpy (si->pcm_l, si->pcmt_l, sizeof (si->pcm_l));
+  memcpy (si->pcm_r, si->pcmt_r, sizeof (si->pcm_r));
+
+  for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+    si->fftout_l[i] = si->pcm_l[i];
+    si->fftout_r[i] = si->pcm_r[i];
+  }
+
+  synaes_fft (si->fftout_l, si->fftout_r);
+
+  for (i = 0 + 1; i < FFT_BUFFER_SIZE; i++) {
+    double x1 = si->fftout_l[bitReverse[i]];
+    double y1 = si->fftout_r[bitReverse[i]];
+    double x2 = si->fftout_l[bitReverse[FFT_BUFFER_SIZE - i]];
+    double y2 = si->fftout_r[bitReverse[FFT_BUFFER_SIZE - i]];
+    double aa, bb;
+
+    si->corr_l[i] = sqrt (aa = (x1 + x2) * (x1 + x2) + (y1 - y2) * (y1 - y2));
+    si->corr_r[i] = sqrt (bb = (x1 - x2) * (x1 - x2) + (y1 + y2) * (y1 + y2));
+    si->clarity[i] = (int) (
+        ((x1 + x2) * (x1 - x2) + (y1 + y2) * (y1 - y2)) / (aa + bb) * 256);
+  }
+
+  /* Asger Alstrupt's optimized 32 bit fade */
+  /* (alstrup@diku.dk) */
+  ptr = (guint32 *) si->output;
+  end = (guint32 *) (si->output + si->resx * si->resy * 2);
+  do {
+    /*Bytewize version was: *(ptr++) -= *ptr+(*ptr>>1)>>4; */
+    if (*ptr) {
+      if (*ptr & 0xf0f0f0f0) {
+        *ptr = *ptr - ((*ptr & 0xf0f0f0f0) >> 4) - ((*ptr & 0xe0e0e0e0) >> 5);
+      } else {
+        *ptr = (*ptr * 14 >> 4) & 0x0f0f0f0f;
+        /*Should be 29/32 to be consistent. Who cares. This is totally */
+        /* hacked anyway.  */
+        /*unsigned char *subptr = (unsigned char*)(ptr++); */
+        /*subptr[0] = (int)subptr[0] * 29 / 32; */
+        /*subptr[1] = (int)subptr[0] * 29 / 32; */
+        /*subptr[2] = (int)subptr[0] * 29 / 32; */
+        /*subptr[3] = (int)subptr[0] * 29 / 32; */
+      }
+    }
+    ptr++;
+  } while (ptr < end);
+
+  for (i = 1; i < FFT_BUFFER_SIZE / 2; i++) {
+    if (si->corr_l[i] > 0 || si->corr_r[i] > 0) {
+      int br1, br2;
+      double fc = si->corr_l[i] + si->corr_r[i];
+      int br = (int) (fc * i * si->brightFactor2);
+      int px = (int) (si->corr_r[i] * si->resx / fc);
+      int py = si->heightAdd - i / si->heightFactor;
+
+      brtot += br;
+      br1 = br * (si->clarity[i] + 128) >> 8;
+      br2 = br * (128 - si->clarity[i]) >> 8;
+      br1 = CLAMP (br1, 0, 255);
+      br2 = CLAMP (br2, 0, 255);
+
+      /* if we are close to a border */
+      if (px < 30 || py < 30 || px > si->resx - 30 || py > si->resy - 30) {
+        /* draw a spark */
+        addPixel (si, px, py, br1, br2);
+        for (j = 1; br1 > 0 || br2 > 0;
+            j++, br1 = scaleDown[br1], br2 = scaleDown[br2]) {
+          addPixel (si, px + j, py, br1, br2);
+          addPixel (si, px, py + j, br1, br2);
+          addPixel (si, px - j, py, br1, br2);
+          addPixel (si, px, py - j, br1, br2);
+        }
+      } else {
+        unsigned char *p = si->output + px * 2 + py * si->resx * 2;
+        unsigned char *p1 = p, *p2 = p, *p3 = p, *p4 = p;
+        /* draw a spark */
+        addPixelFast (p, br1, br2);
+        for (; br1 > 0 || br2 > 0; br1 = scaleDown[br1], br2 = scaleDown[br2]) {
+          p1 += 2;
+          addPixelFast (p1, br1, br2);
+          p2 -= 2;
+          addPixelFast (p2, br1, br2);
+          p3 += si->resx * 2;
+          addPixelFast (p3, br1, br2);
+          p4 -= si->resx * 2;
+          addPixelFast (p4, br1, br2);
+        }
+      }
+    }
+  }
+
+  /* Apply autoscaling: makes quiet bits brighter, and loud bits
+   * darker, but still keeps loud bits brighter than quiet bits. */
+  if (brtot != 0 && si->autobrightness) {
+    long int brTotTarget = brTotTargetHigh;
+
+    if (brightMax != brightMin) {
+      brTotTarget -= ((brTotTargetHigh - brTotTargetLow) *
+          (si->brightFactor - brightMin)) / (brightMax - brightMin);
+    }
+    if (brtot < brTotTarget) {
+      si->brightFactor += brightInc;
+      if (si->brightFactor > brightMax)
+        si->brightFactor = brightMax;
+    } else {
+      si->brightFactor -= brightDec;
+      if (si->brightFactor < brightMin)
+        si->brightFactor = brightMin;
+    }
+    /* printf("brtot: %ld\tbrightFactor: %d\tbrTotTarget: %d\n",
+       brtot, brightFactor, brTotTarget); */
+  }
+}
+
+
+static void
+synaescope32 (syn_instance * si)
+{
+  unsigned char *outptr;
+  int i;
+
+  synaescope_coreGo (si);
+
+  outptr = si->output;
+  for (i = 0; i < si->resx * si->resy; i++) {
+    si->display[i] = colEq[(outptr[0] >> 4) + (outptr[1] & 0xf0)];
+    outptr += 2;
+  }
+}
+
+
+static int
+bitReverser (int i)
+{
+  int sum = 0;
+  int j;
+
+  for (j = 0; j < FFT_BUFFER_SIZE_LOG; j++) {
+    sum = (i & 1) + sum * 2;
+    i >>= 1;
+  }
+
+  return sum;
+}
+
+static void
+synaes_fft (double *x, double *y)
+{
+  int n2 = FFT_BUFFER_SIZE;
+  int n1;
+  int twoToTheK;
+  int j;
+
+  for (twoToTheK = 1; twoToTheK < FFT_BUFFER_SIZE; twoToTheK *= 2) {
+    n1 = n2;
+    n2 /= 2;
+    for (j = 0; j < n2; j++) {
+      double c = cosTable[j * twoToTheK & (FFT_BUFFER_SIZE - 1)];
+      double s = negSinTable[j * twoToTheK & (FFT_BUFFER_SIZE - 1)];
+      int i;
+
+      for (i = j; i < FFT_BUFFER_SIZE; i += n1) {
+        int l = i + n2;
+        double xt = x[i] - x[l];
+        double yt = y[i] - y[l];
+
+        x[i] = (x[i] + x[l]);
+        y[i] = (y[i] + y[l]);
+        x[l] = xt * c - yt * s;
+        y[l] = xt * s + yt * c;
+      }
+    }
+  }
+}
+
+static void
+synaescope_set_data (syn_instance * si, gint16 data[2][FFT_BUFFER_SIZE])
+{
+  int i;
+  gint16 *newset_l = si->pcmt_l;
+  gint16 *newset_r = si->pcmt_r;
+
+  for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+    newset_l[i] = data[0][i];
+    newset_r[i] = data[1][i];
+  }
+}
+
+
+guint32 *
+synaesthesia_update (syn_instance * si, gint16 data[2][FFT_BUFFER_SIZE])
+{
+  synaescope_set_data (si, data);
+  synaescope32 (si);
+  return si->display;
+}
+
+void
+synaesthesia_init (void)
+{
+  static int inited = 0;
+  int i;
+
+  if (inited)
+    return;
+
+  for (i = 0; i <= FFT_BUFFER_SIZE / 2 + 1; i++) {
+    double mult = (double) 128 / ((FFT_BUFFER_SIZE * 16384) ^ 2);
+
+    /* Result now guaranteed (well, almost) to be in range 0..128 */
+
+    /* Low values represent more frequencies, and thus get more */
+    /* intensity - this helps correct for that. */
+    mult *= log (i + 1) / log (2);
+
+    mult *= 3;                  /* Adhoc parameter, looks about right for me. */
+
+    fftmult[i] = mult;
+  }
+
+  for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+    negSinTable[i] = -sin (M_PI * 2 / FFT_BUFFER_SIZE * i);
+    cosTable[i] = cos (M_PI * 2 / FFT_BUFFER_SIZE * i);
+    bitReverse[i] = bitReverser (i);
+  }
+
+  for (i = 0; i < 256; i++)
+    scaleDown[i] = i * 200 >> 8;
+
+  for (i = 0; i < 256; i++) {
+    int red = PEAKIFY ((i & 15 * 16));
+    int green = PEAKIFY ((i & 15) * 16 + (i & 15 * 16) / 4);
+    int blue = PEAKIFY ((i & 15) * 16);
+
+    colEq[i] = (red << 16) + (green << 8) + blue;
+  }
+
+  inited = 1;
+}
+
+gboolean
+synaesthesia_resize (syn_instance * si, guint resx, guint resy)
+{
+  unsigned char *output = NULL;
+  guint32 *display = NULL;
+  double actualHeight;
+
+  /* FIXME: FFT_BUFFER_SIZE is reated to resy, right now we get black borders on
+   * top and below
+   */
+
+  output = g_try_new (unsigned char, 2 * resx * resy);
+  display = g_try_new (guint32, resx * resy);
+  if (!output || !display)
+    goto Error;
+
+  g_free (si->output);
+  g_free (si->display);
+
+  si->resx = resx;
+  si->resy = resy;
+  si->output = output;
+  si->display = display;
+
+  /* factors for height scaling
+   * the bigger FFT_BUFFER_SIZE, the more finegrained steps we have
+   * should we report the real hight, so that xvimagesink can scale?
+   */
+  // 512 values , resy=256 -> highFc=2
+  si->heightFactor = FFT_BUFFER_SIZE / 2 / si->resy + 1;
+  actualHeight = FFT_BUFFER_SIZE / 2 / si->heightFactor;
+  si->heightAdd = (si->resy + actualHeight) / 2;
+
+  /*printf ("resy=%u, heightFactor=%d, heightAdd=%d, actualHeight=%d\n",
+     si->resy, si->heightFactor, si->heightAdd, actualHeight);
+   */
+
+  /* Correct for window size */
+  si->brightFactor2 = (si->brightFactor / 65536.0 / FFT_BUFFER_SIZE) *
+      sqrt (actualHeight * si->resx / (320.0 * 200.0));
+
+  return TRUE;
+
+Error:
+  g_free (output);
+  g_free (display);
+  return FALSE;
+}
+
+syn_instance *
+synaesthesia_new (guint resx, guint resy)
+{
+  syn_instance *si;
+
+  si = g_try_new0 (syn_instance, 1);
+  if (si == NULL)
+    return NULL;
+
+  if (!synaesthesia_resize (si, resx, resy)) {
+    g_free (si);
+    return NULL;
+  }
+
+  si->autobrightness = 1;       /* Whether to use automatic brightness adjust */
+  si->brightFactor = 400;
+
+  return si;
+}
+
+void
+synaesthesia_close (syn_instance * si)
+{
+  g_return_if_fail (si != NULL);
+
+  g_free (si->output);
+  g_free (si->display);
+
+  g_free (si);
+}
diff --git a/gst/synaesthesia/synaescope.h b/gst/synaesthesia/synaescope.h
new file mode 100644 (file)
index 0000000..fe41a9a
--- /dev/null
@@ -0,0 +1,42 @@
+/* synaescope.h
+ * Copyright (C) 1999,2002 Richard Boulton <richard@tartarus.org>
+ *
+ * Much code copied from Synaesthesia - a program to display sound
+ * graphically, by Paul Francis Harrison <pfh@yoyo.cc.monash.edu.au>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+#ifndef _SYNAESCOPE_H
+#define _SYNAESCOPE_H
+
+#include <glib.h>
+
+/* FIXME: we should set this automatically based on resy
+ * see synaescope.c::synaesthesia_resize()
+ */
+#define FFT_BUFFER_SIZE_LOG 10
+#define FFT_BUFFER_SIZE (1 << FFT_BUFFER_SIZE_LOG)
+
+typedef struct syn_instance syn_instance;
+
+void synaesthesia_init (void);
+syn_instance *synaesthesia_new (guint resx, guint resy);
+void synaesthesia_close (syn_instance * si);
+
+gboolean synaesthesia_resize (syn_instance * si, guint resx, guint resy);
+guint32 *synaesthesia_update (syn_instance * si,
+    gint16 data[2][FFT_BUFFER_SIZE]);
+
+#endif
diff --git a/install-sh b/install-sh
new file mode 100755 (executable)
index 0000000..a9244eb
--- /dev/null
@@ -0,0 +1,527 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2011-01-19.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       # Protect names problematic for `test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for `test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       [-=\(\)!]*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test X"$d" = X && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100644 (file)
index 0000000..c7d06c3
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,9661 @@
+
+# libtool (GNU libtool) 2.4.2
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
+#
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
+#
+# MODE must be one of the following:
+#
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#         host-triplet:        $host
+#         shell:               $SHELL
+#         compiler:            $LTCC
+#         compiler flags:              $LTCFLAGS
+#         linker:              $LD (gnu? $with_gnu_ld)
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1
+#         automake:    $automake_version
+#         autoconf:    $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.2 Debian-2.4.2-1"
+TIMESTAMP=""
+package_revision=1.3337
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+         export $lt_var
+         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+       fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
+
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS="  $lt_nl"
+
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+               s@/\./@/@g
+               t dotsl
+               s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+       # list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+       IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$opt_dry_run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
+
+    $ECHO "$my_tmpdir"
+}
+
+
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
+{
+    case $1 in
+      *[\\\`\"\$]*)
+       func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+       my_arg=`$ECHO "$1" | $SED \
+           -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+           $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+       :more
+       /\./!{
+         N
+         s/\n# / /
+         b more
+       }
+       :go
+       /^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+       s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+       s/^# *$//
+       s/\$progname/'$progname'/
+       p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+       :print
+        s/^# //
+       s/^# *$//
+       s*\$progname*'$progname'*
+       s*\$host*'"$host"'*
+       s*\$SHELL*'"$SHELL"'*
+       s*\$LTCC*'"$LTCC"'*
+       s*\$LTCFLAGS*'"$LTCFLAGS"'*
+       s*\$LD*'"$LD"'*
+       s/\$with_gnu_ld/'"$with_gnu_ld"'/
+       s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+       p
+       d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+       taglist="$taglist $tagname"
+
+       # Evaluate the configuration.  Be careful to quote the path
+       # and the sed script, to avoid splitting on whitespace, but
+       # also don't use non-portable quotes within backquotes within
+       # quotes we have to do it in 2 steps:
+       extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+       eval "$extractedcf"
+      else
+       func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)      opt_debug='set -x'
+                       func_echo "enabling shell trace mode"
+                       $opt_debug
+                       ;;
+      --dry-run|--dryrun|-n)
+                       opt_dry_run=:
+                       ;;
+      --config)
+                       opt_config=:
+func_config
+                       ;;
+      --dlopen|-dlopen)
+                       optarg="$1"
+                       opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+                       shift
+                       ;;
+      --preserve-dup-deps)
+                       opt_preserve_dup_deps=:
+                       ;;
+      --features)
+                       opt_features=:
+func_features
+                       ;;
+      --finish)
+                       opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+                       ;;
+      --help)
+                       opt_help=:
+                       ;;
+      --help-all)
+                       opt_help_all=:
+opt_help=': help-all'
+                       ;;
+      --mode)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+                       shift
+                       ;;
+      --no-silent|--no-quiet)
+                       opt_silent=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-warning|--no-warn)
+                       opt_warning=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-verbose)
+                       opt_verbose=false
+func_append preserve_args " $opt"
+                       ;;
+      --silent|--quiet)
+                       opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+                       ;;
+      --verbose|-v)
+                       opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+                       ;;
+      --tag)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+                       shift
+                       ;;
+
+      -\?|-h)          func_usage                              ;;
+      --help)          func_help                               ;;
+      --version)       func_version                            ;;
+
+      # Separate optargs to long options:
+      --*=*)
+                       func_split_long_opt "$opt"
+                       set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+                       func_split_short_opt "$opt"
+                       set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      --)              break                                   ;;
+      -*)              func_fatal_help "unrecognized option \`$opt'" ;;
+      *)               set dummy "$opt" ${1+"$@"};     shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
+
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+       for lalib_p_l in 1 2 3 4
+       do
+           read lalib_p_line
+           case "$lalib_p_line" in
+               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+           esac
+       done
+       exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)        . "$1" ;;
+    *)         . "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $opt_debug
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+       func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           CC_quoted=
+           for arg in $CC; do
+             # Double-quote args containing other shell metacharacters.
+             func_append_quoted CC_quoted "$arg"
+           done
+           CC_expanded=`func_echo_all $CC`
+           CC_quoted_expanded=`func_echo_all $CC_quoted`
+           case "$@ " in
+           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         func_echo "unable to infer tagged configuration"
+         func_fatal_error "specify a tag with \`--tag'"
+#      else
+#        func_verbose "using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
+
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+       # do not "continue".  Instead, add this to base_compile
+       lastarg="$arg"
+       arg_mode=normal
+       ;;
+
+      target )
+       libobj="$arg"
+       arg_mode=normal
+       continue
+       ;;
+
+      normal )
+       # Accept any command-line options.
+       case $arg in
+       -o)
+         test -n "$libobj" && \
+           func_fatal_error "you cannot specify \`-o' more than once"
+         arg_mode=target
+         continue
+         ;;
+
+       -pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+         continue
+         ;;
+
+       -shared | -static | -prefer-pic | -prefer-non-pic)
+         func_append later " $arg"
+         continue
+         ;;
+
+       -no-suppress)
+         suppress_opt=no
+         continue
+         ;;
+
+       -Xcompiler)
+         arg_mode=arg  #  the next one goes into the "base_compile" arg list
+         continue      #  The current "srcfile" will either be retained or
+         ;;            #  replaced later.  I would guess that would be a bug.
+
+       -Wc,*)
+         func_stripname '-Wc,' '' "$arg"
+         args=$func_stripname_result
+         lastarg=
+         save_ifs="$IFS"; IFS=','
+         for arg in $args; do
+           IFS="$save_ifs"
+           func_append_quoted lastarg "$arg"
+         done
+         IFS="$save_ifs"
+         func_stripname ' ' '' "$lastarg"
+         lastarg=$func_stripname_result
+
+         # Add the arguments to base_compile.
+         func_append base_compile " $lastarg"
+         continue
+         ;;
+
+       *)
+         # Accept the current argument as the source file.
+         # The previous "srcfile" becomes the current argument.
+         #
+         lastarg="$srcfile"
+         srcfile="$arg"
+         ;;
+       esac  #  case $arg
+       ;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with \`-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+       func_basename "$srcfile"
+       libobj="$func_basename_result"
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       continue
+       ;;
+
+      -static)
+       build_libtool_libs=no
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+       command="$base_compile $qsrcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+       # Place PIC objects in $objdir
+       func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command" \
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+       func_show_eval '$MV "$output_obj" "$lobj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+       suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $qsrcfile$pie_flag"
+      else
+       command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+       func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test "$need_locks" = warn &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+       func_show_eval '$MV "$output_obj" "$obj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+       removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       echo
+       func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+       H
+       d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+       || func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+       func_source "$file"
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && \
+           func_warning "\`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+
+       if test -f "$dir/$objdir/$dlname"; then
+         func_append dir "/$objdir"
+       else
+         if test ! -f "$dir/$dlname"; then
+           func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+       ;;
+
+      *)
+       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if func_ltwrapper_script_p "$file"; then
+         func_source "$file"
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       elif func_ltwrapper_executable_p "$file"; then
+         func_ltwrapper_scriptname "$file"
+         func_source "$func_ltwrapper_scriptname_result"
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+             else
+               $lt_unset $lt_var
+             fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+       echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+       func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+       if func_lalib_unsafe_p "$opt"; then
+         func_append libs " $opt"
+       else
+         func_warning "\`$opt' is not a valid libtool archive"
+       fi
+
+      else
+       func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+         sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+           > $tmpdir/tmp-la
+         mv -f $tmpdir/tmp-la $lib
+       done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+       $ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+       echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+       echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+       echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+       libdir=LIBDIR
+       eval flag=\"$hardcode_libdir_flag_spec\"
+
+       $ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+       $ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+       echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+       solaris2.[6789]|solaris2.1[0-9])
+         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+         echo "pages."
+         ;;
+       *)
+         echo "more information, such as the ld(1) and ld.so(8) manual pages."
+         ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+       func_append files " $dest"
+       dest=$arg
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+       if $install_cp; then :; else
+         prev=$arg
+       fi
+       ;;
+      -g | -m | -o)
+       prev=$arg
+       ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*)
+       ;;
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         if test "x$prev" = x-m && test -n "$install_override_mode"; then
+           arg2=$install_override_mode
+           no_mode=false
+         fi
+         prev=
+       else
+         dest=$arg
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+       func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+       func_quote_for_eval "$install_override_mode"
+       func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       func_fatal_help "no file or destination specified"
+      else
+       func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+       func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         func_fatal_help "\`$destdir' must be an absolute directory name"
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       func_append staticlibs " $file"
+       ;;
+
+      *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "\`$file' is not a valid libtool archive"
+
+       library_names=
+       old_library=
+       relink_command=
+       func_source "$file"
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) func_append current_libdirs " $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) func_append future_libdirs " $libdir" ;;
+         esac
+       fi
+
+       func_dirname "$file" "/" ""
+       dir="$func_dirname_result"
+       func_append dir "$objdir"
+
+       if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         test "$inst_prefix_dir" = "$destdir" && \
+           func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+         fi
+
+         func_warning "relinking \`$file'"
+         func_show_eval "$relink_command" \
+           'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names; shift
+       if test -n "$1"; then
+         realname="$1"
+         shift
+
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
+         # Install the shared library and build the symlinks.
+         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+             'exit $?'
+         tstripme="$stripme"
+         case $host_os in
+         cygwin* | mingw* | pw32* | cegcc*)
+           case $realname in
+           *.dll.a)
+             tstripme=""
+             ;;
+           esac
+           ;;
+         esac
+         if test -n "$tstripme" && test -n "$striplib"; then
+           func_show_eval "$striplib $destdir/$realname" 'exit $?'
+         fi
+
+         if test "$#" -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           # Try `ln -sf' first, because the `ln' binary might depend on
+           # the symlink we replace!  Solaris /bin/ln does not understand -f,
+           # so we also need to try rm && ln -s.
+           for linkname
+           do
+             test "$linkname" != "$realname" \
+               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib="$destdir/$realname"
+         func_execute_cmds "$postinstall_cmds" 'exit $?'
+       fi
+
+       # Install the pseudo-library for information purposes.
+       func_basename "$file"
+       name="$func_basename_result"
+       instname="$dir/$name"i
+       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         func_basename "$file"
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         func_lo2o "$destfile"
+         staticdest=$func_lo2o_result
+         ;;
+       *.$objext)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         func_fatal_help "cannot copy a libtool object to \`$destfile'"
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       test -n "$destfile" && \
+         func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+       # Install the old object if enabled.
+       if test "$build_old_libs" = yes; then
+         # Deduce the name of the old-style object file.
+         func_lo2o "$file"
+         staticobj=$func_lo2o_result
+         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+       fi
+       exit $EXIT_SUCCESS
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         func_basename "$file"
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
+       fi
+
+       # If the file is missing, and there is a .exe on the end, strip it
+       # because it is most likely a libtool script we actually want to
+       # install
+       stripped_ext=""
+       case $file in
+         *.exe)
+           if test ! -f "$file"; then
+             func_stripname '' '.exe' "$file"
+             file=$func_stripname_result
+             stripped_ext=".exe"
+           fi
+           ;;
+       esac
+
+       # Do a test to see if this is really a libtool program.
+       case $host in
+       *cygwin* | *mingw*)
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             wrapper=$func_ltwrapper_scriptname_result
+           else
+             func_stripname '' '.exe' "$file"
+             wrapper=$func_stripname_result
+           fi
+           ;;
+       *)
+           wrapper=$file
+           ;;
+       esac
+       if func_ltwrapper_script_p "$wrapper"; then
+         notinst_deplibs=
+         relink_command=
+
+         func_source "$wrapper"
+
+         # Check the variables that should have been set.
+         test -z "$generated_by_libtool_version" && \
+           func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+         finalize=yes
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             func_source "$lib"
+           fi
+           libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             func_warning "\`$lib' has not been installed in \`$libdir'"
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         func_source "$wrapper"
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           $opt_dry_run || {
+             if test "$finalize" = yes; then
+               tmpdir=`func_mktempdir`
+               func_basename "$file$stripped_ext"
+               file="$func_basename_result"
+               outputname="$tmpdir/$file"
+               # Replace the output file specification.
+               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+               $opt_silent || {
+                 func_quote_for_expand "$relink_command"
+                 eval "func_echo $func_quote_for_expand_result"
+               }
+               if eval "$relink_command"; then :
+                 else
+                 func_error "error: relink \`$file' with the above command before installing it"
+                 $opt_dry_run || ${RM}r "$tmpdir"
+                 continue
+               fi
+               file="$outputname"
+             else
+               func_warning "cannot relink \`$file'"
+             fi
+           }
+         else
+           # Install the binary that we compiled earlier.
+           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyway
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           func_stripname '' '.exe' "$destfile"
+           destfile=$func_stripname_result
+           ;;
+         esac
+         ;;
+       esac
+       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+       $opt_dry_run || if test -n "$outputname"; then
+         ${RM}r "$tmpdir"
+       fi
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+       my_dlsyms="${my_outputname}S.c"
+      else
+       func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+       # Discover the nlist of each of the dlfiles.
+       nlist="$output_objdir/${my_outputname}.nm"
+
+       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+       # Parse the name list into a source file.
+       func_verbose "creating $output_objdir/$my_dlsyms"
+
+       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+       if test "$dlself" = yes; then
+         func_verbose "generating symbol list for \`$output'"
+
+         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+         # Add our own program objects to the symbol list.
+         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+         for progfile in $progfiles; do
+           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+           func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -n "$exclude_expsyms"; then
+           $opt_dry_run || {
+             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         if test -n "$export_symbols_regex"; then
+           $opt_dry_run || {
+             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         # Prepare the list of exported symbols
+         if test -z "$export_symbols"; then
+           export_symbols="$output_objdir/$outputname.exp"
+           $opt_dry_run || {
+             $RM $export_symbols
+             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+             case $host in
+             *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+               ;;
+             esac
+           }
+         else
+           $opt_dry_run || {
+             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+             case $host in
+               *cygwin* | *mingw* | *cegcc* )
+                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                 ;;
+             esac
+           }
+         fi
+       fi
+
+       for dlprefile in $dlprefiles; do
+         func_verbose "extracting global C symbols from \`$dlprefile'"
+         func_basename "$dlprefile"
+         name="$func_basename_result"
+          case $host in
+           *cygwin* | *mingw* | *cegcc* )
+             # if an import library, we need to obtain dlname
+             if func_win32_import_lib_p "$dlprefile"; then
+               func_tr_sh "$dlprefile"
+               eval "curr_lafile=\$libfile_$func_tr_sh_result"
+               dlprefile_dlbasename=""
+               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+                 # Use subshell, to avoid clobbering current variable values
+                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+                 if test -n "$dlprefile_dlname" ; then
+                   func_basename "$dlprefile_dlname"
+                   dlprefile_dlbasename="$func_basename_result"
+                 else
+                   # no lafile. user explicitly requested -dlpreopen <import library>.
+                   $sharedlib_from_linklib_cmd "$dlprefile"
+                   dlprefile_dlbasename=$sharedlib_from_linklib_result
+                 fi
+               fi
+               $opt_dry_run || {
+                 if test -n "$dlprefile_dlbasename" ; then
+                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+                 else
+                   func_warning "Could not compute DLL name from $name"
+                   eval '$ECHO ": $name " >> "$nlist"'
+                 fi
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+               }
+             else # not an import lib
+               $opt_dry_run || {
+                 eval '$ECHO ": $name " >> "$nlist"'
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+               }
+             fi
+           ;;
+           *)
+             $opt_dry_run || {
+               eval '$ECHO ": $name " >> "$nlist"'
+               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+             }
+           ;;
+          esac
+       done
+
+       $opt_dry_run || {
+         # Make sure we have at least an empty file.
+         test -f "$nlist" || : > "$nlist"
+
+         if test -n "$exclude_expsyms"; then
+           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+           $MV "$nlist"T "$nlist"
+         fi
+
+         # Try sorting and uniquifying the output.
+         if $GREP -v "^: " < "$nlist" |
+             if sort -k 3 </dev/null >/dev/null 2>&1; then
+               sort -k 3
+             else
+               sort +2
+             fi |
+             uniq > "$nlist"S; then
+           :
+         else
+           $GREP -v "^: " < "$nlist" > "$nlist"S
+         fi
+
+         if test -f "$nlist"S; then
+           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+         else
+           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+         fi
+
+         echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+         case $need_lib_prefix in
+         no)
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         *)
+           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         esac
+         echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+       } # !$opt_dry_run
+
+       pic_flag_for_symtable=
+       case "$compile_command " in
+       *" -static "*) ;;
+       *)
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+         *-*-hpux*)
+           pic_flag_for_symtable=" $pic_flag"  ;;
+         *)
+           if test "X$my_pic_p" != Xno; then
+             pic_flag_for_symtable=" $pic_flag"
+           fi
+           ;;
+         esac
+         ;;
+       esac
+       symtab_cflags=
+       for arg in $LTCFLAGS; do
+         case $arg in
+         -pie | -fpie | -fPIE) ;;
+         *) func_append symtab_cflags " $arg" ;;
+         esac
+       done
+
+       # Now compile the dynamic symbol file.
+       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+       # Clean up the generated files.
+       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+       # Transform the symbol file into the correct name.
+       symfileobj="$output_objdir/${my_outputname}S.$objext"
+       case $host in
+       *cygwin* | *mingw* | *cegcc* )
+         if test -f "$output_objdir/$my_outputname.def"; then
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+         else
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         fi
+         ;;
+       *)
+         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         ;;
+       esac
+       ;;
+      *)
+       func_fatal_error "unknown suffix for \`$my_dlsyms'"
+       ;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+       $SED -n -e '
+           1,100{
+               / I /{
+                   s,.*,import,
+                   p
+                   q
+               }
+           }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[         ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+                  'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         func_arith $extracted_serial + 1
+         extracted_serial=$func_arith_result
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+       func_verbose "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       $opt_dry_run || {
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`basename "$darwin_archive"`
+         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+         if test -n "$darwin_arches"; then
+           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+             cd "$darwin_curdir"
+             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+           done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+             $LIPO -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           $RM -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           func_extract_an_archive "$my_xdir" "$my_xabs"
+         fi # $darwin_arches
+       } # !$opt_dry_run
+       ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+       ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+       func_emit_wrapper_arg1=${1-no}
+
+       $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test "$fast_install" = yes; then
+         $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+         $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       $ECHO \"\$relink_command_output\" >&2
+       $RM \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+       else
+         $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       $ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # fixup the dll searchpath if we need to.
+       #
+       # Fix the DLL searchpath if we need to.  Do this before prepending
+       # to shlibpath, because on Windows, both are PATH and uninstalled
+       # libraries must come first.
+       if test -n "$dllsearchpath"; then
+         $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       $ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+       cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+           cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+           cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+             cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+             cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test "$fast_install" = yes; then
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+           else
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+           fi
+
+
+           cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+       {
+EOF
+           case "$host" in
+             *mingw* | *cygwin* )
+               # make stdout use "unix" line endings
+               echo "          setmode(1,_O_BINARY);"
+               ;;
+             esac
+
+           cat <<"EOF"
+         lt_dump_script (stdout);
+         return 0;
+       }
+      if (strcmp (argv[i], debug_opt) == 0)
+       {
+          lt_debug = 1;
+          continue;
+       }
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+                   "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+           cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+           cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+                 tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+                 actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(main) libtool target name: %s\n",
+                 target_name);
+EOF
+
+           cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+           cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+           case $host_os in
+             mingw*)
+           cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+       *p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+       *p = '/';
+      }
+  }
+EOF
+           ;;
+           esac
+
+           cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+                 nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+                     i, nonnull (newargz[i]));
+    }
+
+EOF
+
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+                     "(main) failed to launch target \"%s\": %s\n",
+                     lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+               ;;
+             *)
+               cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+               ;;
+           esac
+
+           cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+                         string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+       return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+       {
+         concat_name = xstrdup (wrapper);
+         if (check_executable (concat_name))
+           return concat_name;
+         XFREE (concat_name);
+       }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+       has_slash = 1;
+       break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+       {
+         for (p = path; *p; p = p_next)
+           {
+             const char *q;
+             size_t p_len;
+             for (q = p; *q; q++)
+               if (IS_PATH_SEPARATOR (*q))
+                 break;
+             p_len = q - p;
+             p_next = (*q == '\0' ? q : q + 1);
+             if (p_len == 0)
+               {
+                 /* empty path: current directory */
+                 if (getcwd (tmp, LT_PATHMAX) == NULL)
+                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+                 tmp_len = strlen (tmp);
+                 concat_name =
+                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, tmp, tmp_len);
+                 concat_name[tmp_len] = '/';
+                 strcpy (concat_name + tmp_len + 1, wrapper);
+               }
+             else
+               {
+                 concat_name =
+                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, p, p_len);
+                 concat_name[p_len] = '/';
+                 strcpy (concat_name + p_len + 1, wrapper);
+               }
+             if (check_executable (concat_name))
+               return concat_name;
+             XFREE (concat_name);
+           }
+       }
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+                     "checking path component for symlinks: %s\n",
+                     tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+       {
+         if (S_ISLNK (s.st_mode) != 0)
+           {
+             has_symlinks = 1;
+             break;
+           }
+
+         /* search backwards for last DIR_SEPARATOR */
+         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           p--;
+         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           {
+             /* no more DIR_SEPARATORS left */
+             break;
+           }
+         *p = '\0';
+       }
+      else
+       {
+         lt_fatal (__FILE__, __LINE__,
+                   "error accessing file \"%s\": %s",
+                   tmp_pathspec, nonnull (strerror (errno)));
+       }
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+               "could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+       *str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+              int line, const char *mode,
+              const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+       new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+       {
+         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+         size_t length;
+         unsigned int backslashes;
+         const char *s;
+         char *quoted_string;
+         char *p;
+
+         length = 0;
+         backslashes = 0;
+         if (quote_around)
+           length++;
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               length += backslashes + 1;
+             length++;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           length += backslashes + 1;
+
+         quoted_string = XMALLOC (char, length + 1);
+
+         p = quoted_string;
+         backslashes = 0;
+         if (quote_around)
+           *p++ = '"';
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               {
+                 unsigned int j;
+                 for (j = backslashes + 1; j > 0; j--)
+                   *p++ = '\\';
+               }
+             *p++ = c;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           {
+             unsigned int j;
+             for (j = backslashes; j > 0; j--)
+               *p++ = '\\';
+             *p++ = '"';
+           }
+         *p = '\0';
+
+         new_argv[i] = quoted_string;
+       }
+      else
+       new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+               ;;
+           esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+           func_emit_wrapper yes |
+             $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       break
+       ;;
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           func_warning "complete static linking is impossible in this configuration"
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       -static)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=built
+         ;;
+       -static-libtool-libs)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       esac
+       build_libtool_libs=no
+       build_old_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         func_append compile_command " @OUTPUT@"
+         func_append finalize_command " @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       bindir)
+         bindir="$arg"
+         prev=
+         continue
+         ;;
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           func_append compile_command " @SYMFILE@"
+           func_append finalize_command " @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; then
+             func_append dlfiles " $arg"
+           else
+             func_append dlprefiles " $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         test -f "$arg" \
+           || func_fatal_error "symbol file \`$arg' does not exist"
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       framework)
+         case $host in
+           *-*-darwin*)
+             case "$deplibs " in
+               *" $qarg.ltframework "*) ;;
+               *) func_append deplibs " $qarg.ltframework" # this is fixed later
+                  ;;
+             esac
+             ;;
+         esac
+         prev=
+         continue
+         ;;
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat "$save_arg"`
+           do
+#            func_append moreargs " $fil"
+             arg=$fil
+             # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if func_lalib_unsafe_p "$arg"; then
+               pic_object=
+               non_pic_object=
+
+               # Read the .lo file
+               func_source "$arg"
+
+               if test -z "$pic_object" ||
+                  test -z "$non_pic_object" ||
+                  test "$pic_object" = none &&
+                  test "$non_pic_object" = none; then
+                 func_fatal_error "cannot find name of object for \`$arg'"
+               fi
+
+               # Extract subdirectory from the argument.
+               func_dirname "$arg" "/" ""
+               xdir="$func_dirname_result"
+
+               if test "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     func_append dlfiles " $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   func_append dlprefiles " $pic_object"
+                   prev=
+                 fi
+
+                 # A PIC object.
+                 func_append libobjs " $pic_object"
+                 arg="$pic_object"
+               fi
+
+               # Non-PIC object.
+               if test "$non_pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
+
+                 # A standard non-PIC object
+                 func_append non_pic_objects " $non_pic_object"
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
+                 fi
+               else
+                 # If the PIC object exists, use it instead.
+                 # $xdir was prepended to $pic_object above.
+                 non_pic_object="$pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if $opt_dry_run; then
+                 # Extract subdirectory from the argument.
+                 func_dirname "$arg" "/" ""
+                 xdir="$func_dirname_result"
+
+                 func_lo2o "$arg"
+                 pic_object=$xdir$objdir/$func_lo2o_result
+                 non_pic_object=$xdir$func_lo2o_result
+                 func_append libobjs " $pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               else
+                 func_fatal_error "\`$arg' is not a valid libtool object"
+               fi
+             fi
+           done
+         else
+           func_fatal_error "link input file \`$arg' does not exist"
+         fi
+         arg=$save_arg
+         prev=
+         continue
+         ;;
+       precious_regex)
+         precious_files_regex="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           func_fatal_error "only absolute run-paths are allowed"
+           ;;
+         esac
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) func_append rpath " $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) func_append xrpath " $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       shrext)
+         shrext_cmds="$arg"
+         prev=
+         continue
+         ;;
+       weak)
+         func_append weak_libs " $arg"
+         prev=
+         continue
+         ;;
+       xcclinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xcompiler)
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xlinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $wl$qarg"
+         prev=
+         func_append compile_command " $wl$qarg"
+         func_append finalize_command " $wl$qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         # See comment for -static flag below, for more details.
+         func_append compile_command " $link_static_flag"
+         func_append finalize_command " $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -bindir)
+       prev=bindir
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         func_fatal_error "more than one -exported-symbols argument is not allowed"
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      -framework)
+       prev=framework
+       continue
+       ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         func_append compile_command " $arg"
+         func_append finalize_command " $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       func_stripname "-L" '' "$arg"
+       if test -z "$func_stripname_result"; then
+         if test "$#" -gt 0; then
+           func_fatal_error "require no space between \`-L' and \`$1'"
+         else
+           func_fatal_error "need path for \`-L' option"
+         fi
+       fi
+       func_resolve_sysroot "$func_stripname_result"
+       dir=$func_resolve_sysroot_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         test -z "$absdir" && \
+           func_fatal_error "cannot determine absolute directory name of \`$dir'"
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "* | *" $arg "*)
+         # Will only happen for absolute or sysroot arguments
+         ;;
+       *)
+         # Preserve sysroot, but never include relative directories
+         case $dir in
+           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+           *) func_append deplibs " -L$dir" ;;
+         esac
+         func_append lib_search_path " $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         ::) dllsearchpath=$dir;;
+         *) func_append dllsearchpath ":$dir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           func_append deplibs " System.ltframework"
+           continue
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           test "X$arg" = "X-lc" && continue
+           ;;
+         esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       func_append deplibs " $arg"
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       prev=xcompiler
+       continue
+       ;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       case "$new_inherited_linker_flags " in
+           *" $arg "*) ;;
+           * ) func_append new_inherited_linker_flags " $arg" ;;
+       esac
+       continue
+       ;;
+
+      -multi_module)
+       single_module="${wl}-multi_module"
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # and Darwin in order for the loader to find any dlls it needs.
+         func_warning "\`-no-install' is ignored for $host"
+         func_warning "assuming \`-no-fast-install' instead"
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       func_stripname '-R' '' "$arg"
+       dir=$func_stripname_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       =*)
+         func_stripname '=' '' "$dir"
+         dir=$lt_sysroot$func_stripname_result
+         ;;
+       *)
+         func_fatal_error "only absolute run-paths are allowed"
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) func_append xrpath " $dir" ;;
+       esac
+       continue
+       ;;
+
+      -shared)
+       # The effects of -shared are defined in a previous loop.
+       continue
+       ;;
+
+      -shrext)
+       prev=shrext
+       continue
+       ;;
+
+      -static | -static-libtool-libs)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
+
+      -weak)
+        prev=weak
+       continue
+       ;;
+
+      -Wc,*)
+       func_stripname '-Wc,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         func_append arg " $func_quote_for_eval_result"
+         func_append compiler_flags " $func_quote_for_eval_result"
+       done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Wl,*)
+       func_stripname '-Wl,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         func_append arg " $wl$func_quote_for_eval_result"
+         func_append compiler_flags " $wl$func_quote_for_eval_result"
+         func_append linker_flags " $func_quote_for_eval_result"
+       done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # -msg_* for osf cc
+      -msg_*)
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      *.$objext)
+       # A standard object.
+       func_append objs " $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if func_lalib_unsafe_p "$arg"; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         func_source "$arg"
+
+         if test -z "$pic_object" ||
+            test -z "$non_pic_object" ||
+            test "$pic_object" = none &&
+            test "$non_pic_object" = none; then
+           func_fatal_error "cannot find name of object for \`$arg'"
+         fi
+
+         # Extract subdirectory from the argument.
+         func_dirname "$arg" "/" ""
+         xdir="$func_dirname_result"
+
+         if test "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               func_append dlfiles " $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             func_append dlprefiles " $pic_object"
+             prev=
+           fi
+
+           # A PIC object.
+           func_append libobjs " $pic_object"
+           arg="$pic_object"
+         fi
+
+         # Non-PIC object.
+         if test "$non_pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
+
+           # A standard non-PIC object
+           func_append non_pic_objects " $non_pic_object"
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
+           fi
+         else
+           # If the PIC object exists, use it instead.
+           # $xdir was prepended to $pic_object above.
+           non_pic_object="$pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if $opt_dry_run; then
+           # Extract subdirectory from the argument.
+           func_dirname "$arg" "/" ""
+           xdir="$func_dirname_result"
+
+           func_lo2o "$arg"
+           pic_object=$xdir$objdir/$func_lo2o_result
+           non_pic_object=$xdir$func_lo2o_result
+           func_append libobjs " $pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         else
+           func_fatal_error "\`$arg' is not a valid libtool object"
+         fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       func_append deplibs " $arg"
+       func_append old_deplibs " $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       func_resolve_sysroot "$arg"
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         func_append dlfiles " $func_resolve_sysroot_result"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         func_append dlprefiles " $func_resolve_sysroot_result"
+         prev=
+       else
+         func_append deplibs " $func_resolve_sysroot_result"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps ; then
+       case "$libs " in
+       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+       esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+         esac
+         func_append pre_post_deps " $pre_post_dep"
+       done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+       passes="conv dlpreopen link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+       ## FIXME: Find the place where the list is rebuilt in the wrong
+       ##        order, and fix it there properly
+        tmp_deplibs=
+       for deplib in $deplibs; do
+         tmp_deplibs="$deplib $tmp_deplibs"
+       done
+       deplibs="$tmp_deplibs"
+      fi
+
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
+      fi
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link)
+         libs="$deplibs %DEPLIBS%"
+         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+         ;;
+       esac
+      fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+       # Collect and forward deplibs of preopened libtool libs
+       for lib in $dlprefiles; do
+         # Ignore non-libtool-libs
+         dependency_libs=
+         func_resolve_sysroot "$lib"
+         case $lib in
+         *.la) func_source "$func_resolve_sysroot_result" ;;
+         esac
+
+         # Collect preopened libtool deplibs, except any this library
+         # has declared as weak libs
+         for deplib in $dependency_libs; do
+           func_basename "$deplib"
+            deplib_base=$func_basename_result
+           case " $weak_libs " in
+           *" $deplib_base "*) ;;
+           *) func_append deplibs " $deplib" ;;
+           esac
+         done
+       done
+       libs="$dlprefiles"
+      fi
+      if test "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
+      fi
+
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           func_append compiler_flags " $deplib"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           func_warning "\`-l' is ignored for archives/objects"
+           continue
+         fi
+         func_stripname '-l' '' "$deplib"
+         name=$func_stripname_result
+         if test "$linkmode" = lib; then
+           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+         else
+           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+         fi
+         for searchdir in $searchdirs; do
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib="$searchdir/lib${name}${search_ext}"
+             if test -f "$lib"; then
+               if test "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if func_lalib_p "$lib"; then
+                 library_names=
+                 old_library=
+                 func_source "$lib"
+                 for l in $old_library $library_names; do
+                   ll="$l"
+                 done
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
+                   func_dirname "$lib" "" "."
+                   ladir="$func_dirname_result"
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       *.ltframework)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         *)
+           func_warning "\`-L' is ignored for archives/objects"
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           func_stripname '-R' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           dir=$func_resolve_sysroot_result
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) func_append xrpath " $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la)
+         func_resolve_sysroot "$deplib"
+         lib=$func_resolve_sysroot_result
+         ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           # Linking convenience modules into shared libraries is allowed,
+           # but linking other static libraries is non-portable.
+           case " $dlpreconveniencelibs " in
+           *" $deplib "*) ;;
+           *)
+             valid_a_lib=no
+             case $deplibs_check_method in
+               match_pattern*)
+                 set dummy $deplibs_check_method; shift
+                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                   valid_a_lib=yes
+                 fi
+               ;;
+               pass_all)
+                 valid_a_lib=yes
+               ;;
+             esac
+             if test "$valid_a_lib" != yes; then
+               echo
+               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because the file extensions .$libext of this argument makes me believe"
+               echo "*** that it is just a static archive that I should not use here."
+             else
+               echo
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
+             fi
+             ;;
+           esac
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             func_append newdlprefiles " $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             func_append newdlfiles " $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+       fi
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$lib" \
+         || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+       func_dirname "$lib" "" "."
+       ladir="$func_dirname_result"
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       inherited_linker_flags=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+       avoidtemprpath=
+
+
+       # Read the .la file
+       func_source "$lib"
+
+       # Convert "-framework foo" to "foo.ltframework"
+       if test -n "$inherited_linker_flags"; then
+         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+           case " $new_inherited_linker_flags " in
+             *" $tmp_inherited_linker_flag "*) ;;
+             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+           esac
+         done
+       fi
+       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && func_append dlfiles " $dlopen"
+         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             func_fatal_error "cannot find name of link library for \`$lib'"
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           func_append convenience " $ladir/$objdir/$old_library"
+           func_append old_convenience " $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+             if $opt_preserve_dup_deps ; then
+               case "$tmp_libs " in
+               *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+               esac
+             fi
+             func_append tmp_libs " $deplib"
+           done
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           func_fatal_error "\`$lib' is not a convenience library"
+         fi
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       if test -n "$old_library" &&
+          { test "$prefer_static_libs" = yes ||
+            test "$prefer_static_libs,$installed" = "built,no"; }; then
+         linklib=$old_library
+       else
+         for l in $old_library $library_names; do
+           linklib="$l"
+         done
+       fi
+       if test -z "$linklib"; then
+         func_fatal_error "cannot find name of link library for \`$lib'"
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+         fi
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           func_append dlprefiles " $lib $dependency_libs"
+         else
+           func_append newdlfiles " $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           func_warning "cannot determine absolute directory name of \`$ladir'"
+           func_warning "passing it literally to the linker, although it might fail"
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       func_basename "$lib"
+       laname="$func_basename_result"
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           func_warning "library \`$lib' was moved."
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$lt_sysroot$libdir"
+           absdir="$lt_sysroot$libdir"
+         fi
+         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+       else
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir="$ladir"
+           absdir="$abs_ladir"
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         else
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         fi
+       fi # $installed = yes
+       func_stripname 'lib' '.la' "$laname"
+       name=$func_stripname_result
+
+       # This library was specified with -dlpreopen.
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir" && test "$linkmode" = prog; then
+           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+         fi
+         case "$host" in
+           # special handling for platforms with PE-DLLs.
+           *cygwin* | *mingw* | *cegcc* )
+             # Linker will automatically link against shared library if both
+             # static and shared are present.  Therefore, ensure we extract
+             # symbols from the import library if a shared library is present
+             # (otherwise, the dlopen module name will be incorrect).  We do
+             # this by putting the import library name into $newdlprefiles.
+             # We recover the dlopen module name by 'saving' the la file
+             # name in a special purpose variable, and (later) extracting the
+             # dlname from the la file.
+             if test -n "$dlname"; then
+               func_tr_sh "$dir/$linklib"
+               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+               func_append newdlprefiles " $dir/$linklib"
+             else
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             fi
+           ;;
+           * )
+             # Prefer using a static library (so that no silly _DYNAMIC symbols
+             # are required to link).
+             if test -n "$old_library"; then
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             # Otherwise, use the dlname, so that lt_dlopen finds it.
+             elif test -n "$dlname"; then
+               func_append newdlprefiles " $dir/$dlname"
+             else
+               func_append newdlprefiles " $dir/$linklib"
+             fi
+           ;;
+         esac
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+
+       if test "$linkmode" = prog && test "$pass" != link; then
+         func_append newlib_search_path " $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) func_stripname '-L' '' "$deplib"
+                func_resolve_sysroot "$func_stripname_result"
+                func_append newlib_search_path " $func_resolve_sysroot_result"
+                ;;
+           esac
+           # Need to link against all dependency_libs?
+           if test "$linkalldeplibs" = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if $opt_preserve_dup_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+             esac
+           fi
+           func_append tmp_libs " $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
+              test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+             # Make sure the rpath contains only unique directories.
+             case "$temp_rpath:" in
+             *"$absdir:"*) ;;
+             *) func_append temp_rpath "$absdir:" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       use_static_libs=$prefer_static_libs
+       if test "$use_static_libs" = built && test "$installed" = yes; then
+         use_static_libs=no
+       fi
+       if test -n "$library_names" &&
+          { test "$use_static_libs" = no || test -z "$old_library"; }; then
+         case $host in
+         *cygwin* | *mingw* | *cegcc*)
+             # No point in relinking DLLs because paths are not encoded
+             func_append notinst_deplibs " $lib"
+             need_relink=no
+           ;;
+         *)
+           if test "$installed" = no; then
+             func_append notinst_deplibs " $lib"
+             need_relink=yes
+           fi
+           ;;
+         esac
+         # This is a shared library
+
+         # Warn about portability, can't link against -module's on some
+         # systems (darwin).  Don't bleat about dlopened modules though!
+         dlopenmodule=""
+         for dlpremoduletest in $dlprefiles; do
+           if test "X$dlpremoduletest" = "X$lib"; then
+             dlopenmodule="$dlpremoduletest"
+             break
+           fi
+         done
+         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+           echo
+           if test "$linkmode" = prog; then
+             $ECHO "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $ECHO "*** $linklib is not portable!"
+         fi
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           shift
+           realname="$1"
+           shift
+           libname=`eval "\\$ECHO \"$libname_spec\""`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw* | *cegcc*)
+               func_arith $current - $age
+               major=$func_arith_result
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           func_basename "$soroot"
+           soname="$func_basename_result"
+           func_stripname 'lib' '.dll' "$soname"
+           newlib=libimp-$func_stripname_result.a
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             func_verbose "extracting exported symbol list from \`$soname'"
+             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             func_verbose "generating import library for \`$soname'"
+             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test "$linkmode" = prog || test "$opt_mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+               case $host in
+                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+                   *-*-unixware7*) add_dir="-L$dir" ;;
+                 *-*-darwin* )
+                   # if the lib is a (non-dlopened) module then we can not
+                   # link against it, someone is ignoring the earlier warnings
+                   if /usr/bin/file -L $add 2> /dev/null |
+                        $GREP ": [^:]* bundle" >/dev/null ; then
+                     if test "X$dlopenmodule" != "X$lib"; then
+                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+                       if test -z "$old_library" ; then
+                         echo
+                         echo "*** And there doesn't seem to be a static archive available"
+                         echo "*** The link will probably fail, sorry"
+                       else
+                         add="$dir/$old_library"
+                       fi
+                     elif test -n "$old_library"; then
+                       add="$dir/$old_library"
+                     fi
+                   fi
+               esac
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes &&
+                test "$hardcode_direct_absolute" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$absdir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case $libdir in
+                   [\\/]*)
+                     func_append add_dir " -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             func_fatal_configuration "unsupported hardcode properties"
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) func_append compile_shlibpath "$add_shlibpath:" ;;
+             esac
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes &&
+                test "$hardcode_minus_L" != yes &&
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) func_append finalize_shlibpath "$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$opt_mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes &&
+              test "$hardcode_direct_absolute" = no; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) func_append finalize_shlibpath "$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
+             else
+               add="$libdir/$linklib"
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case $libdir in
+                 [\\/]*)
+                   func_append add_dir " -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
+             add="-l$name"
+           fi
+
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test "$linkmode" = prog; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           echo
+           $ECHO "*** Warning: This system can not link to static lib archive $lib."
+           echo "*** I have the capability to make that library automatically link in when"
+           echo "*** you link to this library.  But I can only do this if you have a"
+           echo "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             echo "*** But as you try to build a module library, libtool will still create "
+             echo "*** a static module, that should work as long as the dlopening application"
+             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               echo
+               echo "*** However, this would only work if libtool was able to extract symbol"
+               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               echo "*** not find such a program.  So, this module is probably useless."
+               echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) func_stripname '-R' '' "$libdir"
+                  temp_xrpath=$func_stripname_result
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) func_append xrpath " $temp_xrpath";;
+                  esac;;
+             *) func_append temp_deplibs " $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         func_append newlib_search_path " $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+           if $opt_preserve_dup_deps ; then
+             case "$tmp_libs " in
+             *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+             esac
+           fi
+           func_append tmp_libs " $func_resolve_sysroot_result"
+         done
+
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             path=
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               func_resolve_sysroot "$deplib"
+               deplib=$func_resolve_sysroot_result
+               func_dirname "$deplib" "" "."
+               dir=$func_dirname_result
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   func_warning "cannot determine absolute directory name of \`$dir'"
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if $GREP "^installed=no" $deplib > /dev/null; then
+               case $host in
+               *-*-darwin*)
+                 depdepl=
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$absdir/$objdir/$depdepl" ; then
+                     depdepl="$absdir/$objdir/$depdepl"
+                     darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+                     func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+                     func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+                     path=
+                   fi
+                 fi
+                 ;;
+               *)
+                 path="-L$absdir/$objdir"
+                 ;;
+               esac
+               else
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 test -z "$libdir" && \
+                   func_fatal_error "\`$deplib' is not a valid libtool archive"
+                 test "$absdir" != "$libdir" && \
+                   func_warning "\`$deplib' seems to be moved"
+
+                 path="-L$absdir"
+               fi
+               ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+       if test "$linkmode" = "prog"; then
+         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+       else
+         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) func_append lib_search_path " $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) func_append tmp_libs " $deplib" ;;
+             esac
+             ;;
+           *) func_append tmp_libs " $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=""
+         ;;
+       esac
+       if test -n "$i" ; then
+         func_append tmp_libs " $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+       func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+       func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       func_stripname 'lib' '.la' "$outputname"
+       name=$func_stripname_result
+       eval shared_ext=\"$shrext_cmds\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       test "$module" = no && \
+         func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         func_stripname '' '.la' "$outputname"
+         name=$func_stripname_result
+         eval shared_ext=\"$shrext_cmds\"
+         eval libname=\"$libname_spec\"
+       else
+         func_stripname '' '.la' "$outputname"
+         libname=$func_stripname_result
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+       else
+         echo
+         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+         $ECHO "*** objects $objs is not portable!"
+         func_append libobjs " $objs"
+       fi
+      fi
+
+      test "$dlself" != no && \
+       func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+       func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       test -n "$vinfo" && \
+         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+       test -n "$release" && \
+         func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+       # Parse the version information argument.
+       save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       shift
+       IFS="$save_ifs"
+
+       test -n "$7" && \
+         func_fatal_help "too many parameters to \`-version-info'"
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+
+       case $vinfo_number in
+       yes)
+         number_major="$1"
+         number_minor="$2"
+         number_revision="$3"
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         # correct linux to gnu/linux during the next big refactor
+         darwin|linux|osf|windows|none)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|qnx|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
+           ;;
+         irix|nonstopux)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_minor"
+           lt_irix_increment=no
+           ;;
+         *)
+           func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+           ;;
+         esac
+         ;;
+       no)
+         current="$1"
+         revision="$2"
+         age="$3"
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "CURRENT \`$current' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $revision in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "REVISION \`$revision' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $age in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "AGE \`$age' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         func_error "AGE \`$age' is greater than the current interface number \`$current'"
+         func_fatal_error "\`$vinfo' is not valid version information"
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         func_arith $current + 1
+         minor_current=$func_arith_result
+         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       irix | nonstopux)
+         if test "X$lt_irix_increment" = "Xno"; then
+           func_arith $current - $age
+         else
+           func_arith $current - $age + 1
+         fi
+         major=$func_arith_result
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring="$verstring_prefix$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test "$loop" -ne 0; do
+           func_arith $revision - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring_prefix$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux) # correct to gnu/linux during the next big refactor
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test "$loop" -ne 0; do
+           func_arith $current - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         func_append verstring ":${current}.0"
+         ;;
+
+       qnx)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         func_arith $current - $age
+         major=$func_arith_result
+         versuffix="-$major"
+         ;;
+
+       *)
+         func_fatal_configuration "unknown library version type \`$version_type'"
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           func_warning "undefined symbols not allowed in $host shared libraries"
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$ECHO "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext | *.gcno)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
+                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
+              func_append removelist " $p"
+              ;;
+           *) ;;
+         esac
+       done
+       test -n "$removelist" && \
+         func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       func_append oldlibs " $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         func_replace_sysroot "$libdir"
+         func_append temp_xrpath " -R$func_replace_sysroot_result"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) func_append dlfiles " $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) func_append dlprefiles " $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           func_append deplibs " System.ltframework"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             func_append deplibs " -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $opt_dry_run || $RM conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $opt_dry_run || $RM conftest
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   func_append newdeplibs " $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval "\\$ECHO \"$libname_spec\""`
+                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                 set dummy $deplib_matches; shift
+                 deplib_match=$1
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   func_append newdeplibs " $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                   echo "*** I have the capability to make that library automatically link in when"
+                   echo "*** you link to this library.  But I can only do this if you have a"
+                   echo "*** shared version of the library, which I believe you do not have"
+                   echo "*** because a test_compile did reveal that the linker did not use it for"
+                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               $opt_dry_run || $RM conftest
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     func_append newdeplibs " $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval "\\$ECHO \"$libname_spec\""`
+                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                   set dummy $deplib_matches; shift
+                   deplib_match=$1
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     func_append newdeplibs " $i"
+                   else
+                     droppeddeps=yes
+                     echo
+                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                     echo "*** I have the capability to make that library automatically link in when"
+                     echo "*** you link to this library.  But I can only do this if you have a"
+                     echo "*** shared version of the library, which you do not appear to have"
+                     echo "*** because a test_compile did reveal that the linker did not use this one"
+                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "*** make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method; shift
+         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               if test -n "$file_magic_glob"; then
+                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+               else
+                 libnameglob=$libname
+               fi
+               test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 if test "$want_nocaseglob" = yes; then
+                   shopt -s nocaseglob
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                   $nocaseglob
+                 else
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                 fi
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null |
+                        $GREP " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+                        $SED -e 10q |
+                        $EGREP "$file_magic_regex" > /dev/null; then
+                       func_append newdeplibs " $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method; shift
+         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
+                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+                      $EGREP "$match_pattern_regex" > /dev/null; then
+                     func_append newdeplibs " $a_deplib"
+                     a_deplib=""
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+           done
+         fi
+         case $tmp_deplibs in
+         *[!\  \ ]*)
+           echo
+           if test "X$deplibs_check_method" = "Xnone"; then
+             echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+           ;;
+         esac
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library with the System framework
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+         ;;
+       esac
+
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           echo
+           echo "*** Warning: libtool could not satisfy all declared inter-library"
+           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+           echo "*** a static module, that should work as long as the dlopening"
+           echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             echo
+             echo "*** However, this would only work if libtool was able to extract symbol"
+             echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             echo "*** not find such a program.  So, this module is probably useless."
+             echo "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           echo "*** The inter-library dependencies that have been dropped here will be"
+           echo "*** automatically added whenever a program is linked with this library"
+           echo "*** or is declared to -dlopen it."
+
+           if test "$allow_undefined" = no; then
+             echo
+             echo "*** Since this library must not contain undefined symbols,"
+             echo "*** because either the platform does not support them or"
+             echo "*** it was explicitly requested with -no-undefined,"
+             echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+       *-*-darwin*)
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $deplibs " in
+         *" -L$path/$objdir "*)
+           func_append new_libs " -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) func_append new_libs " $deplib" ;;
+         esac
+         ;;
+       *) func_append new_libs " $deplib" ;;
+       esac
+      done
+      deplibs="$new_libs"
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       # Remove ${wl} instances when linking with ld.
+       # FIXME: should test the right _cmds variable.
+       case $archive_cmds in
+         *\$LD\ *) wl= ;;
+        esac
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               func_replace_sysroot "$libdir"
+               libdir=$func_replace_sysroot_result
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               func_append dep_rpath " $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) func_append perm_rpath " $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             func_append rpath "$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext_cmds\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       shift
+       realname="$1"
+       shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib="$output_objdir/$realname"
+       linknames=
+       for link
+       do
+         func_append linknames " $link"
+       done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       test "X$libobjs" = "X " && libobjs=
+
+       delfiles=
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+         export_symbols="$output_objdir/$libname.uexp"
+         func_append delfiles " $export_symbols"
+       fi
+
+       orig_export_symbols=
+       case $host_os in
+       cygwin* | mingw* | cegcc*)
+         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+           # exporting using user supplied symfile
+           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+             # and it's NOT already a .def file. Must figure out
+             # which of the given symbols are data symbols and tag
+             # them as such. So, trigger use of export_symbols_cmds.
+             # export_symbols gets reassigned inside the "prepare
+             # the list of exported symbols" if statement, so the
+             # include_expsyms logic still works.
+             orig_export_symbols="$export_symbols"
+             export_symbols=
+             always_export_symbols=yes
+           fi
+         fi
+         ;;
+       esac
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           func_verbose "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $opt_dry_run || $RM $export_symbols
+           cmds=$export_symbols_cmds
+           save_ifs="$IFS"; IFS='~'
+           for cmd1 in $cmds; do
+             IFS="$save_ifs"
+             # Take the normal branch if the nm_file_list_spec branch
+             # doesn't work or if tool conversion is not needed.
+             case $nm_file_list_spec~$to_tool_file_cmd in
+               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+                 try_normal_branch=yes
+                 eval cmd=\"$cmd1\"
+                 func_len " $cmd"
+                 len=$func_len_result
+                 ;;
+               *)
+                 try_normal_branch=no
+                 ;;
+             esac
+             if test "$try_normal_branch" = yes \
+                && { test "$len" -lt "$max_cmd_len" \
+                     || test "$max_cmd_len" -le -1; }
+             then
+               func_show_eval "$cmd" 'exit $?'
+               skipped_export=false
+             elif test -n "$nm_file_list_spec"; then
+               func_basename "$output"
+               output_la=$func_basename_result
+               save_libobjs=$libobjs
+               save_output=$output
+               output=${output_objdir}/${output_la}.nm
+               func_to_tool_file "$output"
+               libobjs=$nm_file_list_spec$func_to_tool_file_result
+               func_append delfiles " $output"
+               func_verbose "creating $NM input file list: $output"
+               for obj in $save_libobjs; do
+                 func_to_tool_file "$obj"
+                 $ECHO "$func_to_tool_file_result"
+               done > "$output"
+               eval cmd=\"$cmd1\"
+               func_show_eval "$cmd" 'exit $?'
+               output=$save_output
+               libobjs=$save_libobjs
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               func_verbose "using reloadable object file for export list..."
+               skipped_export=:
+               # Break out early, otherwise skipped_export may be
+               # set to false by a later but shorter cmd.
+               break
+             fi
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         tmp_export_symbols="$export_symbols"
+         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+       fi
+
+       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+         # The given exports_symbols file has to be filtered, so filter it.
+         func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+         # FIXME: $output_objdir/$libname.filter potentially contains lots of
+         # 's' commands which not all seds can handle. GNU sed should be fine
+         # though. Also, the filter scales superlinearly with the number of
+         # global variables. join(1) would be nice here, but unfortunately
+         # isn't a blessed tool.
+         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+         export_symbols=$output_objdir/$libname.def
+         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+       fi
+
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+         case " $convenience " in
+         *" $test_deplib "*) ;;
+         *)
+           func_append tmp_deplibs " $test_deplib"
+           ;;
+         esac
+       done
+       deplibs="$tmp_deplibs"
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec" &&
+           test "$compiler_needs_object" = yes &&
+           test -z "$libobjs"; then
+           # extract the archives, so we have objects to list.
+           # TODO: could optimize this to just extract one archive.
+           whole_archive_flag_spec=
+         fi
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         else
+           gentop="$output_objdir/${outputname}x"
+           func_append generated " $gentop"
+
+           func_extract_archives $gentop $convenience
+           func_append libobjs " $func_extract_archives_result"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         func_append linker_flags " $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test "$opt_mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test "$module" = yes && test -n "$module_cmds" ; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
+         else
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
+         fi
+       else
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           eval test_cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
+         else
+           eval test_cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
+         fi
+       fi
+
+       if test "X$skipped_export" != "X:" &&
+          func_len " $test_cmds" &&
+          len=$func_len_result &&
+          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise
+         # or, if using GNU ld and skipped_export is not :, use a linker
+         # script.
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+         func_basename "$output"
+         output_la=$func_basename_result
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         last_robj=
+         k=1
+
+         if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+           output=${output_objdir}/${output_la}.lnkscript
+           func_verbose "creating GNU ld script: $output"
+           echo 'INPUT (' > $output
+           for obj in $save_libobjs
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           echo ')' >> $output
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$func_to_tool_file_result
+         elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+           output=${output_objdir}/${output_la}.lnk
+           func_verbose "creating linker input file list: $output"
+           : > $output
+           set x $save_libobjs
+           shift
+           firstobj=
+           if test "$compiler_needs_object" = yes; then
+             firstobj="$1 "
+             shift
+           fi
+           for obj
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+         else
+           if test -n "$save_libobjs"; then
+             func_verbose "creating reloadable object files..."
+             output=$output_objdir/$output_la-${k}.$objext
+             eval test_cmds=\"$reload_cmds\"
+             func_len " $test_cmds"
+             len0=$func_len_result
+             len=$len0
+
+             # Loop over the list of objects to be linked.
+             for obj in $save_libobjs
+             do
+               func_len " $obj"
+               func_arith $len + $func_len_result
+               len=$func_arith_result
+               if test "X$objlist" = X ||
+                  test "$len" -lt "$max_cmd_len"; then
+                 func_append objlist " $obj"
+               else
+                 # The command $test_cmds is almost too long, add a
+                 # command to the queue.
+                 if test "$k" -eq 1 ; then
+                   # The first file doesn't have a previous command to add.
+                   reload_objs=$objlist
+                   eval concat_cmds=\"$reload_cmds\"
+                 else
+                   # All subsequent reloadable object files will link in
+                   # the last one created.
+                   reload_objs="$objlist $last_robj"
+                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+                 fi
+                 last_robj=$output_objdir/$output_la-${k}.$objext
+                 func_arith $k + 1
+                 k=$func_arith_result
+                 output=$output_objdir/$output_la-${k}.$objext
+                 objlist=" $obj"
+                 func_len " $last_robj"
+                 func_arith $len0 + $func_len_result
+                 len=$func_arith_result
+               fi
+             done
+             # Handle the remaining objects by creating one last
+             # reloadable object file.  All subsequent reloadable object
+             # files will link in the last one created.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             reload_objs="$objlist $last_robj"
+             eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+             fi
+             func_append delfiles " $output"
+
+           else
+             output=
+           fi
+
+           if ${skipped_export-false}; then
+             func_verbose "generating symbol list for \`$libname.la'"
+             export_symbols="$output_objdir/$libname.exp"
+             $opt_dry_run || $RM $export_symbols
+             libobjs=$output
+             # Append the command to create the export file.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+             fi
+           fi
+
+           test -n "$save_libobjs" &&
+             func_verbose "creating a temporary reloadable object file: $output"
+
+           # Loop through the commands generated above and execute them.
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $concat_cmds; do
+             IFS="$save_ifs"
+             $opt_silent || {
+                 func_quote_for_expand "$cmd"
+                 eval "func_echo $func_quote_for_expand_result"
+             }
+             $opt_dry_run || eval "$cmd" || {
+               lt_exit=$?
+
+               # Restore the uninstalled library and exit
+               if test "$opt_mode" = relink; then
+                 ( cd "$output_objdir" && \
+                   $RM "${realname}T" && \
+                   $MV "${realname}U" "$realname" )
+               fi
+
+               exit $lt_exit
+             }
+           done
+           IFS="$save_ifs"
+
+           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+
+          if ${skipped_export-false}; then
+           if test -n "$export_symbols" && test -n "$include_expsyms"; then
+             tmp_export_symbols="$export_symbols"
+             test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+           fi
+
+           if test -n "$orig_export_symbols"; then
+             # The given exports_symbols file has to be filtered, so filter it.
+             func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+             # FIXME: $output_objdir/$libname.filter potentially contains lots of
+             # 's' commands which not all seds can handle. GNU sed should be fine
+             # though. Also, the filter scales superlinearly with the number of
+             # global variables. join(1) would be nice here, but unfortunately
+             # isn't a blessed tool.
+             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+             export_symbols=$output_objdir/$libname.def
+             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+           fi
+         fi
+
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+         if test "$module" = yes && test -n "$module_cmds" ; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
+           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+             cmds=$archive_expsym_cmds
+           else
+             cmds=$archive_cmds
+           fi
+         fi
+       fi
+
+       if test -n "$delfiles"; then
+         # Append the command to remove temporary files to $cmds.
+         eval cmds=\"\$cmds~\$RM $delfiles\"
+       fi
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop="$output_objdir/${outputname}x"
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         func_append libobjs " $func_extract_archives_result"
+         test "X$libobjs" = "X " && libobjs=
+       fi
+
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         eval cmd=\"$cmd\"
+         $opt_silent || {
+           func_quote_for_expand "$cmd"
+           eval "func_echo $func_quote_for_expand_result"
+         }
+         $opt_dry_run || eval "$cmd" || {
+           lt_exit=$?
+
+           # Restore the uninstalled library and exit
+           if test "$opt_mode" = relink; then
+             ( cd "$output_objdir" && \
+               $RM "${realname}T" && \
+               $MV "${realname}U" "$realname" )
+           fi
+
+           exit $lt_exit
+         }
+       done
+       IFS="$save_ifs"
+
+       # Restore the uninstalled library and exit
+       if test "$opt_mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+         if test -n "$convenience"; then
+           if test -z "$whole_archive_flag_spec"; then
+             func_show_eval '${RM}r "$gentop"'
+           fi
+         fi
+
+         exit $EXIT_SUCCESS
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for objects"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+       test -n "$objs$old_deplibs" && \
+         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+       libobj=$output
+       func_lo2o "$libobj"
+       obj=$func_lo2o_result
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+       else
+         gentop="$output_objdir/${obj}x"
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
+       fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+       exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+       func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) func_stripname '' '.exe' "$output"
+                 output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for programs"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for programs"
+
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+       && test "$dlopen_self" = unknown \
+       && test "$dlopen_self_static" = unknown && \
+         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       ;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+       # Don't allow lazy linking, it breaks C++ global constructors
+       # But is supposedly fixed on 10.4 or later (yay!).
+       if test "$tagname" = CXX ; then
+         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+           10.[0123])
+             func_append compile_command " ${wl}-bind_at_load"
+             func_append finalize_command " ${wl}-bind_at_load"
+           ;;
+         esac
+       fi
+       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       ;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $compile_deplibs " in
+         *" -L$path/$objdir "*)
+           func_append new_libs " -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $compile_deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) func_append new_libs " $deplib" ;;
+         esac
+         ;;
+       *) func_append new_libs " $deplib" ;;
+       esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append perm_rpath " $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         ::) dllsearchpath=$libdir;;
+         *) func_append dllsearchpath ":$libdir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_perm_rpath " $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+       func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
+       # Replace the output file specification.
+       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       exit_status=0
+       func_show_eval "$link_command" 'exit_status=$?'
+
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
+
+       # Delete the generated files.
+       if test -f "$output_objdir/${outputname}S.${objext}"; then
+         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+       fi
+
+       exit $exit_status
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $opt_dry_run || $RM $output
+       # Link the executable and exit
+       func_show_eval "$link_command" 'exit $?'
+
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       func_warning "this platform does not like uninstalled shared libraries"
+       func_warning "\`$output' will be relinked during installation"
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+       func_to_tool_file "$output_objdir/$outputname"
+       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+       func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           func_quote_for_eval "$var_value"
+           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) func_stripname '' '.exe' "$output"
+                output=$func_stripname_result ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*)
+           exeext=.exe
+           func_stripname '' '.exe' "$outputname"
+           outputname=$func_stripname_result ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           func_dirname_and_basename "$output" "" "."
+           output_name=$func_basename_result
+           output_path=$func_dirname_result
+           cwrappersource="$output_path/$objdir/lt-$output_name.c"
+           cwrapper="$output_path/$output_name.exe"
+           $RM $cwrappersource $cwrapper
+           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_cwrapperexe_src > $cwrappersource
+
+           # The wrapper executable is built using the $host compiler,
+           # because it contains $host paths and files. If cross-
+           # compiling, it, like the target executable, must be
+           # executed on the $host or under an emulation environment.
+           $opt_dry_run || {
+             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+             $STRIP $cwrapper
+           }
+
+           # Now, create the wrapper script for func_source use:
+           func_ltwrapper_scriptname $cwrapper
+           $RM $func_ltwrapper_scriptname_result
+           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+           $opt_dry_run || {
+             # note: this script will not be executed, so do not chmod.
+             if test "x$build" = "x$host" ; then
+               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+             else
+               func_emit_wrapper no > $func_ltwrapper_scriptname_result
+             fi
+           }
+         ;;
+         * )
+           $RM $output
+           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_wrapper no > $output
+           chmod +x $output
+         ;;
+       esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save $symfileobj"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$old_deplibs $non_pic_objects"
+         if test "$preload" = yes && test -f "$symfileobj"; then
+           func_append oldobjs " $symfileobj"
+         fi
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       func_append generated " $gentop"
+
+       func_extract_archives $gentop $addlibs
+       func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop="$output_objdir/${outputname}x"
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         func_append oldobjs " $func_extract_archives_result"
+       fi
+
+       # POSIX demands no paths to be encoded in archives.  We have
+       # to avoid creating archives with duplicate basenames if we
+       # might have to extract them afterwards, e.g., when creating a
+       # static archive out of a convenience library, or when linking
+       # the entirety of a libtool archive into another (currently
+       # not supported by libtool).
+       if (for obj in $oldobjs
+           do
+             func_basename "$obj"
+             $ECHO "$func_basename_result"
+           done | sort | sort -uc >/dev/null 2>&1); then
+         :
+       else
+         echo "copying selected object files to avoid basename conflicts..."
+         gentop="$output_objdir/${outputname}x"
+         func_append generated " $gentop"
+         func_mkdir_p "$gentop"
+         save_oldobjs=$oldobjs
+         oldobjs=
+         counter=1
+         for obj in $save_oldobjs
+         do
+           func_basename "$obj"
+           objbase="$func_basename_result"
+           case " $oldobjs " in
+           " ") oldobjs=$obj ;;
+           *[\ /]"$objbase "*)
+             while :; do
+               # Make sure we don't pick an alternate name that also
+               # overlaps.
+               newobj=lt$counter-$objbase
+               func_arith $counter + 1
+               counter=$func_arith_result
+               case " $oldobjs " in
+               *[\ /]"$newobj "*) ;;
+               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+               esac
+             done
+             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+             func_append oldobjs " $gentop/$newobj"
+             ;;
+           *) func_append oldobjs " $obj" ;;
+           esac
+         done
+       fi
+       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+       tool_oldlib=$func_to_tool_file_result
+       eval cmds=\"$old_archive_cmds\"
+
+       func_len " $cmds"
+       len=$func_len_result
+       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         cmds=$old_archive_cmds
+       elif test -n "$archiver_list_spec"; then
+         func_verbose "using command file archive linking..."
+         for obj in $oldobjs
+         do
+           func_to_tool_file "$obj"
+           $ECHO "$func_to_tool_file_result"
+         done > $output_objdir/$libname.libcmd
+         func_to_tool_file "$output_objdir/$libname.libcmd"
+         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+         cmds=$old_archive_cmds
+       else
+         # the command line is too long to link in one step, link in parts
+         func_verbose "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+         objlist=
+         concat_cmds=
+         save_oldobjs=$oldobjs
+         oldobjs=
+         # Is there a better way of finding the last object in the list?
+         for obj in $save_oldobjs
+         do
+           last_oldobj=$obj
+         done
+         eval test_cmds=\"$old_archive_cmds\"
+         func_len " $test_cmds"
+         len0=$func_len_result
+         len=$len0
+         for obj in $save_oldobjs
+         do
+           func_len " $obj"
+           func_arith $len + $func_len_result
+           len=$func_arith_result
+           func_append objlist " $obj"
+           if test "$len" -lt "$max_cmd_len"; then
+             :
+           else
+             # the above command should be used before it gets too long
+             oldobjs=$objlist
+             if test "$obj" = "$last_oldobj" ; then
+               RANLIB=$save_RANLIB
+             fi
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+             objlist=
+             len=$len0
+           fi
+         done
+         RANLIB=$save_RANLIB
+         oldobjs=$objlist
+         if test "X$oldobjs" = "X" ; then
+           eval cmds=\"\$concat_cmds\"
+         else
+           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+         fi
+       fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         func_quote_for_eval "$var_value"
+         relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+       relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+       for installed in no yes; do
+         if test "$installed" = yes; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               func_basename "$deplib"
+               name="$func_basename_result"
+               func_resolve_sysroot "$deplib"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$deplib' is not a valid libtool archive"
+               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             -L*)
+               func_stripname -L '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -L$func_replace_sysroot_result"
+               ;;
+             -R*)
+               func_stripname -R '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -R$func_replace_sysroot_result"
+               ;;
+             *) func_append newdependency_libs " $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+
+           for lib in $dlfiles; do
+             case $lib in
+             *.la)
+               func_basename "$lib"
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
+               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             *) func_append newdlfiles " $lib" ;;
+             esac
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+             *.la)
+               # Only pass preopened files to the pseudo-archive (for
+               # eventual linking with the app. that links it) if we
+               # didn't already link the preopened objects directly into
+               # the library:
+               func_basename "$lib"
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
+               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             esac
+           done
+           dlprefiles="$newdlprefiles"
+         else
+           newdlfiles=
+           for lib in $dlfiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             func_append newdlfiles " $abs"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             func_append newdlprefiles " $abs"
+           done
+           dlprefiles="$newdlprefiles"
+         fi
+         $RM $output
+         # place dlname in correct position for cygwin
+         # In fact, it would be nice if we could use this code for all target
+         # systems that can't hard-code library paths into their executables
+         # and that have no shared library path variable independent of PATH,
+         # but it turns out we can't easily determine that from inspecting
+         # libtool variables, so we have to hard-code the OSs to which it
+         # applies here; at the moment, that means platforms that use the PE
+         # object format with DLL files.  See the long comment at the top of
+         # tests/bindir.at for full details.
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+             # If a -bindir argument was supplied, place the dll there.
+             if test "x$bindir" != x ;
+             then
+               func_relative_path "$install_libdir" "$bindir"
+               tdlname=$func_relative_path_result$dlname
+             else
+               # Otherwise fall back on heuristic.
+               tdlname=../bin/$dlname
+             fi
+             ;;
+         esac
+         $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test "$installed" = no && test "$need_relink" = yes; then
+           $ECHO >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+       odir="$objdir"
+      else
+       odir="$dir/$objdir"
+      fi
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
+       case " $rmdirs " in
+         *" $odir "*) ;;
+         *) func_append rmdirs " $odir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+        { test -h "$file"; } >/dev/null 2>&1 ||
+        test -f "$file"; then
+       :
+      elif test -d "$file"; then
+       exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+       continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if func_lalib_p "$file"; then
+         func_source $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           func_append rmfiles " $odir/$n"
+         done
+         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+         case "$opt_mode" in
+         clean)
+           case " $library_names " in
+           *" $dlname "*) ;;
+           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+           esac
+           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+           ;;
+         uninstall)
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+           ;;
+         esac
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if func_lalib_p "$file"; then
+
+         # Read the .lo file
+         func_source $dir/$name
+
+         # Add PIC object to the list of files to remove.
+         if test -n "$pic_object" &&
+            test "$pic_object" != none; then
+           func_append rmfiles " $dir/$pic_object"
+         fi
+
+         # Add non-PIC object to the list of files to remove.
+         if test -n "$non_pic_object" &&
+            test "$non_pic_object" != none; then
+           func_append rmfiles " $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test "$opt_mode" = clean ; then
+         noexename=$name
+         case $file in
+         *.exe)
+           func_stripname '' '.exe' "$file"
+           file=$func_stripname_result
+           func_stripname '' '.exe' "$name"
+           noexename=$func_stripname_result
+           # $file with .exe has already been added to rmfiles,
+           # add $file without .exe
+           func_append rmfiles " $file"
+           ;;
+         esac
+         # Do a test to see if this is a libtool program.
+         if func_ltwrapper_p "$file"; then
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             relink_command=
+             func_source $func_ltwrapper_scriptname_result
+             func_append rmfiles " $func_ltwrapper_scriptname_result"
+           else
+             relink_command=
+             func_source $dir/$noexename
+           fi
+
+           # note $name still contains .exe if it was in $file originally
+           # as does the version of $file that was added into $rmfiles
+           func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+           if test "$fast_install" = yes && test -n "$relink_command"; then
+             func_append rmfiles " $odir/lt-$name"
+           fi
+           if test "X$noexename" != "X$name" ; then
+             func_append rmfiles " $odir/lt-${noexename}.c"
+           fi
+         fi
+       fi
+       ;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
+
+test -z "$opt_mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# vi:sw=2
+
diff --git a/m4/Makefile.am b/m4/Makefile.am
new file mode 100644 (file)
index 0000000..b037d1e
--- /dev/null
@@ -0,0 +1,33 @@
+GETTEXT_M4 = \
+       codeset.m4 \
+       gettext.m4 \
+       glibc21.m4 \
+       iconv.m4 \
+       intdiv0.m4 \
+       inttypes_h.m4 \
+       inttypes-pri.m4 \
+       lcmessage.m4 \
+       lib-ld.m4 \
+       lib-link.m4 \
+       lib-prefix.m4 \
+       lrintf.m4 \
+       lrint.m4 \
+       progtest.m4 \
+       stdint_h.m4 \
+       uintmax_t.m4
+
+EXTRA_DIST = \
+       a52.m4 \
+       aalib.m4 \
+       as-liblame.m4 \
+       as-slurp-ffmpeg.m4 \
+       check-libheader.m4 \
+       freetype2.m4 \
+       glib.m4 \
+       gst-fionread.m4 \
+       gst-sdl.m4 \
+       gst-shout2.m4 \
+       gst-sid.m4 \
+       gtk.m4 \
+       libfame.m4 \
+       libmikmod.m4
diff --git a/m4/Makefile.in b/m4/Makefile.in
new file mode 100644 (file)
index 0000000..9283367
--- /dev/null
@@ -0,0 +1,554 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = m4
+DIST_COMMON = README $(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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+GETTEXT_M4 = \
+       codeset.m4 \
+       gettext.m4 \
+       glibc21.m4 \
+       iconv.m4 \
+       intdiv0.m4 \
+       inttypes_h.m4 \
+       inttypes-pri.m4 \
+       lcmessage.m4 \
+       lib-ld.m4 \
+       lib-link.m4 \
+       lib-prefix.m4 \
+       lrintf.m4 \
+       lrint.m4 \
+       progtest.m4 \
+       stdint_h.m4 \
+       uintmax_t.m4
+
+EXTRA_DIST = \
+       a52.m4 \
+       aalib.m4 \
+       as-liblame.m4 \
+       as-slurp-ffmpeg.m4 \
+       check-libheader.m4 \
+       freetype2.m4 \
+       glib.m4 \
+       gst-fionread.m4 \
+       gst-sdl.m4 \
+       gst-shout2.m4 \
+       gst-sid.m4 \
+       gtk.m4 \
+       libfame.m4 \
+       libmikmod.m4
+
+all: all-am
+
+.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 m4/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu m4/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
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool 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 maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am 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 --git a/m4/README b/m4/README
new file mode 100644 (file)
index 0000000..f044598
--- /dev/null
+++ b/m4/README
@@ -0,0 +1,3 @@
+All aclocal .m4 files we need are put here and cat'd to acinclude.m4 in 
+the source root.  Official ones (taken from the relevant devel packages) 
+are named as-is, unofficial ones (or changed ones) get a gst-prefix.
diff --git a/m4/a52.m4 b/m4/a52.m4
new file mode 100644 (file)
index 0000000..0065dee
--- /dev/null
+++ b/m4/a52.m4
@@ -0,0 +1,125 @@
+dnl
+dnl A52_CHECK-LIBHEADER(FEATURE-NAME, LIB-NAME, LIB-FUNCTION, HEADER-NAME,
+dnl                     ACTION-IF-FOUND, ACTION-IF-NOT-FOUND,
+dnl                     EXTRA-LDFLAGS, EXTRA-CPPFLAGS)
+dnl
+dnl FEATURE-NAME        - feature name; library and header files are treated
+dnl                       as feature, which we look for
+dnl LIB-NAME            - library name as in AC_CHECK_LIB macro
+dnl LIB-FUNCTION        - library symbol as in AC_CHECK_LIB macro
+dnl HEADER-NAME         - header file name as in AC_CHECK_HEADER
+dnl ACTION-IF-FOUND     - when feature is found then execute given action
+dnl ACTION-IF-NOT-FOUND - when feature is not found then execute given action
+dnl EXTRA-LDFLAGS       - extra linker flags (-L or -l)
+dnl EXTRA-CPPFLAGS      - extra C preprocessor flags, i.e. -I/usr/X11R6/include
+dnl
+dnl Based on GST_CHECK_LIBHEADER from gstreamer plugins 0.3.1.
+dnl
+AC_DEFUN([A52_CHECK_LIBHEADER],
+[
+  AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no, [$7])
+  check_libheader_feature_name=translit([$1], A-Z, a-z)
+
+  if test "x$HAVE_[$1]" = "xyes"; then
+    check_libheader_save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="[$8] $CPPFLAGS"
+    AC_CHECK_HEADER([$4], :, HAVE_[$1]=no)
+    CPPFLAGS=$check_libheader_save_CPPFLAGS
+  fi
+
+  if test "x$HAVE_[$1]" = "xyes"; then
+    ifelse([$5], , :, [$5])
+  else
+    ifelse([$6], , :, [$6])
+  fi
+]
+)
+
+dnl
+dnl AC_CHECK_A52DEC(ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
+dnl
+dnl ACTION-IF-FOUND     - when feature is found then execute given action
+dnl ACTION-IF-NOT-FOUND - when feature is not found then execute given action
+dnl
+dnl Defines HAVE_A52DEC to yes if liba52 is found
+dnl
+dnl CFLAGS and LDFLAGS for the library are stored in A52DEC_CFLAGS and
+dnl A52DEC_LIBS, respectively
+dnl
+dnl Based on GST_CHECK_A52DEC from gstreamer plugins 0.3.3.1
+dnl Thomas Vander Stichele <thomas@apestaart.org>, Andy Wingo <wingo@pobox.com>
+dnl
+AC_DEFUN([AC_CHECK_A52DEC], 
+[dnl
+AC_ARG_WITH(a52dec-prefix,
+    AC_HELP_STRING([--with-a52dec-prefix=PFX],
+                   [prefix where a52dec is installed (optional)]),
+    a52dec_config_prefix="$withval", a52dec_config_prefix="")
+
+if test x$a52dec_config_prefix = x ; then
+    A52_CHECK_LIBHEADER(A52DEC, a52, a52_init, a52dec/a52.h,
+        A52DEC_LIBS="-la52 -lm", , -lm)
+else
+    A52_CHECK_LIBHEADER(A52DEC, a52, a52_init, a52dec/a52.h, [
+            A52DEC_LIBS="-la52 -L$a52dec_config_prefix/lib -lm"
+            A52DEC_CFLAGS="-I$a52dec_config_prefix/include"
+        ], , -L$a52dec_config_prefix/lib, -I$a52dec_config_prefix/include)
+fi
+
+if test $HAVE_A52DEC = "yes"; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $A52DEC_CFLAGS"
+    LIBS="$A52DEC_LIBS $LIBS"
+    AC_TRY_RUN([
+#include <inttypes.h>
+#include <a52dec/a52.h>
+
+int 
+main ()
+{
+  a52_state_t *state;
+  state = a52_init (0);
+  a52_free (state);
+  return 0;
+}
+        ],, HAVE_A52DEC=no, [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+
+    if test HAVE_A52DEC = "no"; then
+        echo "*** Your a52dec is borked somehow. Please update to 0.7.4."
+    else
+        AC_TRY_RUN([
+#include <inttypes.h>
+#include <a52dec/a52.h>
+
+int 
+main ()
+{
+  int i = sizeof (a52_state_t);
+  if ( i )
+    return 0;
+}
+            ], HAVE_A52DEC=no,, [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+
+        if test HAVE_A52DEC = "no"; then
+            echo "*** Your a52dec is too old. Please update to 0.7.4."
+        fi
+    fi
+    CFLAGS="$ac_save_CFLAGS"
+    LIBS="$ac_save_LIBS"
+fi
+
+if test HAVE_A52DEC = "no"; then
+    A52DEC_CFLAGS=""
+    A52DEC_LIBS=""
+fi
+
+if test "x$HAVE_A52DEC" = "xyes"; then
+  ifelse([$1], , :, [$1])
+else
+  ifelse([$2], , :, [$2])
+fi
+
+AC_SUBST(A52DEC_CFLAGS)
+AC_SUBST(A52DEC_LIBS)
+])
diff --git a/m4/aalib.m4 b/m4/aalib.m4
new file mode 100644 (file)
index 0000000..10e0a64
--- /dev/null
@@ -0,0 +1,178 @@
+# Configure paths for AALIB
+# touched up for clean output by Thomas Vander Stichele
+# Jan Hubicka 4/22/2001
+# stolen from Sam Lantinga 9/21/99
+# stolen from Manish Singh
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_AALIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for AALIB, and define AALIB_CFLAGS and AALIB_LIBS
+dnl
+AC_DEFUN([AM_PATH_AALIB],
+[dnl 
+dnl Get the cflags and libraries from the aalib-config script
+dnl
+AC_ARG_WITH(aalib-prefix,
+  AC_HELP_STRING([--with-aalib-prefix=PFX],
+                 [prefix where AALIB is installed (optional)]),
+  aalib_prefix="$withval", aalib_prefix="")
+
+AC_ARG_WITH(aalib-exec-prefix,
+  AC_HELP_STRING([--with-aalib-exec-prefix=PFX],
+                 [exec prefix where AALIB is installed (optional)]),
+  aalib_exec_prefix="$withval", aalib_exec_prefix="")
+
+AC_ARG_ENABLE(aalibtest, 
+  AC_HELP_STRING([--disable-aalibtest],
+                 [do not try to compile and run a test AALIB program]),
+  , enable_aalibtest=yes)
+
+  if test x$aalib_exec_prefix != x ; then
+     aalib_args="$aalib_args --exec-prefix=$aalib_exec_prefix"
+     if test x${AALIB_CONFIG+set} != xset ; then
+        AALIB_CONFIG=$aalib_exec_prefix/bin/aalib-config
+     fi
+  fi
+  if test x$aalib_prefix != x ; then
+     aalib_args="$aalib_args --prefix=$aalib_prefix"
+     if test x${AALIB_CONFIG+set} != xset ; then
+        AALIB_CONFIG=$aalib_prefix/bin/aalib-config
+     fi
+  fi
+
+  AC_PATH_PROG(AALIB_CONFIG, aalib-config, no)
+  min_aalib_version=ifelse([$1], ,0.11.0,$1)
+  AC_MSG_CHECKING(for AALIB - version >= $min_aalib_version)
+  no_aalib=""
+  if test "$AALIB_CONFIG" = "no" ; then
+    no_aalib=yes
+  else
+    AALIB_CFLAGS=`$AALIB_CONFIG $aalibconf_args --cflags`
+    AALIB_LIBS=`$AALIB_CONFIG $aalibconf_args --libs`
+
+    aalib_major_version=`$AALIB_CONFIG $aalib_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    aalib_minor_version=`$AALIB_CONFIG $aalib_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    aalib_micro_version=`$AALIB_CONFIG $aalib_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_aalibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $AALIB_CFLAGS"
+      LIBS="$LIBS $AALIB_LIBS"
+dnl
+dnl Now check if the installed AALIB is sufficiently new. (Also sanity
+dnl checks the results of aalib-config to some extent
+dnl
+      rm -f conf.aalibtest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "aalib.h"
+
+char*
+my_strdup (char *str)
+{
+  char *new_str;
+  
+  if (str)
+    {
+      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+      strcpy (new_str, str);
+    }
+  else
+    new_str = NULL;
+  
+  return new_str;
+}
+
+int main (int argc, char *argv[])
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  /* This hangs on some systems (?)
+  system ("touch conf.aalibtest");
+  */
+  { FILE *fp = fopen("conf.aalibtest", "a"); if ( fp ) fclose(fp); }
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = my_strdup("$min_aalib_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_aalib_version");
+     exit(1);
+   }
+
+   if (($aalib_major_version > major) ||
+      (($aalib_major_version == major) && ($aalib_minor_version > minor)) ||
+      (($aalib_major_version == major) && ($aalib_minor_version == minor) && ($aalib_micro_version >= micro)))
+    {
+      return 0;
+    }
+  else
+    {
+      printf("\n*** 'aalib-config --version' returned %d.%d.%d, but the minimum version\n", $aalib_major_version, $aalib_minor_version, $aalib_micro_version);
+      printf("*** of AALIB required is %d.%d.%d. If aalib-config is correct, then it is\n", major, minor, micro);
+      printf("*** best to upgrade to the required version.\n");
+      printf("*** If aalib-config was wrong, set the environment variable AALIB_CONFIG\n");
+      printf("*** to point to the correct copy of aalib-config, and remove the file\n");
+      printf("*** config.cache before re-running configure\n");
+      return 1;
+    }
+}
+
+],, no_aalib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_aalib" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$AALIB_CONFIG" = "no" ; then
+       echo "*** The aalib-config script installed by AALIB could not be found"
+       echo "*** If AALIB was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the AALIB_CONFIG environment variable to the"
+       echo "*** full path to aalib-config."
+     else
+       if test -f conf.aalibtest ; then
+        :
+       else
+          echo "*** Could not run AALIB test program, checking why..."
+          CFLAGS="$CFLAGS $AALIB_CFLAGS"
+          LIBS="$LIBS $AALIB_LIBS"
+          AC_TRY_LINK([
+#include <stdio.h>
+#include "AALIB.h"
+],      [ return 0; ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding AALIB or finding the wrong"
+          echo "*** version of AALIB. If it is not finding AALIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means AALIB was incorrectly installed"
+          echo "*** or that you have moved AALIB since it was installed. In the latter case, you"
+          echo "*** may want to edit the aalib-config script: $AALIB_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     AALIB_CFLAGS=""
+     AALIB_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(AALIB_CFLAGS)
+  AC_SUBST(AALIB_LIBS)
+  rm -f conf.aalibtest
+])
diff --git a/m4/as-liblame.m4 b/m4/as-liblame.m4
new file mode 100644 (file)
index 0000000..ed7070c
--- /dev/null
@@ -0,0 +1,50 @@
+# CFLAGS and library paths for LIBLAME
+# taken from Autostar Sandbox, http://autostars.sourceforge.net/
+# inspired by xmms.m4
+
+dnl Usage:
+dnl AM_PATH_LIBLAME([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl FIXME: version checking does not work currently
+dnl
+dnl Example:
+dnl AM_PATH_LIBLAME(3.89, , AC_MSG_ERROR([*** LIBLAME >= 3.89 not installed)) 
+dnl
+dnl Defines LIBLAME_LIBS
+dnl FIXME: should define LIBLAME_VERSION
+dnl
+
+AC_DEFUN([AM_PATH_LIBLAME],
+[
+  dnl check for the library
+  AC_CHECK_LIB(mp3lame, lame_init, HAVE_LIBLAME=yes, HAVE_LIBLAME=no, -lm)
+  dnl check if lame.h is available in the standard location or not
+  HAVE_LAME_H_STD=no
+  AC_CHECK_HEADER(lame.h, HAVE_LAME_H_STD=no, :)
+  AC_CHECK_HEADER(lame/lame.h, HAVE_LAME_H_STD=yes, :)
+  AC_MSG_CHECKING(for lame.h in right location)
+  if test "x$HAVE_LAME_H_STD" = "xyes"; then
+    AC_MSG_RESULT(yes)
+  else
+    AC_MSG_RESULT(no)
+    HAVE_LIBLAME=no
+    if test "x$HAVE_LAME_H_STD"="xno"; then
+      AC_MSG_WARN(lame.h found in include dir,)
+      AC_MSG_WARN( while it should be in it's own lame/ dir !)
+    fi
+ fi
+
+  dnl now do the actual "do we have it ?" test
+  if test "x$HAVE_LIBLAME" = "xyes"; then
+    LIBLAME_LIBS="-lmp3lame -lm"
+    dnl execute what we have to because it's found
+    ifelse([$2], , :, [$2])
+  else
+    LIBLAME_LIBS=""
+    dnl execute what we have to because it's not found
+    ifelse([$3], , :, [$3])
+  fi
+
+  dnl make variables available
+  AC_SUBST(LIBLAME_LIBS)
+  AC_SUBST(HAVE_LIBLAME)
+])
diff --git a/m4/as-slurp-ffmpeg.m4 b/m4/as-slurp-ffmpeg.m4
new file mode 100644 (file)
index 0000000..fd54b42
--- /dev/null
@@ -0,0 +1,59 @@
+dnl slurp-ffmpeg.m4 0.1.1
+dnl a macro to slurp in ffmpeg's cvs source inside a project tree
+dnl taken from Autostar Sandbox, http://autostars.sourceforge.net/
+
+dnl Usage:
+dnl AS_SLURP_FFMPEG(DIRECTORY, DATE, [ACTION-IF-WORKED [, ACTION-IF-NOT-WORKED]]])
+dnl
+dnl Example:
+dnl AM_PATH_FFMPEG(lib/ffmpeg, 2002-12-14 12:00 GMT)
+dnl
+dnl make sure you have a Tag file in the dir where you check out that
+dnl is the Tag of CVS you want to have checked out
+dnl it should correspond to the DATE argument you supply, ie resolve to
+dnl the same date
+dnl (in an ideal world, cvs would understand it's own Tag file format as
+dnl a date spec)
+
+AC_DEFUN([AS_SLURP_FFMPEG],
+[
+  # save original dir
+  FAILED=""
+  DIRECTORY=`pwd`
+  # get/update cvs
+  if test ! -d $1; then mkdir -p $1; fi
+  dnl we need to check $srcdir/$1 or it will always checkout ffmpeg even if it is there
+  dnl at least when top_srcdir != top_builddir.
+  dnl FIXME: unfortunately this makes the checkout go into top_srcdir
+  cd $srcdir/$1
+
+  if test ! -e ffmpeg/README; then
+    # check out cvs code
+    AC_MSG_NOTICE(checking out ffmpeg cvs code from $2 into $1)
+    cvs -Q -z4 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -D '$2' ffmpeg || FAILED=yes
+  else
+    # compare against Tag file and see if it needs updating
+    if test "`cat Tag`" == "$2"; then
+      AC_MSG_NOTICE(ffmpeg cvs code in sync)
+    else
+      cd ffmpeg 
+      AC_MSG_NOTICE(updating ffmpeg cvs code to $2)
+      cvs -Q -z4 update -dP -D '$2' || FAILED=yes
+      cd ..
+    fi
+  fi
+  if test "x$FAILED" != "xyes"; then
+    echo "$2" > Tag 
+  fi
+  
+  # now go back
+  cd $DIRECTORY
+
+  if test "x$FAILED" == "xyes"; then
+    [$4]
+    false
+  else
+    [$3]
+    true
+  fi
+])
diff --git a/m4/check-libheader.m4 b/m4/check-libheader.m4
new file mode 100644 (file)
index 0000000..a7fc5a6
--- /dev/null
@@ -0,0 +1,39 @@
+dnl
+dnl CHECK-LIBHEADER(FEATURE-NAME, LIB-NAME, LIB-FUNCTION, HEADER-NAME,
+dnl                 ACTION-IF-FOUND, ACTION-IF-NOT-FOUND,
+dnl                 EXTRA-LDFLAGS, EXTRA-CPPFLAGS)
+dnl
+dnl FEATURE-NAME        - feature name; library and header files are treated
+dnl                       as feature, which we look for
+dnl LIB-NAME            - library name as in AC_CHECK_LIB macro
+dnl LIB-FUNCTION        - library symbol as in AC_CHECK_LIB macro
+dnl HEADER-NAME         - header file name as in AC_CHECK_HEADER
+dnl ACTION-IF-FOUND     - when feature is found then execute given action
+dnl ACTION-IF-NOT-FOUND - when feature is not found then execute given action
+dnl EXTRA-LDFLAGS       - extra linker flags (-L or -l)
+dnl EXTRA-CPPFLAGS      - extra C preprocessor flags, i.e. -I/usr/X11R6/include
+dnl
+dnl Based on GST_CHECK_LIBHEADER from gstreamer plugins 0.3.1.
+dnl
+AC_DEFUN([CHECK_LIBHEADER],
+[
+  AC_CHECK_LIB([$2], [$3], HAVE_[$1]=yes, HAVE_[$1]=no, [$7])
+  check_libheader_feature_name=translit([$1], A-Z, a-z)
+
+  if test "x$HAVE_[$1]" = "xyes"; then
+    check_libheader_save_CPPFLAGS=$CPPFLAGS
+    CPPFLAGS="[$8] $CPPFLAGS"
+    AC_CHECK_HEADER([$4], :, HAVE_[$1]=no)
+    CPPFLAGS=$check_libheader_save_CPPFLAGS
+  fi
+
+  if test "x$HAVE_[$1]" = "xyes"; then
+    ifelse([$5], , :, [$5])
+    AC_MSG_NOTICE($check_libheader_feature_name was found)
+  else
+    ifelse([$6], , :, [$6])
+    AC_MSG_WARN($check_libheader_feature_name not found)
+  fi
+  AC_SUBST(HAVE_[$1])
+]
+)
diff --git a/m4/freetype2.m4 b/m4/freetype2.m4
new file mode 100644 (file)
index 0000000..7199071
--- /dev/null
@@ -0,0 +1,143 @@
+# Configure paths for FreeType2
+# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor
+
+dnl AC_CHECK_FT2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for FreeType2, and define FT2_CFLAGS and FT2_LIBS
+dnl
+AC_DEFUN([AC_CHECK_FT2],
+[dnl
+dnl Get the cflags and libraries from the freetype-config script
+dnl
+AC_ARG_WITH(ft-prefix,
+[  --with-ft-prefix=PREFIX
+                          Prefix where FreeType is installed (optional)],
+            ft_config_prefix="$withval", ft_config_prefix="")
+AC_ARG_WITH(ft-exec-prefix,
+[  --with-ft-exec-prefix=PREFIX
+                          Exec prefix where FreeType is installed (optional)],
+            ft_config_exec_prefix="$withval", ft_config_exec_prefix="")
+AC_ARG_ENABLE(freetypetest,
+[  --disable-freetypetest  Do not try to compile and run
+                          a test FreeType program],
+              [], enable_fttest=yes)
+
+if test x$ft_config_exec_prefix != x ; then
+  ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix"
+  if test x${FT2_CONFIG+set} != xset ; then
+    FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config
+  fi
+fi
+if test x$ft_config_prefix != x ; then
+  ft_config_args="$ft_config_args --prefix=$ft_config_prefix"
+  if test x${FT2_CONFIG+set} != xset ; then
+    FT2_CONFIG=$ft_config_prefix/bin/freetype-config
+  fi
+fi
+AC_PATH_PROG(FT2_CONFIG, freetype-config, no)
+
+min_ft_version=ifelse([$1], ,6.1.0,$1)
+AC_MSG_CHECKING(for FreeType - version >= $min_ft_version)
+no_ft=""
+if test "$FT2_CONFIG" = "no" ; then
+  no_ft=yes
+else
+  FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags`
+  FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs`
+  ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+  ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+  ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+  ft_min_major_version=`echo $min_ft_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+  ft_min_minor_version=`echo $min_ft_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+  ft_min_micro_version=`echo $min_ft_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+  if test x$enable_fttest = xyes ; then
+    ft_config_is_lt=""
+    if test $ft_config_major_version -lt $ft_min_major_version ; then
+      ft_config_is_lt=yes
+    else
+      if test $ft_config_major_version -eq $ft_min_major_version ; then
+        if test $ft_config_minor_version -lt $ft_min_minor_version ; then
+          ft_config_is_lt=yes
+        else
+          if test $ft_config_minor_version -eq $ft_min_minor_version ; then
+            if test $ft_config_micro_version -lt $ft_min_micro_version ; then
+              ft_config_is_lt=yes
+            fi
+          fi
+        fi
+      fi
+    fi
+    if test x$ft_config_is_lt = xyes ; then
+      no_ft=yes
+    else
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $FT2_CFLAGS"
+      LIBS="$FT2_LIBS $LIBS"
+dnl
+dnl Sanity checks for the results of freetype-config to some extent
+dnl
+      AC_TRY_RUN([
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main()
+{
+  FT_Library library;
+  FT_Error error;
+
+  error = FT_Init_FreeType(&library);
+
+  if (error)
+    return 1;
+  else
+  {
+    FT_Done_FreeType(library);
+    return 0;
+  }
+}
+],, no_ft=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+      CFLAGS="$ac_save_CFLAGS"
+      LIBS="$ac_save_LIBS"
+    fi             # test $ft_config_version -lt $ft_min_version
+  fi               # test x$enable_fttest = xyes
+fi                 # test "$FT2_CONFIG" = "no"
+if test x$no_ft = x ; then
+   AC_MSG_RESULT(yes)
+   ifelse([$2], , :, [$2])
+else
+   AC_MSG_RESULT(no)
+   if test "$FT2_CONFIG" = "no" ; then
+     echo "*** The freetype-config script installed by FreeType 2 could not be found."
+     echo "*** If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in"
+     echo "*** your path, or set the FT2_CONFIG environment variable to the"
+     echo "*** full path to freetype-config."
+   else
+     if test x$ft_config_is_lt = xyes ; then
+       echo "*** Your installed version of the FreeType 2 library is too old."
+       echo "*** If you have different versions of FreeType 2, make sure that"
+       echo "*** correct values for --with-ft-prefix or --with-ft-exec-prefix"
+       echo "*** are used, or set the FT2_CONFIG environment variable to the"
+       echo "*** full path to freetype-config."
+     else
+       echo "*** The FreeType test program failed to run.  If your system uses"
+       echo "*** shared libraries and they are installed outside the normal"
+       echo "*** system library path, make sure the variable LD_LIBRARY_PATH"
+       echo "*** (or whatever is appropiate for your system) is correctly set."
+     fi
+   fi
+   FT2_CFLAGS=""
+   FT2_LIBS=""
+   ifelse([$3], , :, [$3])
+fi
+AC_SUBST(FT2_CFLAGS)
+AC_SUBST(FT2_LIBS)
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644 (file)
index 0000000..c9ae1f7
--- /dev/null
@@ -0,0 +1,381 @@
+# gettext.m4 serial 60 (gettext-0.17)
+dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl    default (if it is not specified or empty) is 'no-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl    depending on --{enable,disable}-{shared,static} and on the presence of
+dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl    $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl    implementations (in libc or libintl) without the ngettext() function
+dnl    will be ignored.  If NEEDSYMBOL is specified and is
+dnl    'need-formatstring-macros', then GNU gettext implementations that don't
+dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries.  If empty,
+dnl    the value `$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl    and used.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl    Catalog format: none
+dnl    Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+  dnl Argument checking.
+  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+  define([gt_included_intl],
+    ifelse([$1], [external],
+      ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+      [yes]))
+  define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
+
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  ifelse(gt_included_intl, yes, [
+    AC_REQUIRE([AM_INTL_SUBDIR])dnl
+  ])
+
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Sometimes libintl requires libiconv, so first search for libiconv.
+  dnl Ideally we would do this search only after the
+  dnl      if test "$USE_NLS" = "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl the configure script would need to contain the same shell code
+  dnl again, outside any 'if'. There are two solutions:
+  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
+  dnl documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
+  dnl Set USE_NLS.
+  AC_REQUIRE([AM_NLS])
+
+  ifelse(gt_included_intl, yes, [
+    BUILD_INCLUDED_LIBINTL=no
+    USE_INCLUDED_LIBINTL=no
+  ])
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+  dnl If we use NLS figure out what method
+  if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+    ifelse(gt_included_intl, yes, [
+      AC_MSG_CHECKING([whether included gettext is requested])
+      AC_ARG_WITH(included-gettext,
+        [  --with-included-gettext use the GNU gettext library included here],
+        nls_cv_force_use_gnu_gettext=$withval,
+        nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+
+      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+    ])
+        dnl User does not insist on using GNU NLS library.  Figure out what
+        dnl to use.  If GNU gettext is available we use this.  Else we have
+        dnl to fall back to GNU NLS library.
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;],
+            [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+          dnl Sometimes libintl requires libiconv, so first search for libiconv.
+          ifelse(gt_included_intl, yes, , [
+            AM_ICONV_LINK
+          ])
+          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+          dnl even if libiconv doesn't exist.
+          AC_LIB_LINKFLAGS_BODY([intl])
+          AC_CACHE_CHECK([for GNU gettext in libintl],
+            [$gt_func_gnugettext_libintl],
+           [gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+            dnl Now see whether libintl exists and does not depend on libiconv.
+            AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+              [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
+            dnl Now see whether libintl exists and depends on libiconv.
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              AC_TRY_LINK([#include <libintl.h>
+$gt_revision_test_code
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);],
+                [bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
+               [LIBINTL="$LIBINTL $LIBICONV"
+                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                eval "$gt_func_gnugettext_libintl=yes"
+               ])
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"])
+        fi
+
+        dnl If an already present or preinstalled GNU gettext() is found,
+        dnl use it.  But if this macro is used in GNU gettext, and GNU
+        dnl gettext is already preinstalled in libintl, we update this
+        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+          dnl Reset the values set by searching for libintl.
+          LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+    ifelse(gt_included_intl, yes, [
+        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+          dnl GNU gettext is not found in the C library.
+          dnl Fall back on included GNU gettext library.
+          nls_cv_use_gnu_gettext=yes
+        fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions used to generate GNU NLS library.
+        BUILD_INCLUDED_LIBINTL=yes
+        USE_INCLUDED_LIBINTL=yes
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+      fi
+
+      CATOBJEXT=
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions to use GNU gettext tools.
+        CATOBJEXT=.gmo
+      fi
+    ])
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [Define to 1 if translation of program messages to the user's native language
+   is requested.])
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to use NLS])
+  AC_MSG_RESULT([$USE_NLS])
+  if test "$USE_NLS" = "yes"; then
+    AC_MSG_CHECKING([where the gettext function comes from])
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    AC_MSG_RESULT([$gt_source])
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        AC_MSG_CHECKING([how to link with libintl])
+        AC_MSG_RESULT([$LIBINTL])
+        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+      fi
+
+      dnl For backward compatibility. Some packages may be using this.
+      AC_DEFINE(HAVE_GETTEXT, 1,
+       [Define if the GNU gettext() function is already present or preinstalled.])
+      AC_DEFINE(HAVE_DCGETTEXT, 1,
+       [Define if the GNU dcgettext() function is already present or preinstalled.])
+    fi
+
+    dnl We need to process the po/ directory.
+    POSUB=po
+  fi
+
+  ifelse(gt_included_intl, yes, [
+    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+    dnl to 'yes' because some of the testsuite requires it.
+    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+      BUILD_INCLUDED_LIBINTL=yes
+    fi
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(BUILD_INCLUDED_LIBINTL)
+    AC_SUBST(USE_INCLUDED_LIBINTL)
+    AC_SUBST(CATOBJEXT)
+
+    dnl For backward compatibility. Some configure.ins may be using this.
+    nls_cv_header_intl=
+    nls_cv_header_libgt=
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    DATADIRNAME=share
+    AC_SUBST(DATADIRNAME)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INSTOBJEXT=.mo
+    AC_SUBST(INSTOBJEXT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    GENCAT=gencat
+    AC_SUBST(GENCAT)
+
+    dnl For backward compatibility. Some Makefiles may be using this.
+    INTLOBJS=
+    if test "$USE_INCLUDED_LIBINTL" = yes; then
+      INTLOBJS="\$(GETTOBJS)"
+    fi
+    AC_SUBST(INTLOBJS)
+
+    dnl Enable libtool support if the surrounding package wishes it.
+    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+  ])
+
+  dnl For backward compatibility. Some Makefiles may be using this.
+  INTLLIBS="$LIBINTL"
+  AC_SUBST(INTLLIBS)
+
+  dnl Make all documented variables known to autoconf.
+  AC_SUBST(LIBINTL)
+  AC_SUBST(LTLIBINTL)
+  AC_SUBST(POSUB)
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/glib.m4 b/m4/glib.m4
new file mode 100644 (file)
index 0000000..b3c632b
--- /dev/null
@@ -0,0 +1,196 @@
+# Configure paths for GLIB
+# Owen Taylor     97-11-3
+
+dnl AM_PATH_GLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or 
+dnl gthread is specified in MODULES, pass to glib-config
+dnl
+AC_DEFUN([AM_PATH_GLIB],
+[dnl 
+dnl Get the cflags and libraries from the glib-config script
+dnl
+AC_ARG_WITH(glib-prefix,[  --with-glib-prefix=PFX   Prefix where GLIB is installed (optional)],
+            glib_config_prefix="$withval", glib_config_prefix="")
+AC_ARG_WITH(glib-exec-prefix,[  --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)],
+            glib_config_exec_prefix="$withval", glib_config_exec_prefix="")
+AC_ARG_ENABLE(glibtest, [  --disable-glibtest       Do not try to compile and run a test GLIB program],
+                   , enable_glibtest=yes)
+
+  if test x$glib_config_exec_prefix != x ; then
+     glib_config_args="$glib_config_args --exec-prefix=$glib_config_exec_prefix"
+     if test x${GLIB_CONFIG+set} != xset ; then
+        GLIB_CONFIG=$glib_config_exec_prefix/bin/glib-config
+     fi
+  fi
+  if test x$glib_config_prefix != x ; then
+     glib_config_args="$glib_config_args --prefix=$glib_config_prefix"
+     if test x${GLIB_CONFIG+set} != xset ; then
+        GLIB_CONFIG=$glib_config_prefix/bin/glib-config
+     fi
+  fi
+
+  for module in . $4
+  do
+      case "$module" in
+         gmodule) 
+             glib_config_args="$glib_config_args gmodule"
+         ;;
+         gthread) 
+             glib_config_args="$glib_config_args gthread"
+         ;;
+      esac
+  done
+
+  AC_PATH_PROG(GLIB_CONFIG, glib-config, no)
+  min_glib_version=ifelse([$1], ,0.99.7,$1)
+  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+  no_glib=""
+  if test "$GLIB_CONFIG" = "no" ; then
+    no_glib=yes
+  else
+    GLIB_CFLAGS=`$GLIB_CONFIG $glib_config_args --cflags`
+    GLIB_LIBS=`$GLIB_CONFIG $glib_config_args --libs`
+    glib_config_major_version=`$GLIB_CONFIG $glib_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    glib_config_minor_version=`$GLIB_CONFIG $glib_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    glib_config_micro_version=`$GLIB_CONFIG $glib_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_glibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GLIB_CFLAGS"
+      LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of glib-config to some extent
+dnl
+      rm -f conf.glibtest
+      AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.glibtest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_glib_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_glib_version");
+     exit(1);
+   }
+
+  if ((glib_major_version != $glib_config_major_version) ||
+      (glib_minor_version != $glib_config_minor_version) ||
+      (glib_micro_version != $glib_config_micro_version))
+    {
+      printf("\n*** 'glib-config --version' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
+             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+             glib_major_version, glib_minor_version, glib_micro_version);
+      printf ("*** was found! If glib-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GLIB. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If glib-config was wrong, set the environment variable GLIB_CONFIG\n");
+      printf("*** to point to the correct copy of glib-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+          (glib_minor_version != GLIB_MINOR_VERSION) ||
+           (glib_micro_version != GLIB_MICRO_VERSION))
+    {
+      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            glib_major_version, glib_minor_version, glib_micro_version);
+    }
+  else
+    {
+      if ((glib_major_version > major) ||
+        ((glib_major_version == major) && (glib_minor_version > minor)) ||
+        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
+               glib_major_version, glib_minor_version, glib_micro_version);
+        printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the glib-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GLIB, but you can also set the GLIB_CONFIG environment to point to the\n");
+        printf("*** correct copy of glib-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_glib" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$GLIB_CONFIG" = "no" ; then
+       echo "*** The glib-config script installed by GLIB could not be found"
+       echo "*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the GLIB_CONFIG environment variable to the"
+       echo "*** full path to glib-config."
+     else
+       if test -f conf.glibtest ; then
+        :
+       else
+          echo "*** Could not run GLIB test program, checking why..."
+          CFLAGS="$CFLAGS $GLIB_CFLAGS"
+          LIBS="$LIBS $GLIB_LIBS"
+          AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+          echo "***"
+          echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+          echo "*** came with the system with the command"
+          echo "***"
+          echo "***    rpm --erase --nodeps gtk gtk-devel" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GLIB was incorrectly installed"
+          echo "*** or that you have moved GLIB since it was installed. In the latter case, you"
+          echo "*** may want to edit the glib-config script: $GLIB_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GLIB_CFLAGS=""
+     GLIB_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GLIB_CFLAGS)
+  AC_SUBST(GLIB_LIBS)
+  rm -f conf.glibtest
+])
diff --git a/m4/gst-fionread.m4 b/m4/gst-fionread.m4
new file mode 100644 (file)
index 0000000..dff19df
--- /dev/null
@@ -0,0 +1,42 @@
+AC_DEFUN([GST_CHECK_FIONREAD], [
+
+  AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
+  AC_CACHE_VAL(GST_FIONREAD_IN_SYS_IOCTL, [
+    AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/ioctl.h>
+], [
+int x = FIONREAD;
+if ( x )
+  return 0;
+    ], GST_FIONREAD_IN_SYS_IOCTL="yes",GST_FIONREAD_IN_SYS_IOCTL="no")
+  ])
+
+  AC_MSG_RESULT($GST_FIONREAD_IN_SYS_IOCTL)
+
+  if test "$GST_FIONREAD_IN_SYS_IOCTL" = "yes"; then
+    AC_DEFINE([HAVE_FIONREAD_IN_SYS_IOCTL], 1, [FIONREAD ioctl found in sys/ioclt.h])
+
+  else
+
+    AC_MSG_CHECKING(for FIONREAD in sys/filio.h)
+    AC_CACHE_VAL(GST_FIONREAD_IN_SYS_FILIO, [
+      AC_TRY_COMPILE([
+  #include <sys/types.h>
+  #include <sys/filio.h>
+  ], [
+  int x = FIONREAD;
+  if ( x )
+    return 0;
+      ], GST_FIONREAD_IN_SYS_FILIO="yes",GST_FIONREAD_IN_SYS_FILIO="no")
+    ])
+
+    AC_MSG_RESULT($GST_FIONREAD_IN_SYS_FILIO)
+
+    if test "$GST_FIONREAD_IN_SYS_FILIO" = "yes"; then   
+      AC_DEFINE([HAVE_FIONREAD_IN_SYS_FILIO], 1, [FIONREAD ioctl found in sys/filio.h])
+    fi
+
+  fi
+
+])
diff --git a/m4/gst-sdl.m4 b/m4/gst-sdl.m4
new file mode 100644 (file)
index 0000000..cfc3196
--- /dev/null
@@ -0,0 +1,184 @@
+# stuff for SDL, hope this helps if we put it here
+
+# Configure paths for SDL
+# Sam Lantinga 9/21/99
+# stolen from Manish Singh
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
+dnl
+AC_DEFUN([AM_PATH_SDL],
+[dnl 
+dnl Get the cflags and libraries from the sdl-config script
+dnl
+AC_ARG_WITH(sdl-prefix,
+  AC_HELP_STRING([--with-sdl-prefix=PFX],
+                 [prefix where SDL is installed (optional)]),
+  sdl_prefix="$withval", sdl_prefix="")
+
+AC_ARG_WITH(sdl-exec-prefix,
+  AC_HELP_STRING([--with-sdl-exec-prefix=PFX],
+                 [exec prefix where SDL is installed (optional)]),
+  sdl_exec_prefix="$withval", sdl_exec_prefix="")
+
+AC_ARG_ENABLE(sdltest,
+  AC_HELP_STRING([--disable-sdltest],
+                 [do not try to compile and run a test SDL program]),
+  , enable_sdltest=yes)
+
+  if test x$sdl_exec_prefix != x ; then
+     sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
+     if test x${SDL_CONFIG+set} != xset ; then
+        SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
+     fi
+  fi
+  if test x$sdl_prefix != x ; then
+     sdl_args="$sdl_args --prefix=$sdl_prefix"
+     if test x${SDL_CONFIG+set} != xset ; then
+        SDL_CONFIG=$sdl_prefix/bin/sdl-config
+     fi
+  fi
+
+  AC_PATH_PROG(SDL_CONFIG, sdl-config, no)
+  min_sdl_version=ifelse([$1], ,0.11.0,$1)
+  AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
+  no_sdl=""
+  if test "$SDL_CONFIG" = "no" ; then
+    no_sdl=yes
+  else
+    SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
+    SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
+
+    sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_sdltest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $SDL_CFLAGS"
+      LIBS="$LIBS $SDL_LIBS"
+dnl
+dnl Now check if the installed SDL is sufficiently new. (Also sanity
+dnl checks the results of sdl-config to some extent
+dnl
+      rm -f conf.sdltest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "SDL.h"
+
+char*
+my_strdup (char *str)
+{
+  char *new_str;
+  
+  if (str)
+    {
+      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+      strcpy (new_str, str);
+    }
+  else
+    new_str = NULL;
+  
+  return new_str;
+}
+
+int main (int argc, char *argv[])
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  /* This hangs on some systems (?)
+  system ("touch conf.sdltest");
+  */
+  { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = my_strdup("$min_sdl_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_sdl_version");
+     exit(1);
+   }
+
+   if (($sdl_major_version > major) ||
+      (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
+      (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
+    {
+      return 0;
+    }
+  else
+    {
+      printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
+      printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
+      printf("*** best to upgrade to the required version.\n");
+      printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
+      printf("*** to point to the correct copy of sdl-config, and remove the file\n");
+      printf("*** config.cache before re-running configure\n");
+      return 1;
+    }
+}
+
+],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_sdl" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$SDL_CONFIG" = "no" ; then
+       echo "*** The sdl-config script installed by SDL could not be found"
+       echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the SDL_CONFIG environment variable to the"
+       echo "*** full path to sdl-config."
+     else
+       if test -f conf.sdltest ; then
+        :
+       else
+          echo "*** Could not run SDL test program, checking why..."
+          CFLAGS="$CFLAGS $SDL_CFLAGS"
+          LIBS="$LIBS $SDL_LIBS"
+          AC_TRY_LINK([
+#include <stdio.h>
+#include "SDL.h"
+
+int main(int argc, char *argv[])
+{ return 0; }
+#undef  main
+#define main K_and_R_C_main
+],      [ return 0; ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding SDL or finding the wrong"
+          echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means SDL was incorrectly installed"
+          echo "*** or that you have moved SDL since it was installed. In the latter case, you"
+          echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     SDL_CFLAGS=""
+     SDL_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(SDL_CFLAGS)
+  AC_SUBST(SDL_LIBS)
+  rm -f conf.sdltest
+])
+
diff --git a/m4/gst-shout2.m4 b/m4/gst-shout2.m4
new file mode 100644 (file)
index 0000000..e85a767
--- /dev/null
@@ -0,0 +1,102 @@
+# Configure paths for libshout
+# Jack Moffitt <jack@icecast.org> 08-06-2001
+# Shamelessly stolen from Owen Taylor and Manish Singh
+
+dnl AM_PATH_SHOUT2([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libshout 2, and define SHOUT2_CFLAGS and SHOUT2_LIBS
+dnl
+AC_DEFUN([AM_PATH_SHOUT2],
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(shout2-prefix,[  --with-shout2-prefix=PFX   Prefix where libshout2 is installed (optional)], shout2_prefix="$withval", shout2_prefix="")
+AC_ARG_ENABLE(shout2test, [  --disable-shout2test       Do not try to compile and run a test shout2 program],, enable_shout2test=yes)
+
+  if test "x$shout2_prefix" != "xNONE" ; then
+    SHOUT2_CFLAGS="-I$shout2_prefix/include"
+    SHOUT2_LIBS="-L$shout2_prefix/lib"
+  elif test "x$prefix" != "x"; then
+    SHOUT2_CFLAGS="-I$prefix/include"
+    SHOUT2_LIBS="-L$prefix/lib"
+  fi
+
+  SHOUT2_LIBS="$SHOUT2_LIBS -lshout -lpthread"
+
+  case $host in
+  *-*-solaris*)
+       SHOUT2_LIBS="$SHOUT2_LIBS -lnsl -lsocket -lresolv"
+  esac
+
+  AC_MSG_CHECKING(for shout2)
+  no_shout2=""
+
+  if test "x$enable_shout2test" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $SHOUT2_CFLAGS $OGG_CFLAGS $VORBIS_CFLAGS"
+    LIBS="$LIBS $SHOUT2_LIBS $OGG_LIBS $VORBIS_LIBS"
+dnl
+dnl Now check if the installed shout2 is sufficiently new.
+dnl
+      rm -f conf.shout2test
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <shout/shout.h>
+
+int main ()
+{
+  int major, minor, patch;
+
+  system("touch conf.shout2test");
+  shout_version(&major, &minor, &patch);
+  if (major < 2)
+    return 1;
+  return 0;
+}
+
+],, no_shout2=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_shout2" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.shout2test ; then
+       :
+     else
+       echo "*** Could not run Shout2 test program, checking why..."
+       CFLAGS="$CFLAGS $SHOUT2_CFLAGS $OGG_CFLAGS $VORBIS_CFLAGS"
+       LIBS="$LIBS $SHOUT2_LIBS $OGG_LIBS $VORBIS_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <shout/shout.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding Shout2 or finding the wrong"
+       echo "*** version of Shout2. If it is not finding Shout2, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means Shout2 was incorrectly installed"
+       echo "*** or that you have moved Shout2 since it was installed. In the latter case, you"
+       echo "*** may want to edit the shout-config script: $SHOUT2_CONFIG" ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     SHOUT2_CFLAGS=""
+     SHOUT2_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(SHOUT2_CFLAGS)
+  AC_SUBST(SHOUT2_LIBS)
+  rm -f conf.shout2test
+])
diff --git a/m4/gst-sid.m4 b/m4/gst-sid.m4
new file mode 100644 (file)
index 0000000..8ae2877
--- /dev/null
@@ -0,0 +1,39 @@
+dnl check for sidplay
+
+AC_DEFUN([GST_PATH_SIDPLAY],
+[
+AC_MSG_CHECKING([for libsidplay 1.36.x])
+
+AC_LANG_PUSH(C++)
+
+AC_CHECK_HEADER(sidplay/player.h, HAVE_SIDPLAY="yes", HAVE_SIDPLAY="no")
+
+if test $HAVE_SIDPLAY = "yes"; then
+  SIDPLAY_LIBS="-lsidplay"
+
+  AC_MSG_CHECKING([whether -lsidplay works])
+  ac_libs_safe=$LIBS
+
+  LIBS="-lsidplay"
+
+  AC_TRY_RUN([
+    #include <sidplay/player.h>
+    int main()
+    { sidTune tune = sidTune(0);  }
+    ],
+    HAVE_SIDPLAY="yes",
+    HAVE_SIDPLAY="no",
+    HAVE_SIDPLAY="no")
+
+  LIBS="$ac_libs_safe"
+
+  AC_MSG_RESULT([$HAVE_SIDPLAY])
+fi
+
+SIDPLAY_CFLAGS=
+SIDPLAY_LIBS="-lsidplay"
+AC_SUBST(SIDPLAY_CFLAGS)
+AC_SUBST(SIDPLAY_LIBS)
+
+AC_LANG_POP(C++)
+])
diff --git a/m4/gtk.m4 b/m4/gtk.m4
new file mode 100644 (file)
index 0000000..f2dd472
--- /dev/null
+++ b/m4/gtk.m4
@@ -0,0 +1,194 @@
+# Configure paths for GTK+
+# Owen Taylor     97-11-3
+
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+dnl
+AC_DEFUN([AM_PATH_GTK],
+[dnl 
+dnl Get the cflags and libraries from the gtk-config script
+dnl
+AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
+            gtk_config_prefix="$withval", gtk_config_prefix="")
+AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
+            gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
+AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
+                   , enable_gtktest=yes)
+
+  for module in . $4
+  do
+      case "$module" in
+         gthread) 
+             gtk_config_args="$gtk_config_args gthread"
+         ;;
+      esac
+  done
+
+  if test x$gtk_config_exec_prefix != x ; then
+     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
+     fi
+  fi
+  if test x$gtk_config_prefix != x ; then
+     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
+     fi
+  fi
+
+  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+  min_gtk_version=ifelse([$1], ,0.99.7,$1)
+  AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+  no_gtk=""
+  if test "$GTK_CONFIG" = "no" ; then
+    no_gtk=yes
+  else
+    GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
+    GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
+    gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_gtktest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GTK_CFLAGS"
+      LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK is sufficiently new. (Also sanity
+dnl checks the results of gtk-config to some extent
+dnl
+      rm -f conf.gtktest
+      AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.gtktest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_gtk_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_gtk_version");
+     exit(1);
+   }
+
+  if ((gtk_major_version != $gtk_config_major_version) ||
+      (gtk_minor_version != $gtk_config_minor_version) ||
+      (gtk_micro_version != $gtk_config_micro_version))
+    {
+      printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
+             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+             gtk_major_version, gtk_minor_version, gtk_micro_version);
+      printf ("*** was found! If gtk-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
+      printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
+  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+          (gtk_minor_version != GTK_MINOR_VERSION) ||
+           (gtk_micro_version != GTK_MICRO_VERSION))
+    {
+      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+            GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            gtk_major_version, gtk_minor_version, gtk_micro_version);
+    }
+#endif /* defined (GTK_MAJOR_VERSION) ... */
+  else
+    {
+      if ((gtk_major_version > major) ||
+        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+               gtk_major_version, gtk_minor_version, gtk_micro_version);
+        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
+        printf("*** correct copy of gtk-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_gtk" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$GTK_CONFIG" = "no" ; then
+       echo "*** The gtk-config script installed by GTK could not be found"
+       echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the GTK_CONFIG environment variable to the"
+       echo "*** full path to gtk-config."
+     else
+       if test -f conf.gtktest ; then
+        :
+       else
+          echo "*** Could not run GTK test program, checking why..."
+          CFLAGS="$CFLAGS $GTK_CFLAGS"
+          LIBS="$LIBS $GTK_LIBS"
+          AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GTK or finding the wrong"
+          echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+          echo "***"
+          echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+          echo "*** came with the system with the command"
+          echo "***"
+          echo "***    rpm --erase --nodeps gtk gtk-devel" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GTK was incorrectly installed"
+          echo "*** or that you have moved GTK since it was installed. In the latter case, you"
+          echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GTK_CFLAGS=""
+     GTK_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GTK_CFLAGS)
+  AC_SUBST(GTK_LIBS)
+  rm -f conf.gtktest
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644 (file)
index 0000000..66bc76f
--- /dev/null
@@ -0,0 +1,180 @@
+# iconv.m4 serial AM6 (gettext-0.17)
+dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      am_cv_func_iconv=yes)
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);],
+        am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes)
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
+      dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      AC_TRY_RUN([
+#include <iconv.h>
+#include <string.h>
+int main ()
+{
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          return 1;
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        const char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            (char **) &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          return 1;
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  if (/* Try standardized names.  */
+      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
+      /* Try IRIX, OSF/1 names.  */
+      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
+      /* Try AIX names.  */
+      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
+      /* Try HP-UX names.  */
+      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
+    return 1;
+  return 0;
+}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
+        [case "$host_os" in
+           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+           *)            am_cv_func_iconv_works="guessing yes" ;;
+         esac])
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE(HAVE_ICONV, 1,
+      [Define if you have the iconv() function and it works.])
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    AC_MSG_CHECKING([how to link with libiconv])
+    AC_MSG_RESULT([$LIBICONV])
+  else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+  AC_SUBST(LIBICONV)
+  AC_SUBST(LTLIBICONV)
+])
+
+AC_DEFUN([AM_ICONV],
+[
+  AM_ICONV_LINK
+  if test "$am_cv_func_iconv" = yes; then
+    AC_MSG_CHECKING([for iconv declaration])
+    AC_CACHE_VAL(am_cv_proto_iconv, [
+      AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    AC_MSG_RESULT([$]{ac_t:-
+         }[$]am_cv_proto_iconv)
+    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
new file mode 100644 (file)
index 0000000..d3f0d90
--- /dev/null
@@ -0,0 +1,51 @@
+# intlmacosx.m4 serial 1 (gettext-0.17)
+dnl Copyright (C) 2004-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on MacOS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in MacOS X 10.2.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    gt_cv_func_CFPreferencesCopyAppValue,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
+       [CFPreferencesCopyAppValue(NULL, NULL)],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
+      [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in MacOS X 10.3.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
+      [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644 (file)
index 0000000..96c4e2c
--- /dev/null
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes ;;
+*)
+  acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      [re_direlt='/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      acl_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break ;;
+      *)
+       test "$with_gnu_ld" != yes && break ;;
+      esac
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644 (file)
index 0000000..e3d26fc
--- /dev/null
@@ -0,0 +1,709 @@
+# lib-link.m4 serial 13 (gettext-0.17)
+dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ(2.54)
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  define([Name],[translit([$1],[./-], [___])])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIB[]NAME"
+    AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  undefine([Name])
+  undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+  dnl Tell automake >= 1.10 to complain if config.rpath is missing.
+  m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+  ])
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  dnl Determine whether the user wants rpath handling at all.
+  AC_ARG_ENABLE(rpath,
+    [  --disable-rpath         do not hardcode runtime library paths],
+    :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+                               [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+  dnl Autoconf >= 2.61 supports dots in --with options.
+  define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
+[  --with-lib]N_A_M_E[-prefix[=DIR]  search for lib$1 in DIR/include and DIR/lib
+  --without-lib]N_A_M_E[-prefix     don't search for lib$1 in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  dnl Search the library and its dependencies in $additional_libdir and
+  dnl $LDFLAGS. Using breadth-first-seach.
+  LIB[]NAME=
+  LTLIB[]NAME=
+  INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='$1 $2'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+        dnl or AC_LIB_HAVE_LINKFLAGS call.
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+          else
+            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+            dnl that this library doesn't exist. So just drop it.
+            :
+          fi
+        else
+          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+          dnl and the already constructed $LIBNAME/$LTLIBNAME.
+          found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIB[]NAME; do
+              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+            dnl Found the library.
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+              dnl Linking with a shared library. We attempt to hardcode its
+              dnl directory into the executable's runpath, unless it's the
+              dnl standard /usr/lib.
+              if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
+                dnl No hardcoding is needed.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+              else
+                dnl Use an explicit option to hardcode DIR into the resulting
+                dnl binary.
+                dnl Potentially add DIR to ltrpathdirs.
+                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                dnl The hardcoding into $LIBNAME is system dependent.
+                if test "$acl_hardcode_direct" = yes; then
+                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+                  dnl resulting binary.
+                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                    dnl Use an explicit option to hardcode DIR into the resulting
+                    dnl binary.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    dnl Potentially add DIR to rpathdirs.
+                    dnl The rpathdirs will be appended to $LIBNAME at the end.
+                    haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                    dnl Rely on "-L$found_dir".
+                    dnl But don't add it if it's already contained in the LDFLAGS
+                    dnl or the already constructed $LIBNAME
+                    haveit=
+                    for x in $LDFLAGS $LIB[]NAME; do
+                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    else
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+                      dnl here, because this doesn't fit in flags passed to the
+                      dnl compiler. So give up. No hardcoding. This affects only
+                      dnl very old systems.
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                dnl Linking with a static library.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+              else
+                dnl We shouldn't come here, but anyway it's good to have a
+                dnl fallback.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+              fi
+            fi
+            dnl Assume the include files are nearby.
+            additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                LIB[]NAME[]_PREFIX="$basedir"
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+              dnl Potentially add $additional_includedir to $INCNAME.
+              dnl But don't add it
+              dnl   1. if it's the standard /usr/include,
+              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
+              dnl   3. if it's already present in $CPPFLAGS or the already
+              dnl      constructed $INCNAME,
+              dnl   4. if it doesn't exist as a directory.
+              if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INC[]NAME; do
+                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                      dnl Really add $additional_includedir to $INCNAME.
+                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+            dnl Look for dependencies.
+            if test -n "$found_la"; then
+              dnl Read the .la file. It defines the variables
+              dnl dlname, library_names, old_library, dependency_libs, current,
+              dnl age, revision, installed, dlopen, dlpreopen, libdir.
+              save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+              dnl We use only dependency_libs.
+              for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+                    dnl But don't add it
+                    dnl   1. if it's the standard /usr/lib,
+                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
+                    dnl   3. if it's already present in $LDFLAGS or the already
+                    dnl      constructed $LIBNAME,
+                    dnl   4. if it doesn't exist as a directory.
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                      dnl Potentially add DIR to rpathdirs.
+                      dnl The rpathdirs will be appended to $LIBNAME at the end.
+                      haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                      dnl Potentially add DIR to ltrpathdirs.
+                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                      haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                    dnl Handle this in the next round.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                    dnl Handle this in the next round. Throw away the .la's
+                    dnl directory; it is already contained in a preceding -L
+                    dnl option.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                    dnl Most likely an immediate library name.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+            dnl Didn't find the library; assume it is in the system directories
+            dnl known to the linker and runtime loader. (All the system
+            dnl directories known to the linker should also be known to the
+            dnl runtime loader, otherwise the system is severely misconfigured.)
+            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+      dnl Weird platform: only the last -rpath option counts, the user must
+      dnl pass all path elements in one option. We can arrange that for a
+      dnl single library, but not when more than one $LIBNAMEs are used.
+      alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+      acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+    else
+      dnl The -rpath options are cumulative.
+      for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+    dnl When using libtool, the option that works for both libraries and
+    dnl executables is -R. The -R options are cumulative.
+    for found_dir in $ltrpathdirs; do
+      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+    done
+  fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+  for element in [$2]; do
+    haveit=
+    for x in $[$1]; do
+      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      [$1]="${[$1]}${[$1]:+ }$element"
+    fi
+  done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644 (file)
index 0000000..a8684e1
--- /dev/null
@@ -0,0 +1,185 @@
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_LIB_ARG_WITH([lib-prefix],
+[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+  --without-lib-prefix    don't search for libraries in includedir and libdir],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  if test $use_additional = yes; then
+    dnl Potentially add $additional_includedir to $CPPFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/include,
+    dnl   2. if it's already present in $CPPFLAGS,
+    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_includedir" != "X/usr/include"; then
+      haveit=
+      for x in $CPPFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-I$additional_includedir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_includedir" = "X/usr/local/include"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_includedir"; then
+            dnl Really add $additional_includedir to $CPPFLAGS.
+            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+          fi
+        fi
+      fi
+    fi
+    dnl Potentially add $additional_libdir to $LDFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/lib,
+    dnl   2. if it's already present in $LDFLAGS,
+    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+      haveit=
+      for x in $LDFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-L$additional_libdir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux*) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_libdir"; then
+            dnl Really add $additional_libdir to $LDFLAGS.
+            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+          fi
+        fi
+      fi
+    fi
+  fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+  dnl Unfortunately, prefix and exec_prefix get only finally determined
+  dnl at the end of configure.
+  if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  $1
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64. The current
+  dnl practice is that on a system supporting 32-bit and 64-bit instruction
+  dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+  dnl libraries go under $prefix/lib. We determine the compiler's default
+  dnl mode by looking at the compiler's library search path. If at least
+  dnl of its elements ends in /lib64 or points to a directory whose absolute
+  dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+  dnl default, namely "lib".
+  acl_libdirstem=lib
+  searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+  if test -n "$searchpath"; then
+    acl_save_IFS="${IFS=       }"; IFS=":"
+    for searchdir in $searchpath; do
+      if test -d "$searchdir"; then
+        case "$searchdir" in
+          */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+          *) searchdir=`cd "$searchdir" && pwd`
+             case "$searchdir" in
+               */lib64 ) acl_libdirstem=lib64 ;;
+             esac ;;
+        esac
+      fi
+    done
+    IFS="$acl_save_IFS"
+  fi
+])
diff --git a/m4/libfame.m4 b/m4/libfame.m4
new file mode 100644 (file)
index 0000000..b570584
--- /dev/null
@@ -0,0 +1,182 @@
+dnl AM_PATH_LIBFAME([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for libfame, and define LIBFAME_CFLAGS and LIBFAME_LIBS
+dnl Vivien Chappelier 12/11/00
+dnl stolen from ORBit autoconf
+dnl
+AC_DEFUN([AM_PATH_LIBFAME],
+[dnl 
+dnl Get the cflags and libraries from the libfame-config script
+dnl
+AC_ARG_WITH(libfame-prefix,[  --with-libfame-prefix=PFX   Prefix where libfame is installed (optional)],
+            libfame_config_prefix="$withval", libfame_config_prefix="")
+AC_ARG_WITH(libfame-exec-prefix,[  --with-libfame-exec-prefix=PFX Exec prefix where libfame is installed (optional)],
+            libfame_config_exec_prefix="$withval", libfame_config_exec_prefix="")
+AC_ARG_ENABLE(libfametest, [  --disable-libfametest       Do not try to compile and run a test libfame program],
+                   , enable_libfametest=yes)
+
+  if test x$libfame_config_exec_prefix != x ; then
+     libfame_config_args="$libfame_config_args --exec-prefix=$libfame_config_exec_prefix"
+     if test x${LIBFAME_CONFIG+set} != xset ; then
+        LIBFAME_CONFIG=$libfame_config_exec_prefix/bin/libfame-config
+     fi
+  fi
+  if test x$libfame_config_prefix != x ; then
+     libfame_config_args="$libfame_config_args --prefix=$libfame_config_prefix"
+     if test x${LIBFAME_CONFIG+set} != xset ; then
+        LIBFAME_CONFIG=$libfame_config_prefix/bin/libfame-config
+     fi
+  fi
+
+  AC_PATH_PROG(LIBFAME_CONFIG, libfame-config, no)
+  min_libfame_version=ifelse([$1], , 0.9.0, $1)
+  AC_MSG_CHECKING(for libfame - version >= $min_libfame_version)
+  no_libfame=""
+  if test "$LIBFAME_CONFIG" = "no" ; then
+    no_libfame=yes
+  else
+    LIBFAME_CFLAGS=`$LIBFAME_CONFIG $libfame_config_args --cflags`
+    LIBFAME_LIBS=`$LIBFAME_CONFIG $libfame_config_args --libs`
+    libfame_config_major_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
+          sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    libfame_config_minor_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
+          sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    libfame_config_micro_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
+          sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_libfametest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $LIBFAME_CFLAGS"
+      LIBS="$LIBFAME_LIBS $LIBS"
+dnl
+dnl Now check if the installed LIBFAME is sufficiently new. (Also sanity
+dnl checks the results of libfame-config to some extent
+dnl
+      rm -f conf.libfametest
+      AC_TRY_RUN([
+#include <fame.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.libfametest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = strdup("$min_libfame_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_libfame_version");
+     exit(1);
+   }
+
+  if ((libfame_major_version != $libfame_config_major_version) ||
+      (libfame_minor_version != $libfame_config_minor_version) ||
+      (libfame_micro_version != $libfame_config_micro_version))
+    {
+      printf("\n*** 'libfame-config --version' returned %d.%d.%d, but Libfame (%d.%d.%d)\n", 
+             $libfame_config_major_version, $libfame_config_minor_version, $libfame_config_micro_version,
+             libfame_major_version, libfame_minor_version, libfame_micro_version);
+      printf ("*** was found! If libfame-config was correct, then it is best\n");
+      printf ("*** to remove the old version of libfame. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If libfame-config was wrong, set the environment variable LIBFAME_CONFIG\n");
+      printf("*** to point to the correct copy of libfame-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+#if defined (LIBFAME_MAJOR_VERSION) && defined (LIBFAME_MINOR_VERSION) && defined (LIBFAME_MICRO_VERSION)
+  else if ((libfame_major_version != LIBFAME_MAJOR_VERSION) ||
+          (libfame_minor_version != LIBFAME_MINOR_VERSION) ||
+           (libfame_micro_version != LIBFAME_MICRO_VERSION))
+    {
+      printf("*** libfame header files (version %d.%d.%d) do not match\n",
+            LIBFAME_MAJOR_VERSION, LIBFAME_MINOR_VERSION, LIBFAME_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            libfame_major_version, libfame_minor_version, libfame_micro_version);
+    }
+#endif /* defined (LIBFAME_MAJOR_VERSION) ... */
+  else
+    {
+      if ((libfame_major_version > major) ||
+        ((libfame_major_version == major) && (libfame_minor_version > minor)) ||
+        ((libfame_major_version == major) && (libfame_minor_version == minor) && (libfame_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of libfame (%d.%d.%d) was found.\n",
+               libfame_major_version, libfame_minor_version, libfame_micro_version);
+        printf("*** You need a version of libfame newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** libfame is always available from http://www-eleves.enst-bretagne.fr/~chappeli/fame\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the libfame-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of libfame, but you can also set the LIBFAME_CONFIG environment to point to the\n");
+        printf("*** correct copy of libfame-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_libfame=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_libfame" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$LIBFAME_CONFIG" = "no" ; then
+       echo "*** The libfame-config script installed by libfame could not be found"
+       echo "*** If libfame was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the LIBFAME_CONFIG environment variable to the"
+       echo "*** full path to libfame-config."
+     else
+       if test -f conf.libfametest ; then
+        :
+       else
+          echo "*** Could not run libfame test program, checking why..."
+          CFLAGS="$CFLAGS $LIBFAME_CFLAGS"
+          LIBS="$LIBS $LIBFAME_LIBS"
+          AC_TRY_LINK([
+#include <fame.h>
+#include <stdio.h>
+],      [ return ((libfame_major_version) || (libfame_minor_version) || (libfame_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding libfame or finding the wrong"
+          echo "*** version of LIBFAME. If it is not finding libfame, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+          echo "***" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means libfame was incorrectly installed"
+          echo "*** or that you have moved libfame since it was installed. In the latter case, you"
+          echo "*** may want to edit the libfame-config script: $LIBFAME_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     LIBFAME_CFLAGS=""
+     LIBFAME_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+
+  AC_SUBST(LIBFAME_CFLAGS)
+  AC_SUBST(LIBFAME_LIBS)
+  rm -f conf.libfametest
+])
diff --git a/m4/libmikmod.m4 b/m4/libmikmod.m4
new file mode 100644 (file)
index 0000000..9368d75
--- /dev/null
@@ -0,0 +1,216 @@
+# Configure paths for libmikmod
+#
+# Derived from glib.m4 (Owen Taylor 97-11-3)
+# Improved by Chris Butler
+#
+
+dnl AM_PATH_LIBMIKMOD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+dnl Test for libmikmod, and define LIBMIKMOD_CFLAGS, LIBMIKMOD_LIBS and
+dnl LIBMIKMOD_LDADD
+dnl
+AC_DEFUN([AM_PATH_LIBMIKMOD],
+[dnl 
+dnl Get the cflags and libraries from the libmikmod-config script
+dnl
+AC_ARG_WITH(libmikmod-prefix,
+  AC_HELP_STRING([--with-libmikmod-prefix=PFX],
+                 [prefix where libmikmod is installed (optional)]),
+  libmikmod_config_prefix="$withval", libmikmod_config_prefix="")
+
+AC_ARG_WITH(libmikmod-exec-prefix, 
+  AC_HELP_STRING([--with-libmikmod-exec-prefix=PFX],
+                 [exec prefix where libmikmod is installed (optional)]),
+  libmikmod_config_exec_prefix="$withval", libmikmod_config_exec_prefix="")
+
+AC_ARG_ENABLE(libmikmodtest,
+  AC_HELP_STRING([--disable-libmikmodtest],
+                 [Do not try to compile and run a test libmikmod program]),
+  , enable_libmikmodtest=yes)
+
+  if test x$libmikmod_config_exec_prefix != x ; then
+     libmikmod_config_args="$libmikmod_config_args --exec-prefix=$libmikmod_config_exec_prefix"
+     if test x${LIBMIKMOD_CONFIG+set} != xset ; then
+        LIBMIKMOD_CONFIG=$libmikmod_config_exec_prefix/bin/libmikmod-config
+     fi
+  fi
+  if test x$libmikmod_config_prefix != x ; then
+     libmikmod_config_args="$libmikmod_config_args --prefix=$libmikmod_config_prefix"
+     if test x${LIBMIKMOD_CONFIG+set} != xset ; then
+        LIBMIKMOD_CONFIG=$libmikmod_config_prefix/bin/libmikmod-config
+     fi
+  fi
+
+  AC_PATH_PROG(LIBMIKMOD_CONFIG, libmikmod-config, no)
+  min_libmikmod_version=ifelse([$1], ,3.1.5,$1)
+  AC_MSG_CHECKING(for libmikmod - version >= $min_libmikmod_version)
+  no_libmikmod=""
+  if test "$LIBMIKMOD_CONFIG" = "no" ; then
+    no_libmikmod=yes
+  else
+    LIBMIKMOD_CFLAGS=`$LIBMIKMOD_CONFIG $libmikmod_config_args --cflags`
+    LIBMIKMOD_LIBS=`$LIBMIKMOD_CONFIG $libmikmod_config_args --libs`
+    LIBMIKMOD_LDADD=`$LIBMIKMOD_CONFIG $libmikmod_config_args --ldadd`
+    libmikmod_config_major_version=`$LIBMIKMOD_CONFIG $libmikmod_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\1/'`
+    libmikmod_config_minor_version=`$LIBMIKMOD_CONFIG $libmikmod_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\2/'`
+    libmikmod_config_micro_version=`$LIBMIKMOD_CONFIG $libmikmod_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\3/'`
+    if test "x$enable_libmikmodtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+         AC_LANG_SAVE
+         AC_LANG_C
+      CFLAGS="$CFLAGS $LIBMIKMOD_CFLAGS $LIBMIKMOD_LDADD"
+      LIBS="$LIBMIKMOD_LIBS $LIBS"
+dnl
+dnl Now check if the installed libmikmod is sufficiently new. (Also sanity
+dnl checks the results of libmikmod-config to some extent
+dnl
+      rm -f conf.mikmodtest
+      AC_TRY_RUN([
+#include <mikmod.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+char* my_strdup (char *str)
+{
+  char *new_str;
+
+  if (str) {
+    new_str = malloc ((strlen (str) + 1) * sizeof(char));
+    strcpy (new_str, str);
+  } else
+    new_str = NULL;
+
+  return new_str;
+}
+
+int main()
+{
+  int major,minor,micro;
+  int libmikmod_major_version,libmikmod_minor_version,libmikmod_micro_version;
+  char *tmp_version;
+
+  system("touch conf.mikmodtest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = my_strdup("$min_libmikmod_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_libmikmod_version");
+     exit(1);
+   }
+
+  libmikmod_major_version=(MikMod_GetVersion() >> 16) & 255;
+  libmikmod_minor_version=(MikMod_GetVersion() >>  8) & 255;
+  libmikmod_micro_version=(MikMod_GetVersion()      ) & 255;
+
+  if ((libmikmod_major_version != $libmikmod_config_major_version) ||
+      (libmikmod_minor_version != $libmikmod_config_minor_version) ||
+      (libmikmod_micro_version != $libmikmod_config_micro_version))
+    {
+      printf("\n*** 'libmikmod-config --version' returned %d.%d.%d, but libmikmod (%d.%d.%d)\n", 
+             $libmikmod_config_major_version, $libmikmod_config_minor_version, $libmikmod_config_micro_version,
+             libmikmod_major_version, libmikmod_minor_version, libmikmod_micro_version);
+      printf ("*** was found! If libmikmod-config was correct, then it is best\n");
+      printf ("*** to remove the old version of libmikmod. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If libmikmod-config was wrong, set the environment variable LIBMIKMOD_CONFIG\n");
+      printf("*** to point to the correct copy of libmikmod-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+  else if ((libmikmod_major_version != LIBMIKMOD_VERSION_MAJOR) ||
+          (libmikmod_minor_version != LIBMIKMOD_VERSION_MINOR) ||
+           (libmikmod_micro_version != LIBMIKMOD_REVISION))
+    {
+      printf("*** libmikmod header files (version %ld.%ld.%ld) do not match\n",
+            LIBMIKMOD_VERSION_MAJOR, LIBMIKMOD_VERSION_MINOR, LIBMIKMOD_REVISION);
+      printf("*** library (version %d.%d.%d)\n",
+            libmikmod_major_version, libmikmod_minor_version, libmikmod_micro_version);
+    }
+  else
+    {
+      if ((libmikmod_major_version > major) ||
+        ((libmikmod_major_version == major) && (libmikmod_minor_version > minor)) ||
+        ((libmikmod_major_version == major) && (libmikmod_minor_version == minor) && (libmikmod_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of libmikmod (%d.%d.%d) was found.\n",
+               libmikmod_major_version, libmikmod_minor_version, libmikmod_micro_version);
+        printf("*** You need a version of libmikmod newer than %d.%d.%d.\n",
+              major, minor, micro);
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the libmikmod-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of libmikmod, but you can also set the LIBMIKMOD_CONFIG environment to point to the\n");
+        printf("*** correct copy of libmikmod-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_libmikmod=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+          AC_LANG_RESTORE
+     fi
+  fi
+  if test "x$no_libmikmod" = x ; then
+     AC_MSG_RESULT([yes, `$LIBMIKMOD_CONFIG --version`])
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$LIBMIKMOD_CONFIG" = "no" ; then
+       echo "*** The libmikmod-config script installed by libmikmod could not be found"
+       echo "*** If libmikmod was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the LIBMIKMOD_CONFIG environment variable to the"
+       echo "*** full path to libmikmod-config."
+     else
+       if test -f conf.mikmodtest ; then
+        :
+       else
+          echo "*** Could not run libmikmod test program, checking why..."
+          CFLAGS="$CFLAGS $LIBMIKMOD_CFLAGS"
+          LIBS="$LIBS $LIBMIKMOD_LIBS"
+                 AC_LANG_SAVE
+                 AC_LANG_C
+          AC_TRY_LINK([
+#include <mikmod.h>
+#include <stdio.h>
+],      [ return (MikMod_GetVersion()!=0); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding libmikmod or finding the wrong"
+          echo "*** version of libmikmod. If it is not finding libmikmod, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location. Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system."
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means libmikmod was incorrectly installed"
+          echo "*** or that you have moved libmikmod since it was installed. In the latter case, you"
+          echo "*** may want to edit the libmikmod-config script: $LIBMIKMOD_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+                 AC_LANG_RESTORE
+       fi
+     fi
+     LIBMIKMOD_CFLAGS=""
+     LIBMIKMOD_LIBS=""
+     LIBMIKMOD_LDADD=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(LIBMIKMOD_CFLAGS)
+  AC_SUBST(LIBMIKMOD_LIBS)
+  AC_SUBST(LIBMIKMOD_LDADD)
+  rm -f conf.mikmodtest
+])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644 (file)
index 0000000..828104c
--- /dev/null
@@ -0,0 +1,8001 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# This file 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.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+                  [m4_fatal([Libtool version $1 or higher is required],
+                            63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+       [m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+       [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+       [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+          m4_quote(lt_decl_varnames),
+       m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+                       lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+                                          [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+       dnl If the libtool generation code has been placed in $CONFIG_LT,
+       dnl instead of duplicating it all over again into config.status,
+       dnl then we will have config.status run $CONFIG_LT later, so it
+       dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_REPLACE_SHELLFNS
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],                 [_LT_LANG(C)],
+  [C++],               [_LT_LANG(CXX)],
+  [Go],                        [_LT_LANG(GO)],
+  [Java],              [_LT_LANG(GCJ)],
+  [Fortran 77],                [_LT_LANG(F77)],
+  [Fortran],           [_LT_LANG(FC)],
+  [Windows Resource],  [_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+       [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+       [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+       [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
+
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
+
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       AC_TRY_EVAL([lt_ar_try])
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#              [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+         [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+       [AC_CHECK_FUNC([dlopen],
+             [lt_cv_dlopen="dlopen"],
+         [AC_CHECK_LIB([dl], [dlopen],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+           [AC_CHECK_LIB([svld], [dlopen],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+             [AC_CHECK_LIB([dld], [dld_link],
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+             ])
+           ])
+         ])
+       ])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+         lt_cv_dlopen_self, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+           lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+         lt_cv_dlopen_self_static, [dnl
+         _LT_TRY_DLOPEN_SELF(
+           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+        [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+        [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+        [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+       [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[23]].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+        LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+        [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+        [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+       [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+       [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+         cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t@_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
+       else
+         echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       else
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+       # This hack is so that the source file can tell whether it is being
+       # built for inclusion in a dll (and should export symbols for example).
+       m4_if([$1], [GCJ], [],
+         [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+           fi
+           ;;
+         aCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           ;;
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd* | netbsdelf*-gnu)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+       ;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       ;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       *Sun\ F* | *Sun*Fortran*)
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+        *Intel*\ [[CF]]*Compiler*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+         ;;
+       *Portland\ Group*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+       [Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+       [How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+       [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         _LT_TAGVAR(whole_archive_flag_spec, $1)=
+         tmp_sharedflag='--shared' ;;
+       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+       ;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       _LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
+
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
+
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[[012]]|aix4.[[012]].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         _LT_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+       _LT_TAGVAR(link_all_deplibs, $1)=no
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+         _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         fi
+         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       _LT_TAGVAR(always_export_symbols, $1)=yes
+       _LT_TAGVAR(file_list_spec, $1)='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+       _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
+       ;;
+      *)
+       # Assume MSVC wrapper
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       # FIXME: Should let the user specify the lib program.
+       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       ;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+       m4_if($1, [], [
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         _LT_LINKER_OPTION([if $CC understands -b],
+           _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+           [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+           [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+         [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+       case $host_cpu in
+       hppa*64*|ia64*)
+         _LT_TAGVAR(hardcode_direct, $1)=no
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         ;;
+       *)
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         ;;
+       esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+         [lt_cv_irix_exported_symbol],
+         [save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          AC_LINK_IFELSE(
+            [AC_LANG_SOURCE(
+               [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+                             [C++], [[int foo (void) { return 0; }]],
+                             [Fortran 77], [[
+      subroutine foo
+      end]],
+                             [Fortran], [[
+      subroutine foo
+      end]])])],
+             [lt_cv_irix_exported_symbol=yes],
+             [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+       _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+       # Both c and cxx compiler support -rpath directly
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+       sni)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+         _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+       motorola)
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       _LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+       [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+       [$RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+         pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+         _LT_TAGVAR(allow_undefined_flag, $1)=
+         if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+         then
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+         else
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         fi
+         _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+       ])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+         $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+           # We have reworked collect2
+           :
+         else
+           # We have old collect2
+           _LT_TAGVAR(hardcode_direct, $1)=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           _LT_TAGVAR(hardcode_minus_L, $1)=yes
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+          else
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           _LT_SYS_MODULE_PATH_AIX([$1])
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           fi
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         _LT_TAGVAR(ld_shlibs, $1)=no
+         ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl*)
+         # Native MSVC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+         # no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=yes
+         _LT_TAGVAR(file_list_spec, $1)='@'
+         # Tell ltmain to make .lib files, not .a files.
+         libext=lib
+         # Tell ltmain to make .dll files, not .so files.
+         shrext_cmds=".dll"
+         # FIXME: Setting linknames here is a bad hack.
+         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
+         # The linker will not automatically build a static lib if we build a DLL.
+         # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+         # Don't use ranlib
+         _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+         _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
+               ;;
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
+         ;;
+       *)
+         # g++
+         # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+         # as there is no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=no
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+         else
+           _LT_TAGVAR(ld_shlibs, $1)=no
+         fi
+         ;;
+       esac
+       ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+       ;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                            # but as the default
+                                            # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+                                                # but as the default
+                                                # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+       _LT_TAGVAR(hardcode_direct, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+             fi
+           fi
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+           ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+           # Archives containing C++ object files must be created using
+           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
+             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 and above use weak symbols
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+           runpath_var=LD_RUN_PATH
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           ;;
+         xl* | mpixl* | bgxl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+             _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='func_echo_all'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+       esac
+       ;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       fi
+       # Workaround some broken pre-1.5 toolchains
+       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+       ;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+       ;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=func_echo_all
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
+       fi
+       ;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+               ;;
+           esac
+
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+             _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+             # Commands to make compiler produce verbose output that lists
+             # what "hidden" libraries, object files and flags are used when
+             # linking a shared library.
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
+           fi
+           ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+           case $host_os in
+             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+           output_verbose_link_cmd='func_echo_all'
+
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+           # The C++ compiler must be used to create the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
+          *)
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             fi
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+               *)
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+       _LT_TAGVAR(link_all_deplibs, $1)=yes
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
+
+       case $cc_basename in
+          CC*)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+             '"$_LT_TAGVAR(old_archive_cmds, $1)"
+           _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+             '"$_LT_TAGVAR(reload_cmds, $1)"
+           ;;
+         *)
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+        prev=$p
+        continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+        case ${prev} in
+        -L | -R)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+          else
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+        else
+          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+        fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+          _LT_TAGVAR(predep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+        fi
+       else
+        if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+          _LT_TAGVAR(postdep_objects, $1)="$p"
+        else
+          _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+        fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
+       fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([    ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644 (file)
index 0000000..5d9acd8
--- /dev/null
@@ -0,0 +1,384 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file 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.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+                     [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+                  [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+       [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+       [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+       [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+       [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+        [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
+       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+                [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+                [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+                [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+                [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+                [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644 (file)
index 0000000..9000a05
--- /dev/null
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file 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.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+            [m4_foreach([_Lt_suffix],
+               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+                [lt_append([$1], [$2], [$3])$4],
+                [$5])],
+         [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+       m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+       [$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+                     [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644 (file)
index 0000000..07a8602
--- /dev/null
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers                      -*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file 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.
+
+# @configure_input@
+
+# serial 3337 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644 (file)
index 0000000..c573da9
--- /dev/null
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file 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.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],                [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644 (file)
index 0000000..7967cc2
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,31 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_NLS],
+[
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE(nls,
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT($USE_NLS)
+  AC_SUBST(USE_NLS)
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644 (file)
index 0000000..0734762
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,449 @@
+# po.m4 serial 15 (gettext-0.17)
+dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[     ]*VARIABLE[     ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[  ]*VARIABLE[     ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+       @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+       \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+       @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+       \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644 (file)
index 0000000..a56365c
--- /dev/null
@@ -0,0 +1,92 @@
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ(2.50)
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  [[\\/]]* | ?:[[\\/]]*)
+    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in ifelse([$5], , $PATH, [$5]); do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+          if [$3]; then
+            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+    ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
diff --git a/missing b/missing
new file mode 100755 (executable)
index 0000000..86a8fc3
--- /dev/null
+++ b/missing
@@ -0,0 +1,331 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2012-01-06.13; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/packaging/gst-plugins-ugly-disable-gtk-doc.patch b/packaging/gst-plugins-ugly-disable-gtk-doc.patch
new file mode 100644 (file)
index 0000000..b365558
--- /dev/null
@@ -0,0 +1,13 @@
+Index: gst-plugins-ugly-0.10.18/autogen.sh
+===================================================================
+--- gst-plugins-ugly-0.10.18.orig/autogen.sh   2011-09-15 16:48:52.668952470 +0900
++++ gst-plugins-ugly-0.10.18/autogen.sh        2011-09-15 16:49:00.112951581 +0900
+@@ -30,7 +30,7 @@
+ fi
+-CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc'
++CONFIGURE_DEF_OPT='--enable-maintainer-mode'
+ autogen_options $@
diff --git a/packaging/gst-plugins-ugly.spec b/packaging/gst-plugins-ugly.spec
new file mode 100644 (file)
index 0000000..bf7cfb5
--- /dev/null
@@ -0,0 +1,77 @@
+Name:       gst-plugins-ugly
+Summary:    GStreamer plugins from the "ugly" set
+Version:    0.10.19
+Release:    6_1
+Group:      Applications/Multimedia
+License:    LGPLv2+
+Source0:    %{name}-%{version}.tar.gz
+Patch0 :    gst-plugins-ugly-disable-gtk-doc.patch
+BuildRequires:  gettext-tools
+BuildRequires:  which
+BuildRequires:  gst-plugins-base-devel
+BuildRequires:  pkgconfig(gstreamer-0.10) 
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(opencore-amrnb)
+BuildRequires:  pkgconfig(opencore-amrwb)
+
+%description
+ GStreamer is a streaming media framework, based on graphs of filters
+ which operate on media data.  Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related.  Its plugin-based architecture means
+ that new data types or processing capabilities can be added simply by
+ installing new plug-ins.
+ .
+ This packages contains plugins from the "ugly" set, a set of
+ good-quality plug-ins that might pose distribution problems.
+
+
+
+%prep
+%setup -q 
+%patch0 -p1
+
+
+%build
+./autogen.sh
+%configure --prefix=%{_prefix}\
+ --disable-static\
+ --disable-nls\
+ --with-html-dir=/tmp/dump\
+ --disable-examples\
+ --disable-dvdlpcmdec\
+ --disable-dvdsub\
+ --disable-iec958\
+ --disable-mpegstream\
+ --disable-synaesthesia\
+ --disable-a52dec\
+ --disable-cdio\
+ --disable-dvdread\
+ --disable-dvdnav\
+ --disable-mad\
+ --disable-mpeg2dec\
+ --disable-sidplay\
+ --disable-twolame\
+ --disable-x264
+
+
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+
+
+
+%files
+%manifest gst-plugins-ugly.manifest
+%defattr(-,root,root,-)
+%{_libdir}/gstreamer-0.10/libgstmpegaudioparse.so
+%{_libdir}/gstreamer-0.10/libgstasf.so
+%{_libdir}/gstreamer-0.10/libgstamrnb.so
+%{_libdir}/gstreamer-0.10/libgstamrwbdec.so
+%{_libdir}/gstreamer-0.10/libgstrmdemux.so
+%exclude %{_datadir}/gstreamer-0.10/presets/GstAmrnbEnc.prs
+
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
new file mode 100644 (file)
index 0000000..29c395a
--- /dev/null
@@ -0,0 +1,31 @@
+### all of the standard pc files we need to generate
+pcverfiles =  \
+       gstreamer-plugins-ugly-@GST_MAJORMINOR@.pc
+pcverfiles_uninstalled = \
+       gstreamer-plugins-ugly-@GST_MAJORMINOR@-uninstalled.pc
+
+### all-local: $(pcverfiles) $(pcverfiles_uninstalled)
+all-local: $(pcverfiles_uninstalled)
+
+cp_verbose = $(cp_verbose_$(V))
+cp_verbose_ = $(cp_verbose_$(AM_DEFAULT_VERBOSITY))
+cp_verbose_0 = @echo "  CP     $@";
+
+### how to generate versioned .pc files from .pc files in this dir
+%-@GST_MAJORMINOR@.pc: %.pc
+       $(cp_verbose)cp $< $@
+%-@GST_MAJORMINOR@-uninstalled.pc: %-uninstalled.pc
+       $(cp_verbose)cp $< $@
+
+# do not install for now
+# pkgconfigdir = $(libdir)/pkgconfig
+# pkgconfig_DATA = $(pcverfiles)
+
+CLEANFILES = $(pcverfiles) $(pcverfiles_uninstalled)
+# pcinfiles = \
+#           gstreamer-plugins-ugly.pc.in gstreamer-plugins-ugly-uninstalled.pc.in
+pcinfiles = \
+           gstreamer-plugins-ugly-uninstalled.pc.in
+
+DISTCLEANFILES = $(pcinfiles:.in=)
+EXTRA_DIST = $(pcinfiles)
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
new file mode 100644 (file)
index 0000000..082fa48
--- /dev/null
@@ -0,0 +1,558 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = pkgconfig
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(srcdir)/gstreamer-plugins-ugly-uninstalled.pc.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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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 = gstreamer-plugins-ugly-uninstalled.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+
+### all of the standard pc files we need to generate
+pcverfiles = \
+       gstreamer-plugins-ugly-@GST_MAJORMINOR@.pc
+
+pcverfiles_uninstalled = \
+       gstreamer-plugins-ugly-@GST_MAJORMINOR@-uninstalled.pc
+
+cp_verbose = $(cp_verbose_$(V))
+cp_verbose_ = $(cp_verbose_$(AM_DEFAULT_VERBOSITY))
+cp_verbose_0 = @echo "  CP     $@";
+
+# do not install for now
+# pkgconfigdir = $(libdir)/pkgconfig
+# pkgconfig_DATA = $(pcverfiles)
+CLEANFILES = $(pcverfiles) $(pcverfiles_uninstalled)
+# pcinfiles = \
+#           gstreamer-plugins-ugly.pc.in gstreamer-plugins-ugly-uninstalled.pc.in
+pcinfiles = \
+           gstreamer-plugins-ugly-uninstalled.pc.in
+
+DISTCLEANFILES = $(pcinfiles:.in=)
+EXTRA_DIST = $(pcinfiles)
+all: all-am
+
+.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 pkgconfig/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu pkgconfig/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):
+gstreamer-plugins-ugly-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/gstreamer-plugins-ugly-uninstalled.pc.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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 all-local
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+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)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+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 mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+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 -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+       clean-libtool distclean distclean-generic distclean-libtool \
+       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 \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       uninstall uninstall-am
+
+
+### all-local: $(pcverfiles) $(pcverfiles_uninstalled)
+all-local: $(pcverfiles_uninstalled)
+
+### how to generate versioned .pc files from .pc files in this dir
+%-@GST_MAJORMINOR@.pc: %.pc
+       $(cp_verbose)cp $< $@
+%-@GST_MAJORMINOR@-uninstalled.pc: %-uninstalled.pc
+       $(cp_verbose)cp $< $@
+
+# 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 --git a/pkgconfig/gstreamer-plugins-ugly-uninstalled.pc.in b/pkgconfig/gstreamer-plugins-ugly-uninstalled.pc.in
new file mode 100644 (file)
index 0000000..2a9ee09
--- /dev/null
@@ -0,0 +1,13 @@
+prefix=
+exec_prefix=
+libdir=@abs_top_builddir@/gst-libs/gst
+includedir=@abs_top_builddir@/gst-libs
+pluginsdir=@abs_top_builddir@
+
+Name: GStreamer Ugly Plugins, Uninstalled
+Description: Streaming media framework, ugly plugins, uninstalled
+Version: @VERSION@
+Requires: gstreamer-@GST_MAJORMINOR@ gstreamer-plugins-base-@GST_MAJORMINOR@
+
+Libs:
+Cflags:
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..f176326
--- /dev/null
@@ -0,0 +1 @@
+af az bg ca cs da de el en_GB eo es eu fi fr gl hu id it ja lt lv ms mt nb nl or pl pt_BR ro ru sk sl sq sr sv tr uk vi zh_CN
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..1283c32
--- /dev/null
@@ -0,0 +1,432 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.17
+GETTEXT_MACRO_VERSION = 0.17
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+# thomas: add GETTEXT_PACKAGE substitution as used in Makevars
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: check-macro-version all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# Ensure that the gettext macros and this Makefile.in.in are in sync.
+check-macro-version:
+       @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
+         || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
+              exit 1; \
+            }
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
+         package_gnu='GNU '; \
+       else \
+         package_gnu=''; \
+       fi; \
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+         '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+         *) \
+           $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+             --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+             --files-from=$(srcdir)/POTFILES.in \
+             --copyright-holder='$(COPYRIGHT_HOLDER)' \
+             --package-name="$${package_gnu}@PACKAGE@" \
+             --package-version='@VERSION@' \
+             --msgid-bugs-address="$$msgid_bugs_address" \
+           ;; \
+       esac
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       if test -f "$(srcdir)/$${lang}.po"; then \
+         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+       else \
+         $(MAKE) $${lang}.po-create; \
+       fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir) || exit 1; \
+         else \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+       echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+       exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..10ed9f6
--- /dev/null
@@ -0,0 +1,47 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(GETTEXT_PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER =
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = http://bugzilla.gnome.org/
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
+
+# Avoid line numbers in *.po, but keep them in *.pot.
+MSGMERGE = msgmerge --no-location
+MSGMERGE_UPDATE = msgmerge --no-location --update --backup=off
+MSGFILTER = msgfilter --no-location
+
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..baea2f9
--- /dev/null
@@ -0,0 +1,5 @@
+ext/cdio/gstcdiocddasrc.c
+ext/dvdread/dvdreadsrc.c
+ext/lame/gstlame.c
+ext/twolame/gsttwolame.c
+gst/asfdemux/gstasfdemux.c
diff --git a/po/Rules-quot b/po/Rules-quot
new file mode 100644 (file)
index 0000000..9c2a995
--- /dev/null
@@ -0,0 +1,47 @@
+# Special Makefile rules for English message catalogs with quotation marks.
+
+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
+
+.SUFFIXES: .insert-header .po-update-en
+
+en@quot.po-create:
+       $(MAKE) en@quot.po-update
+en@boldquot.po-create:
+       $(MAKE) en@boldquot.po-update
+
+en@quot.po-update: en@quot.po-update-en
+en@boldquot.po-update: en@boldquot.po-update-en
+
+.insert-header.po-update-en:
+       @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
+       if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       ll=`echo $$lang | sed -e 's/@.*//'`; \
+       LC_ALL=C; export LC_ALL; \
+       cd $(srcdir); \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "creation of $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+en@quot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
+
+en@boldquot.insert-header: insert-header.sin
+       sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
+
+mostlyclean: mostlyclean-quot
+mostlyclean-quot:
+       rm -f *.insert-header
diff --git a/po/af.gmo b/po/af.gmo
new file mode 100644 (file)
index 0000000..919cfb9
Binary files /dev/null and b/po/af.gmo differ
diff --git a/po/af.po b/po/af.po
new file mode 100644 (file)
index 0000000..91f8b17
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,249 @@
+# Translation of gstreamer plugin messages to Afrikaans. 
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins 0.7.6\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2004-03-18 14:16+0200\n"
+"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
+"Language-Team: Afrikaans <i18n@af.org.za>\n"
+"Language: af\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "Kon nie skryf na lêer \"%s\" nie."
+
+msgid "Could not open CD device for reading."
+msgstr "Kon nie CD-toestel oopmaak om te lees nie."
+
+#, fuzzy
+msgid "Disc is not an Audio CD."
+msgstr "Toestel is nie oop nie."
+
+msgid "Could not open DVD"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Could not open DVD title %d"
+msgstr "Kon nie vfs-lêer \"%s\" toemaak nie."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Kon nie skryf na lêer \"%s\" nie."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+msgid "This stream contains no data."
+msgstr ""
+
+msgid "Internal data stream error."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Kon nie skryf na lêer \"%s\" nie."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Kon nie vfs-lêer \"%s\" toemaak nie."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "Kon nie lêer \"%s\" oopmaak om in te skryf nie."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "Fout tydens toemaak van lêer \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "Kon nie lêer \"%s\" oopmaak om te lees nie."
+
+#~ msgid "No filename specified."
+#~ msgstr "Geen lêernaam gespesifiseer."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "Geen of ongeldige klanktoevoer, AVI-stroom sal korrup wees."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "Kon nie oudio-toestel \"%s\" oopmaak vir skryf nie."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "Kon nie beheertoestel \"%s\" oopmaak vir skryf nie."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "Kon nie oudio-toestel \"%s\" konfigureer nie."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "Kon nie klanktoestel \"%s\" verstel na %d Hz nie."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "Kon nie oudio-toestel \"%s\" toemaak nie."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "Kon nie beheertoestel \"%s\" toemaak nie."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "Kon nie video-toestel \"%s\" oopmaak vir skryf nie."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "Kon nie video-toestel \"%s\" toemaak nie."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "Kon nie skryf na toestel \"%s\" nie."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr "OSS-toestel \"%s\" is reeds in gebruik deur 'n ander program."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr "Kon nie toegang kry tot toestel \"%s\" nie, kyk na toegangsregte."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "Toestel \"%s\" bestaan nie."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "Kon nie toestel \"%s\" oopmaak vir skryf nie."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "Kon nie toestel \"%s\" oopmaak vir lees nie."
+
+#~ msgid "Volume"
+#~ msgstr "Volume"
+
+#~ msgid "Bass"
+#~ msgstr "Bas"
+
+#~ msgid "Treble"
+#~ msgstr "Treble"
+
+#~ msgid "Synth"
+#~ msgstr "Sintetiseerder"
+
+#~ msgid "PCM"
+#~ msgstr "PCM"
+
+#~ msgid "Speaker"
+#~ msgstr "Luidspreker"
+
+#~ msgid "Line-in"
+#~ msgstr "Lyn-in"
+
+#~ msgid "Microphone"
+#~ msgstr "Mikrofoon"
+
+#~ msgid "CD"
+#~ msgstr "CD"
+
+#~ msgid "Mixer"
+#~ msgstr "Menger"
+
+#~ msgid "PCM-2"
+#~ msgstr "PCM-2"
+
+#~ msgid "Record"
+#~ msgstr "Neem op"
+
+#~ msgid "In-gain"
+#~ msgstr "In-versterking"
+
+#~ msgid "Out-gain"
+#~ msgstr "Uit-versterking"
+
+#~ msgid "Line-1"
+#~ msgstr "Lyn-1"
+
+#~ msgid "Line-2"
+#~ msgstr "Lyn-2"
+
+#~ msgid "Line-3"
+#~ msgstr "Lyn-3"
+
+#~ msgid "Digital-1"
+#~ msgstr "Digitaal-1"
+
+#~ msgid "Digital-2"
+#~ msgstr "Digitaal-2"
+
+#~ msgid "Digital-3"
+#~ msgstr "Digitaal-3"
+
+#~ msgid "Phone-in"
+#~ msgstr "Telefoon-in"
+
+#~ msgid "Phone-out"
+#~ msgstr "Telefoon-uit"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Radio"
+#~ msgstr "Radio"
+
+#~ msgid "Monitor"
+#~ msgstr "Monitor"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "Luidspreker"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir lees nie."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "Geen lêernaam gespesifiseer."
+
+#, fuzzy
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "Kon nie vfs-lêer \"%s\" oopmaak vir skryf nie."
+
+#, fuzzy
+#~ msgid "No filename given"
+#~ msgstr "Geen lêernaam gespesifiseer."
+
+#~ msgid "No device specified."
+#~ msgstr "Geen toestel gespesifiseer"
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "Kon nie toestel \"%s\" oopmaak vir lees en skryf nie."
+
+#~ msgid "Device is open."
+#~ msgstr "Toestel is oop."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "Toestel \"%s\" is nie 'n vasleggingtoestel nie."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "Kon nie buffers vanaf toestel \"%s\" verkry nie."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "Kon nie genoeg buffers vanaf toestel \"%s\" kry nie."
diff --git a/po/az.gmo b/po/az.gmo
new file mode 100644 (file)
index 0000000..85821c6
Binary files /dev/null and b/po/az.gmo differ
diff --git a/po/az.po b/po/az.po
new file mode 100644 (file)
index 0000000..553136f
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,250 @@
+# Translation of 'gst-plugins' messages to Azerbaijani.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# Mətin Əmirov <metin@karegen.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-0.8.0\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2004-03-19 18:29+0200\n"
+"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
+"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
+"Language: az\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "\"%s\" faylına yazıla bilmədi."
+
+msgid "Could not open CD device for reading."
+msgstr "CD avadanlığı oxuma üçün açıla bilmədi."
+
+#, fuzzy
+msgid "Disc is not an Audio CD."
+msgstr "Avadanlıq açıq deyil."
+
+msgid "Could not open DVD"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Could not open DVD title %d"
+msgstr "\"%s\" vfs faylı bağlana bilmədi."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "\"%s\" faylına yazıla bilmədi."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+msgid "This stream contains no data."
+msgstr ""
+
+msgid "Internal data stream error."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "\"%s\" faylına yazıla bilmədi."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "\"%s\" vfs faylı bağlana bilmədi."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "\"%s\" faylı yazma üçün açıla bilmədi."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "\"%s\" faylı bağlana bilmədi."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "\"%s\" faylı oxuma üçün açıla bilmədi."
+
+#~ msgid "No filename specified."
+#~ msgstr "Fayl adı verilməyib."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "Səhv ya da olmayan audio girişi, AVI yayımı pozulacaqdır."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "\"%s\" audio avadanlığı yazma üçün açıla bilmədi."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "\"%s\" idarə avadanlığı yazma üçün açıla bilmədi."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "\"%s\" audio avadanlığı quraşdırıla bilmədi."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "\"%s\" audio avadanlığı %d Hz-ə keçirilə bilmədi."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "\"%s\" audio avadanlığı bağlana bilmədi."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "\"%s\" idarə avadanlığı bağlana bilmədi."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "\"%s\" video avadanlığı yazma üçün açıla bilmədi."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "\"%s\" video avadanlığı bağlana bilmədi."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "\"%s\" avadanlığına yazıla bilmədi."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr "\"%s\" OSS avadanlığı başqa bir proqram tərəfindən istifadədədir."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr "\"%s\" avadanlığına yetişə bilmədi, səlahiyyətlərini yoxlayın."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "\"%s\" avadanlığı mövcud deyil."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "\"%s\" avadanlığı yazma üçün açıla bilmədi."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "\"%s\" avadanlığı oxuma üçün açıla bilmədi."
+
+#~ msgid "Volume"
+#~ msgstr "Səs"
+
+#~ msgid "Bass"
+#~ msgstr "Bas"
+
+#~ msgid "Treble"
+#~ msgstr "İncə"
+
+#~ msgid "Synth"
+#~ msgstr "Sint"
+
+#~ msgid "PCM"
+#~ msgstr "PCM"
+
+#~ msgid "Speaker"
+#~ msgstr "Spiker"
+
+#~ msgid "Line-in"
+#~ msgstr "Xətd-giriş"
+
+#~ msgid "Microphone"
+#~ msgstr "Mikrofon"
+
+#~ msgid "CD"
+#~ msgstr "CD"
+
+#~ msgid "Mixer"
+#~ msgstr "Mikser"
+
+#~ msgid "PCM-2"
+#~ msgstr "PCM-2"
+
+#~ msgid "Record"
+#~ msgstr "Qeyd"
+
+#~ msgid "In-gain"
+#~ msgstr "Giriş-gain"
+
+#~ msgid "Out-gain"
+#~ msgstr "Çıxış-gain"
+
+#~ msgid "Line-1"
+#~ msgstr "Xətd-1"
+
+#~ msgid "Line-2"
+#~ msgstr "Xətd-2"
+
+#~ msgid "Line-3"
+#~ msgstr "Xətd-3"
+
+#~ msgid "Digital-1"
+#~ msgstr "Dijital-1"
+
+#~ msgid "Digital-2"
+#~ msgstr "Dijital-2"
+
+#~ msgid "Digital-3"
+#~ msgstr "Dijital-3"
+
+#~ msgid "Phone-in"
+#~ msgstr "Telefon-girişi"
+
+#~ msgid "Phone-out"
+#~ msgstr "Telefon-çıxışı"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Radio"
+#~ msgstr "Radio"
+
+#~ msgid "Monitor"
+#~ msgstr "Monitor"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "Spiker"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "\"%s\" vfs faylı oxuma üçün açıla bilmədi."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "Fayl adı verilməyib."
+
+#, fuzzy
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "\"%s\" vfs faylı yazma üçün açıla bilmədi."
+
+#, fuzzy
+#~ msgid "No filename given"
+#~ msgstr "Fayl adı verilməyib."
+
+#~ msgid "No device specified."
+#~ msgstr "Avadanlıq bildirilməyib."
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "\"%s\" avadanlığı oxuma və yazma üçün açıla bilmədi."
+
+#~ msgid "Device is open."
+#~ msgstr "Avadanlıq açıqdır."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "\"%s\" avadanlığı capture avadanlığı deyil."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "\"%s\" avadanlığından bufferlər alına bilmədi."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "\"%s\" avadanlığından kifayət qədər bufferlər alına bilmədi."
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644 (file)
index 0000000..6ffaf40
Binary files /dev/null and b/po/bg.gmo differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644 (file)
index 0000000..3e5baa0
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,79 @@
+# Bulgarian translation of gst-plugins-ugly.
+# Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Alexander Shopov <ash@kambanaria.org>, 2007, 2008, 2009, 2010, 2011.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 22:34+0300\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+msgid "Could not read from CD."
+msgstr "CD-то не може да бъде прочетено."
+
+msgid "Could not open CD device for reading."
+msgstr "Не може да се чете от устройството за CD-та."
+
+msgid "Disc is not an Audio CD."
+msgstr "Дискът не е аудио CD."
+
+msgid "Could not open DVD"
+msgstr "DVD-то не може да бъде отворено"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Заглавната част %d от DVD-то не може да бъде отворена"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Не може да се премине към раздел %d от заглавната част %d на DVD-то"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Заглавната част %d от DVD-то не може да бъде отворена. Интерактивни части не "
+"се поддържат от този елемент"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"DVD-то не може да бъде прочетено. Причината може да е, че DVD-то е шифрирано "
+"и не е инсталирана библиотека за дешифриране."
+
+msgid "Could not read DVD."
+msgstr "DVD-то не може да бъде прочетено."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Кодерът LAME не може да бъде настроен. Проверете настройките за кодиране."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Поисканата честота в битове %d kbit/s за свойството „%s“ не е позволена. Тя "
+"бе променена на %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Кодерът TwoLAME не може да бъде настроен. Проверете настройките за кодиране."
+
+msgid "This stream contains no data."
+msgstr "Потокът не съдържа данни."
+
+msgid "Internal data stream error."
+msgstr "Вътрешна грешка в потока от данни."
diff --git a/po/boldquot.sed b/po/boldquot.sed
new file mode 100644 (file)
index 0000000..4b937aa
--- /dev/null
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“\e[1m/g
+s/”/\e[0m”/g
+s/‘/‘\e[1m/g
+s/’/\e[0m’/g
diff --git a/po/ca.gmo b/po/ca.gmo
new file mode 100644 (file)
index 0000000..fecd102
Binary files /dev/null and b/po/ca.gmo differ
diff --git a/po/ca.po b/po/ca.po
new file mode 100644 (file)
index 0000000..c75a3fd
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,82 @@
+# Catalan translation for gstreamer.
+# Copyright © 2004, 2005, 2010 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# Jordi Mallach <jordi@sindominio.net>, 2004, 2005, 2010.
+# Jordi Estrada <jordi.estrada@yamaha-motor.es>, 2011.
+# Gil Forcada <gforcada@gnome.org>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2012-01-01 14:19+0100\n"
+"Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+msgid "Could not read from CD."
+msgstr "No s'ha pogut llegir des del CD."
+
+msgid "Could not open CD device for reading."
+msgstr "No s'ha pogut obrir el dispositiu de CD per a lectura."
+
+msgid "Disc is not an Audio CD."
+msgstr "El disc no és un CD d'àudio."
+
+msgid "Could not open DVD"
+msgstr "No s'ha pogut obrir el DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "No s'ha pogut obrir el títol %d del DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "No s'ha pogut anar al capítol %d del títol %d del DVD."
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"No s'ha pogut obrir el títol %d del DVD. Els títols interactius no són "
+"compatibles amb aquest element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"No s'ha pogut llegir el DVD. Possiblement el DVD està encriptat i la "
+"biblioteca de desencriptació de DVD no està instal·lada."
+
+msgid "Could not read DVD."
+msgstr "No s'ha pogut llegir el DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"No s'ha pogut configurar el codificador LAME. Comproveu els paràmetres de "
+"codificació."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"La taxa de bits %d kbit/s per a la propietat «%s» no és permesa. S'ha "
+"canviat la taxa de bits a %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"No s'ha pogut configurar el codificador TwoLAME. Comproveu els paràmetres de "
+"codificació."
+
+msgid "This stream contains no data."
+msgstr "Aquest flux no conté dades."
+
+msgid "Internal data stream error."
+msgstr "S'ha produït un error intern de flux de dades."
diff --git a/po/cs.gmo b/po/cs.gmo
new file mode 100644 (file)
index 0000000..e77bbf7
Binary files /dev/null and b/po/cs.gmo differ
diff --git a/po/cs.po b/po/cs.po
new file mode 100644 (file)
index 0000000..2bbf6f4
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,92 @@
+# Czech translations of gst-plugins-ugly.
+# Copyright (C) 2007, 2008, 2009 the author(s) of gst-plugins-ugly.
+# Copyright (C) 2004 Miloslav Trmac <mitr@volny.cz>.
+# This file is put in the public domain.
+# Miloslav Trmac <mitr@volny.cz>, 2004.
+# Petr Kovar <pknbe@volny.cz>, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.10.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-03-16 03:46+0100\n"
+"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+msgid "Could not read from CD."
+msgstr "Nezdařilo se čtení z CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Nezdařilo se otevření zařízení CD ke čtení."
+
+msgid "Disc is not an Audio CD."
+msgstr "Disk není zvukovým CD."
+
+msgid "Could not open DVD"
+msgstr "Nezdařilo se otevření DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nezdařilo se otevření titulu DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Nezdařil se přechod na kapitolu %d titulu DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nezdařilo se otevření titulu DVD %d. Interaktivní tituly nejsou tímto prvkem "
+"podporovány"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Nezdařilo se otevření DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Nezdařilo se nastavení kodéru LAME. Je nutné zkontrolovat parametry kódování."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Požadovaný datový tok %d kilobitů za sekundu není u vlastnosti \"%s\" "
+"povolen. Datový tok byl změněn na %d kilobitů za sekundu."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nezdařilo se nastavení kodéru TwoLAME. Je nutné zkontrolovat parametry "
+"kódování."
+
+msgid "This stream contains no data."
+msgstr "Tento proud neobsahuje žádná data."
+
+msgid "Internal data stream error."
+msgstr "Interní chyba datového proudu."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Neplatná informace o titulu na DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Nezdařilo se čtení informace o titulu u DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Nezdařilo se otevření zařízení DVD \"%s\"."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Nezdařilo se připravit hledání založené na PGC."
diff --git a/po/da.gmo b/po/da.gmo
new file mode 100644 (file)
index 0000000..685b3b5
Binary files /dev/null and b/po/da.gmo differ
diff --git a/po/da.po b/po/da.po
new file mode 100644 (file)
index 0000000..5bde59f
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,94 @@
+# Danish translation of gst-plugins-ugly.
+# Copyright (C) 2011 gst.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+#
+# Mogens Jaeger <mogens@jaeger.tf>, 2007.
+# Joe Hansen <joedalton2@yahoo.dk>, 2008, 2009, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-28 03:56+0100\n"
+"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Kunne ikke åbne cd."
+
+msgid "Could not open CD device for reading."
+msgstr "Kunne ikke åbne cd-enhed."
+
+msgid "Disc is not an Audio CD."
+msgstr "Disk er ikke en lyd-cd."
+
+msgid "Could not open DVD"
+msgstr "Kunne ikke åbne dvd"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Kunne ikke åbne dvd-titel %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Kunne ikke gå til kapitel %d i dvd-titel %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Kunne ikke åbne dvd-titel %d. Interaktive titler er ikke understøttet i "
+"dette element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Kunne ikke læse dvd. Dette kan være fordi dvd'en er krypteret og et dvd-"
+"dekrypteringsbibliotek ikke er installeret."
+
+msgid "Could not read DVD."
+msgstr "Kunne ikke læse dvd."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Kunne ikke konfigurere LAME-indkoderen. Kontroller dine indkoderparametre."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Den krævede bithastighed %d kbit/s for egenskab %s er ikke tilladt. "
+"Bithastigheden blev ændret til %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Kunne ikke konfigurere TwoLAME-indkoderen. Kontroller dine indkoderparametre."
+
+msgid "This stream contains no data."
+msgstr "Denne strøm indeholder ingen data."
+
+msgid "Internal data stream error."
+msgstr "Intern datastrømfejl."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Ugyldig titelinformation på dvd."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Kunne ikke læse titelinformation på dvd."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Kunne ikke åbne dvd-enhed %s."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Mislykkedes i at indstille PGC-baseret søgning."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Filen er krypteret og kan ikke afspilles."
diff --git a/po/de.gmo b/po/de.gmo
new file mode 100644 (file)
index 0000000..dc13f63
Binary files /dev/null and b/po/de.gmo differ
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..a948edb
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,99 @@
+# German translations for gst-plugins-ugly
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+#
+# PCM = PCM
+# Line-in = Eingang
+# Line-out = Ausgang
+# Pipeline = Weiterleitung
+# Stream = Strom
+# Christian Kirbach <christian.kirbach@googlemail.com>, 2009, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-28 00:04+0200\n"
+"Last-Translator: Christian Kirbach <christian.kirbach@googlemail.com>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Von der CD konnte nicht gelesen werden."
+
+msgid "Could not open CD device for reading."
+msgstr "Das CD-Laufwerk konnte nicht zum Lesen geöffnet werden."
+
+msgid "Disc is not an Audio CD."
+msgstr "Das Medium ist keine Audio-CD."
+
+msgid "Could not open DVD"
+msgstr "Die DVD konnte nicht geöffnet werden."
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Der Titel »%d« der DVD konnte nicht geöffnet werden."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Springen zu Kapitel %d des DVD-Titels »%d« schlug fehl"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Der DVD-Titel »%d« konnte nicht geöffnet werden. Interaktive Titel werden "
+"von diesem Element nicht unterstützt"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"DVD konnten nicht gelesen werden. Dies könnte daran liegen, dass die DVD "
+"verschlüsselt ist und eine Bibliothek zur DVD-Entschlüsselung nicht "
+"installiert ist."
+
+msgid "Could not read DVD."
+msgstr "DVD konnten nicht gelesen werden."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Konfigurieren des Enkodierers »LAME« schlug fehl. Überprüfen Sie die "
+"Parameter zum Enkodieren."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Die angeforderte Bitrate von %d kBit/s ist für die Eigenschaft »%s« nicht "
+"erlaubt. Die Bitrate wurde auf %d kBit/s abgeändert."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Konfigurieren des Enkodierers »TwoLAME« schlug fehl. Überprüfen Sie die "
+"Parameter zum Enkodieren. "
+
+msgid "This stream contains no data."
+msgstr "Dieser Strom enthält keine Daten."
+
+msgid "Internal data stream error."
+msgstr "Interner Datenstromfehler."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Ungültige Titelinformation auf der DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Die Titelinformationen der DVD konnten nicht gelesen werden."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Öffnen des DVD-Geräts »%s« schlug fehl."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "PGC-basiertes Suchen schlug fehl."
diff --git a/po/el.gmo b/po/el.gmo
new file mode 100644 (file)
index 0000000..597b6ba
Binary files /dev/null and b/po/el.gmo differ
diff --git a/po/el.po b/po/el.po
new file mode 100644 (file)
index 0000000..d228d6a
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,79 @@
+# Greek translation for gst-plugins-ugly package of GStreamer project.
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 GStreamer core team
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Simos Xenitellis <simos.lists@googlemail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.12.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-07-29 18:18+0300\n"
+"Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n"
+"Language-Team: Greek <team@lists.gnome.gr>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 0.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Δέν μπόρεσε να γινει ανάγνωση το CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Δέν ήταν δυνατό το άνοιγμα της συσκευής CD για την ανάγνωση. "
+
+msgid "Disc is not an Audio CD."
+msgstr "Ο δίσκος δεν είναι ένα ακουστικό CD."
+
+msgid "Could not open DVD"
+msgstr "Δεν ήταν δυνατό το άνοιγμα του DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Δεν ήταν δυνατό το άνοιγμα του τίτλου DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Αποτυχία μετάβασης στο κεφάλαιο %d του τίτλου του DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Δεν ήταν δυνατό το άνοιγμα του τίτλου DVD %d. Οι διαδραστικοί τίτλοι δεν "
+"υποστηρίζονται από αυτό το στοιχείο"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Δεν ήταν δυνατό το άνοιγμα του DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Αδυναμία ρύθμισης του κωδικοποιητή LAME. Ελέγξτε τις παραμέτρους "
+"κωδικοποίησης."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Ο αιτούμενος ρυθμός μετάδοσης %d kbit/s για την ιδιοκτησία '%s' δεν είναι "
+"επιτρεπτός.Ορυθμός μετάδοσης άλλαξε σε %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Αδυναμία ρύθμισης του κωδικοποιητή TwoLAME. Ελέγξτε τις παραμέτρους "
+"κωδικοποίησης."
+
+msgid "This stream contains no data."
+msgstr "Η ροή αυτή δεν περιέχει καθόλου δεδομένα."
+
+msgid "Internal data stream error."
+msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
new file mode 100644 (file)
index 0000000..fedb6a0
--- /dev/null
@@ -0,0 +1,25 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
diff --git a/po/en@quot.header b/po/en@quot.header
new file mode 100644 (file)
index 0000000..a9647fc
--- /dev/null
@@ -0,0 +1,22 @@
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
new file mode 100644 (file)
index 0000000..6286751
Binary files /dev/null and b/po/en_GB.gmo differ
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644 (file)
index 0000000..684a413
--- /dev/null
@@ -0,0 +1,255 @@
+# English (British) translation.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Gareth Owen <gowen72@yahoo.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins 0.8.1\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2004-04-26 10:41-0400\n"
+"Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
+"Language-Team: English (British) <en_gb@li.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "Could not write to file \"%s\"."
+
+msgid "Could not open CD device for reading."
+msgstr "Could not open CD device for reading."
+
+#, fuzzy
+msgid "Disc is not an Audio CD."
+msgstr "Device is not open."
+
+msgid "Could not open DVD"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Could not open DVD title %d"
+msgstr "Could not close vfs file \"%s\"."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Could not write to file \"%s\"."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+msgid "This stream contains no data."
+msgstr ""
+
+msgid "Internal data stream error."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Could not write to file \"%s\"."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Could not close vfs file \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "Could not open file \"%s\" for writing."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "Error closing file \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "Could not open file \"%s\" for reading."
+
+#~ msgid "No filename specified."
+#~ msgstr "No filename specified."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "No or invalid input audio, AVI stream will be corrupt."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "Could not open audio device \"%s\" for writing."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "Could not open control device \"%s\" for writing."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "Could not configure audio device \"%s\"."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "Could not set audio device \"%s\" to %d Hz."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "Could not close audio device \"%s\"."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "Could not close control device \"%s\"."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "Could not open video device \"%s\" for writing."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "Could not close video device \"%s\"."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "Could not write to device \"%s\"."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr "OSS device \"%s\" is already in use by another program."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr "Could not access device \"%s\", check its permissions."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "Device \"%s\" does not exist."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "Could not open device \"%s\" for writing."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "Could not open device \"%s\" for reading."
+
+#, fuzzy
+#~ msgid "Your OSS device could not be probed correctly"
+#~ msgstr "Your oss device could not be probed correctly"
+
+#~ msgid "Volume"
+#~ msgstr "Volume"
+
+#~ msgid "Bass"
+#~ msgstr "Bass"
+
+#~ msgid "Treble"
+#~ msgstr "Treble"
+
+#~ msgid "Synth"
+#~ msgstr "Synth"
+
+#~ msgid "PCM"
+#~ msgstr "PCM"
+
+#~ msgid "Speaker"
+#~ msgstr "Speaker"
+
+#~ msgid "Line-in"
+#~ msgstr "Line-in"
+
+#~ msgid "Microphone"
+#~ msgstr "Microphone"
+
+#~ msgid "CD"
+#~ msgstr "CD"
+
+#~ msgid "Mixer"
+#~ msgstr "Mixer"
+
+#~ msgid "PCM-2"
+#~ msgstr "PCM-2"
+
+#~ msgid "Record"
+#~ msgstr "Record"
+
+#~ msgid "In-gain"
+#~ msgstr "In-gain"
+
+#~ msgid "Out-gain"
+#~ msgstr "Out-gain"
+
+#~ msgid "Line-1"
+#~ msgstr "Line-1"
+
+#~ msgid "Line-2"
+#~ msgstr "Line-2"
+
+#~ msgid "Line-3"
+#~ msgstr "Line-3"
+
+#~ msgid "Digital-1"
+#~ msgstr "Digital-1"
+
+#~ msgid "Digital-2"
+#~ msgstr "Digital-2"
+
+#~ msgid "Digital-3"
+#~ msgstr "Digital-3"
+
+#~ msgid "Phone-in"
+#~ msgstr "Phone-in"
+
+#~ msgid "Phone-out"
+#~ msgstr "Phone-out"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Radio"
+#~ msgstr "Radio"
+
+#~ msgid "Monitor"
+#~ msgstr "Monitor"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "Speaker"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "Could not open vfs file \"%s\" for reading."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "No filename given"
+
+#, fuzzy
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "Could not open vfs file \"%s\" for writing."
+
+#~ msgid "No filename given"
+#~ msgstr "No filename given"
+
+#, fuzzy
+#~ msgid "Your OSS device doesn't support mono or stereo."
+#~ msgstr "Your oss device could not be probed correctly"
+
+#~ msgid "No device specified."
+#~ msgstr "No device specified."
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "Could not open device \"%s\" for reading and writing."
+
+#~ msgid "Device is open."
+#~ msgstr "Device is open."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "Device \"%s\" is not a capture device."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "Could not get buffers from device \"%s\"."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "Could not get enough buffers from device \"%s\"."
diff --git a/po/eo.gmo b/po/eo.gmo
new file mode 100644 (file)
index 0000000..c4848c7
Binary files /dev/null and b/po/eo.gmo differ
diff --git a/po/eo.po b/po/eo.po
new file mode 100644 (file)
index 0000000..42a9ad4
--- /dev/null
+++ b/po/eo.po
@@ -0,0 +1,76 @@
+# Esperanto translation for gst-plugins-ugly.
+# Copyright (C) 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-06-04 22:24+0200\n"
+"Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
+"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+msgid "Could not read from CD."
+msgstr "Ne eblis legi de la KD."
+
+msgid "Could not open CD device for reading."
+msgstr "Ne eblis malfermi la KD-aparaton por legi."
+
+msgid "Disc is not an Audio CD."
+msgstr "La disko ne estas son-KD."
+
+msgid "Could not open DVD"
+msgstr "Ne eblis malfermi la DVD-n"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Ne eblis malfermi la titolon \"%d\" de la DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Fiaksi iri al la ĉapitro %d de la DVD-titolo %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Ne eblis malfermi la DVD-titolon \"%d\". Interagaj titoloj ne estas "
+"suptenata de tiu elemento"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Ne eblis legi la DVD-n. Eble la DVD estas ĉifrita sed biblioteko por DVD-"
+"malĉifrado ne estas instalite."
+
+msgid "Could not read DVD."
+msgstr "Ne eblis legi la DVD-n."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Fiaskis agordi la LAME-kodilon. Kontrolu viajn kodad-parametrojn."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"La petita bitrapido je %d kBit/s ne estas permesata por la atributo \"%s\". "
+"La bitrapido estas ŝanĝite al %d kBit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "Fiaskis agordi la TwoLAME-kodilon. Kontrolu viajn kodad-parametrojn."
+
+msgid "This stream contains no data."
+msgstr "Tiu fluo enhavas neniun datumon."
+
+msgid "Internal data stream error."
+msgstr "Interna datum-flu-eraro."
diff --git a/po/es.gmo b/po/es.gmo
new file mode 100644 (file)
index 0000000..50a53da
Binary files /dev/null and b/po/es.gmo differ
diff --git a/po/es.po b/po/es.po
new file mode 100644 (file)
index 0000000..30f1f25
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,96 @@
+# translation of gst-plugins-ugly-0.10.17.2.po to Español
+# spanish translation for gst-plugins-ugly
+# This file is put in the public domain.
+# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2009, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-10-02 15:45+0200\n"
+"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+msgid "Could not read from CD."
+msgstr "No se pudo leer del CD."
+
+msgid "Could not open CD device for reading."
+msgstr "No se pudo abrir el dispositivo de CD para su lectura."
+
+msgid "Disc is not an Audio CD."
+msgstr "El disco no es un CD de sonido."
+
+msgid "Could not open DVD"
+msgstr "No se pudo abrir el DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "No se pudo abrir el título %d del DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Falló al ir al capítulo %d del título %d del DVD"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"No se pudo abrir el título %d del DVD. Los títulos interactivos no están "
+"soportados por este elemento."
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"No se pudo leer el DVD. Puede ser debido a que el DVD está cifrado y la "
+"biblioteca de descifrado del DVD no está instalada."
+
+msgid "Could not read DVD."
+msgstr "No se pudo leer el DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Falló al configurar el codificador LAME. Compruebe sus parámetros de "
+"codificación."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"La tasa de bits %d kbps solicitada para la propiedad «%s» no está permitida. "
+"La tasa de bits se cambió a %d kbps."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Falló al configurar el codificador TwoLAME. Compruebe sus parámetros de "
+"codificación."
+
+msgid "This stream contains no data."
+msgstr "Este medio no contiene datos."
+
+msgid "Internal data stream error."
+msgstr "Error del flujo de datos interno."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Información del título del DVD no válida."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "No se pudo leer la información del título para el DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Falló abrir el dispositivo DVD «%s»."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Falló al establecer la búsqueda basada en PGC."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Este archivo está cifrado y no se puede reproducir."
diff --git a/po/eu.gmo b/po/eu.gmo
new file mode 100644 (file)
index 0000000..7e77252
Binary files /dev/null and b/po/eu.gmo differ
diff --git a/po/eu.po b/po/eu.po
new file mode 100644 (file)
index 0000000..8f093c1
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,90 @@
+# translation of gst-plugins-ugly.master.po to Basque
+# Copyright (C) 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+#
+# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2009.
+# Mikel Olasagasti Uranga <hey_neken@mundurat.net>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.13.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2010-03-07 13:12+0200\n"
+"Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
+"Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Ezin izan da CDtik irakurri."
+
+msgid "Could not open CD device for reading."
+msgstr "Ezin izan da CD gailua ireki irakurtzeko."
+
+msgid "Disc is not an Audio CD."
+msgstr "Ez da Audio CD disko bat."
+
+msgid "Could not open DVD"
+msgstr "Ezin izan da DVDa ireki"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Ezin izan da DVDko %d. titulua ireki"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Huts egin du DVDko %2$d. tituluaren %1$d. kapitulura joatean"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Ezin izan da DVDko %d. titulua ireki. Elementu honek ez ditu onartzen titulu "
+"interaktiboak"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Ezin izan da DVDa ireki"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Huts egin du LAME kodetzailea konfiguratzean. Begiratu kodetze-parametroak "
+"ondo dauden."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Ez da onartzen '%2$s' propietatearentzat eskatutako %1$d kbit/s-ko bit-"
+"emaria. Bit-emaria aldatu egin da, eta orain %3$d kbit/s-koa da."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Huts egin du TwoLAME kodetzailea konfiguratzean. Begiratu kodetze-"
+"parametroak ondo dauden."
+
+msgid "This stream contains no data."
+msgstr "Korronte honek ez du daturik."
+
+msgid "Internal data stream error."
+msgstr "Datu-korrontearen barne-errorea."
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Ezin izan da CDtik irakurri."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Ezin izan da DVDko %d. titulua ireki"
diff --git a/po/fi.gmo b/po/fi.gmo
new file mode 100644 (file)
index 0000000..01e82a2
Binary files /dev/null and b/po/fi.gmo differ
diff --git a/po/fi.po b/po/fi.po
new file mode 100644 (file)
index 0000000..3b66a9f
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,95 @@
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Finnish messages for gst-plugins-ugly.
+# Copyright (C) 2007 Ilkka Tuohela.
+# Copyright (C) 2008-2009 Tommi Vainikainen.
+# Suomennos: http://gnome.fi/
+#
+# Ilkka Tuohela <hile@iki.fi>, 2007.
+# Tommi Vainikainen <thv@iki.fi>, 2008-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.10.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-03-10 20:41+0200\n"
+"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.2\n"
+
+msgid "Could not read from CD."
+msgstr "Lukeminen CD:ltä ei onnistunut."
+
+msgid "Could not open CD device for reading."
+msgstr "CD-laitetta ei voitu avata luettavaksi."
+
+msgid "Disc is not an Audio CD."
+msgstr "Levy ei ole ääni-CD."
+
+msgid "Could not open DVD"
+msgstr "DVD:tä ei voitu avata"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "DVD:n ohjelmaa %d ei voitu avata"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Ei voitu siirtyä kappaleeseen %d DVD:n ohjelmassa %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"DVD:n ohjelmaa %d ei voitu avata. Tämä elementti ei tue interaktiivisia "
+"ohjelmia"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "DVD:tä ei voitu avata"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "LAME-kodekkia ei voitu määritellä. Tarkista kodekkiasetuksesi."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Pyydetty bittinopeus %d kb/s ominaisuudelle \"%s\" ei ole sallittu. "
+"Bittinopeus asetettiin arvoon %d kb/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "TwoLAME-kodekkia ei voitu määritellä. Tarkista kodekkiasetuksesi."
+
+msgid "This stream contains no data."
+msgstr "Virta ei sisällä tietoa."
+
+msgid "Internal data stream error."
+msgstr "Sisäinen tietovirtavirhe."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "DVD:llä on virheellisiä ohjelmatietoja."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Ohjelmatietoja ei voitu lukea DVD:ltä."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "DVD-laitetta \"%s\" ei voitu avata."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "PGC-pohjaista siirtymistä ei voitu asettaa."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Tiedosto on salattu eikä sitä voi toistaa."
diff --git a/po/fr.gmo b/po/fr.gmo
new file mode 100644 (file)
index 0000000..facd05c
Binary files /dev/null and b/po/fr.gmo differ
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..8a7c4fe
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,79 @@
+# Translation of gst-plugins-ugly to French
+# Copyright (C) 2003-2011 GStreamer core team
+# This file is distributed under the same license as the gst-plugins-ugly package.
+#
+# Claude Paroz <claude@2xlibre.net>, 2008-2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-28 09:25+0200\n"
+"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Impossible de lire le CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Impossible d'ouvrir le périphérique CD pour la lecture."
+
+msgid "Disc is not an Audio CD."
+msgstr "Le disque n'est pas un CD audio."
+
+msgid "Could not open DVD"
+msgstr "Impossible d'ouvrir le DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Impossible d'ouvrir le titre %d du DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Impossible d'aller au chapitre %d du titre %d du DVD"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Impossible d'ouvrir le titre %d du DVD. Les titres interactifs ne sont pas "
+"pris en charge par cet élément"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Impossible de lire le DVD. Il se peut que le DVD soit chiffré et qu'aucune "
+"bibliothèque de déchiffrement ne soit installée."
+
+msgid "Could not read DVD."
+msgstr "Impossible de lire le DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"La configuration du codeur LAME a échoué. Vérifiez vos paramètres de codage."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Le débit binaire demandé de %d kbit/s pour la propriété « %s » n'est pas "
+"autorisé. Le débit binaire a été défini à %d kbits/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"La configuration du codeur TwoLAME a échoué. Vérifiez vos paramètres de "
+"codage."
+
+msgid "This stream contains no data."
+msgstr "Ce flux ne contient aucune donnée."
+
+msgid "Internal data stream error."
+msgstr "Erreur interne de flux de données."
diff --git a/po/gl.gmo b/po/gl.gmo
new file mode 100644 (file)
index 0000000..6d242eb
Binary files /dev/null and b/po/gl.gmo differ
diff --git a/po/gl.po b/po/gl.po
new file mode 100644 (file)
index 0000000..49eff7f
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,79 @@
+# Galician translation of gst-plugins-ugly.
+# Copyright (C) 2009 gst-plugins-ugly's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Fran Diéguez <frandieguez@ubuntu.com>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2010-05-30 15:49+0200\n"
+"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
+"Language-Team: Galician <proxecto@trasno.net>\n"
+"Language: gl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\\\n"
+
+msgid "Could not read from CD."
+msgstr "Non foi posíbel ler desde o CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Non foi posíbel abrir o dispositivo de CD para a súa lectura."
+
+msgid "Disc is not an Audio CD."
+msgstr "O disco non é un CD de son."
+
+msgid "Could not open DVD"
+msgstr "Non foi posíbel abrir o DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Non foi posíbel abrir o título %d do DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Produciuse un erro ao ir ao capítulo %d do título %d do DVD"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Non foi posíbel abrir o título %d de DVD. Este elemento non é compatíbel cos "
+"títulos interactivos"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Non foi posíbel abrir o DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Produciuse un erro ao configurar o codificador LAME. Comprobe os seus "
+"parámetros de codificación."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Non se permite o bitrate solicitado %d kbit/s para a propiedade '%s'. O "
+"bitrate cambiouse a %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Produciuse un fallo ao configurar o codificador TwoLAME. Comprobe os seus "
+"parámetros de codificación."
+
+msgid "This stream contains no data."
+msgstr "Este fluxo non contén datos."
+
+msgid "Internal data stream error."
+msgstr "Erro de fluxo de datos interno."
diff --git a/po/gst-plugins-ugly-0.10.pot b/po/gst-plugins-ugly-0.10.pot
new file mode 100644 (file)
index 0000000..de5afdb
--- /dev/null
@@ -0,0 +1,84 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.19\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ext/cdio/gstcdiocddasrc.c:201
+msgid "Could not read from CD."
+msgstr ""
+
+#: ext/cdio/gstcdiocddasrc.c:276
+msgid "Could not open CD device for reading."
+msgstr ""
+
+#: ext/cdio/gstcdiocddasrc.c:283
+msgid "Disc is not an Audio CD."
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:224 ext/dvdread/dvdreadsrc.c:231
+msgid "Could not open DVD"
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:238 ext/dvdread/dvdreadsrc.c:604
+#: ext/dvdread/dvdreadsrc.c:611
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:244
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:618
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:964
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#: ext/dvdread/dvdreadsrc.c:967
+msgid "Could not read DVD."
+msgstr ""
+
+#: ext/lame/gstlame.c:616
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#: ext/lame/gstlame.c:720 ext/twolame/gsttwolame.c:496
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+#: ext/twolame/gsttwolame.c:421
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+#: gst/asfdemux/gstasfdemux.c:397
+msgid "This stream contains no data."
+msgstr ""
+
+#: gst/asfdemux/gstasfdemux.c:404 gst/asfdemux/gstasfdemux.c:1673
+msgid "Internal data stream error."
+msgstr ""
diff --git a/po/hu.gmo b/po/hu.gmo
new file mode 100644 (file)
index 0000000..651504b
Binary files /dev/null and b/po/hu.gmo differ
diff --git a/po/hu.po b/po/hu.po
new file mode 100644 (file)
index 0000000..674c386
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,90 @@
+# Hungarian translation of gst-plugins-ugly
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+#
+# Gabor Kelemen <kelemeng@gnome.hu>, 2007, 2008, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.10.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-04-20 01:48+0200\n"
+"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "A CD nem olvasható."
+
+msgid "Could not open CD device for reading."
+msgstr "Nem nyitható meg a CD eszköz olvasásra."
+
+msgid "Disc is not an Audio CD."
+msgstr "A lemez nem hang CD."
+
+msgid "Could not open DVD"
+msgstr "A DVD nem nyitható meg"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nem nyitható meg a(z) %d. DVD cím"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "A(z) $%2d. DVD cím $%1d. fejezetére ugrás meghiúsult"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nem nyitható meg a(z) %d. DVD cím. Ez az elem nem támogatja az interaktív "
+"címeket."
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "A DVD nem nyitható meg"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"A LAME kódoló beállítása meghiúsult. Ellenőrizze a kódolás beállításait."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"A kért %d kbit/s bitsebesség nem engedélyezett a(z) „%s” tulajdonsághoz. A "
+"bitsebesség módosítva %d kbit/s-re."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"A TwoLAME kódoló beállítása meghiúsult. Ellenőrizze a kódolás beállításait."
+
+msgid "This stream contains no data."
+msgstr "Ez az adatfolyam nem tartalmaz adatokat."
+
+msgid "Internal data stream error."
+msgstr "Belső adatfolyam-hiba."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "A DVD címinformációi érvénytelenek."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "A DVD címinformációi nem olvashatók."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Nem nyitható meg a DVD eszköz („%s”)."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "A PGC alapú keresés beállítása meghiúsult."
diff --git a/po/id.gmo b/po/id.gmo
new file mode 100644 (file)
index 0000000..5efdb97
Binary files /dev/null and b/po/id.gmo differ
diff --git a/po/id.po b/po/id.po
new file mode 100644 (file)
index 0000000..f3e3533
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,86 @@
+# Indonesian translations for gst-plugins-ugly package.
+# This file is put in the public domain.
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2009-2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2012-01-28 11:39+0700\n"
+"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Tak dapat membaca dari CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Tak dapat membuka divais CD untuk dibaca."
+
+msgid "Disc is not an Audio CD."
+msgstr "Cakram bukan CD Audio."
+
+msgid "Could not open DVD"
+msgstr "Tak dapat membuka DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Tak dapat membuka judul DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Gagal pergi ke bab %d dari judul DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Tak dapat membuka judul DVD %d. Judul interaktif tidak didukung oleh elemen "
+"ini"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Tak dapat membaca DVD. Hal ini karena DVD terenkripsi dan pustaka dekripsi "
+"DVD tidak diinstal."
+
+msgid "Could not read DVD."
+msgstr "Tak dapat membaca DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Gagal mengatur penyandi LAME. Cek parameter penyandian anda."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Bitrasi %d kbit/s yang diminta untuk properti '%s' tidak diizinkan. Bitrasi "
+"diubah ke %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "Gagal mengatur penyandi TwoLAME. Cek parameter penyandian anda."
+
+msgid "This stream contains no data."
+msgstr "Arus ini tidak berisi data."
+
+msgid "Internal data stream error."
+msgstr "Galat arus data internal."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Informasi judul tidak sah pada DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Tak dapat membaca informasi judul untuk DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Gagal membuka divais DVD '%s'."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Gagal mengatur pencarian berbasis PGC."
diff --git a/po/insert-header.sin b/po/insert-header.sin
new file mode 100644 (file)
index 0000000..b26de01
--- /dev/null
@@ -0,0 +1,23 @@
+# Sed script that inserts the file called HEADER before the header entry.
+#
+# At each occurrence of a line starting with "msgid ", we execute the following
+# commands. At the first occurrence, insert the file. At the following
+# occurrences, do nothing. The distinction between the first and the following
+# occurrences is achieved by looking at the hold space.
+/^msgid /{
+x
+# Test if the hold space is empty.
+s/m/m/
+ta
+# Yes it was empty. First occurrence. Read the file.
+r HEADER
+# Output the file's contents by reading the next line. But don't lose the
+# current line while doing this.
+g
+N
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/it.gmo b/po/it.gmo
new file mode 100644 (file)
index 0000000..d243f31
Binary files /dev/null and b/po/it.gmo differ
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..a0d351e
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,92 @@
+# Italian translation for gst-plugins-ugly package of GStreamer project.
+# Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 GStreamer core team
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Luca Ferretti <elle.uca@infinito.it>, 2007, 2008, 2009.Luca Ferretti <elle.uca@infinito.it>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.11.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-06-14 12:31+0200\n"
+"Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Impossibile leggere dal CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Impossibile aprire il dispositivo CD in lettura."
+
+msgid "Disc is not an Audio CD."
+msgstr "Il disco non è un CD audio."
+
+msgid "Could not open DVD"
+msgstr "Impossibile aprire il DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Impossibile aprire il titolo %d del DVD"
+
+# go --> open (più comune in italiano)
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Apertura del capitolo %d del titolo %d del DVD non riuscita"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Impossibile aprire il titolo %d del DVD. I titoli interattivi non sono "
+"supportati da questo elemento"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Impossibile aprire il DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Configurazione dell'encoder LAME non riuscita. Verificare i propri parametri "
+"di codifica."
+
+# NEW
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Il bitrate richiesto (%d kbit/s) per la proprietà \"%s\" non è consentito. "
+"Il bitrate è stato cambiato a %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Configurazione dell'encoder TwoLAME non riuscita. Verificare i propri "
+"parametri di codifica."
+
+# NEW
+msgid "This stream contains no data."
+msgstr "Questo stream non contiene alcun dato."
+
+msgid "Internal data stream error."
+msgstr "Errore interno dello stream di dati."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Informazioni del titolo non valide sul DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Impossibile leggere le informazioni del titolo per il DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Apertura del device DVD «%s» non riuscita."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Impostazione del posizionamento basato su PGC non riuscita."
diff --git a/po/ja.gmo b/po/ja.gmo
new file mode 100644 (file)
index 0000000..24286b9
Binary files /dev/null and b/po/ja.gmo differ
diff --git a/po/ja.po b/po/ja.po
new file mode 100644 (file)
index 0000000..455d796
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,91 @@
+# Japanese translation of gst-plugins-ugly
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Makoto Kato <makoto.kt@gmail.com>, 2009-2011
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 19:42+0900\n"
+"Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "CDを読むことができません。"
+
+msgid "Could not open CD device for reading."
+msgstr "読み込み用にCDデバイスを開くことができません。"
+
+msgid "Disc is not an Audio CD."
+msgstr "ディスクは音声CDではありません。"
+
+msgid "Could not open DVD"
+msgstr "DVDを開くことができません"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "DVDタイトル %d を開くことができません"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "DVDタイトル %2$d のチャプター %1$d へ移動できません"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"DVDタイトル %d を開くことができません。この要素はインタラクティブタイトルをサ"
+"ポートしていません。"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"DVDを読み込むことができませんでした。DVDが暗号化されているかDVDを解読するライ"
+"ブラリがインストールされていないからかもしれません。"
+
+msgid "Could not read DVD."
+msgstr "DVDを読み込むことができません。"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"LAMEエンコーダーの構成に失敗しました。パラメータをチェックしてください。"
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"要求されたビットレート %d kbit/s はプロパティ '%s' では許可されません。そのた"
+"めビットレートは %d kbit/s へ変更されました。"
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"TwoLAMEエンコーダーの構成に失敗しました。エンコード用のパラメータをチェックし"
+"てください。"
+
+msgid "This stream contains no data."
+msgstr "このストリームはデータを含んでいません。"
+
+msgid "Internal data stream error."
+msgstr "内部データストリームエラー。"
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "DVD上のタイトル情報が不正です。"
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "DVDからタイトル情報を読み込むことができません。"
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "DVDデバイス '%s' を開くことができません。"
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "プログラム・チェーン (PGC) のシークに失敗しました。"
diff --git a/po/lt.gmo b/po/lt.gmo
new file mode 100644 (file)
index 0000000..a72c626
Binary files /dev/null and b/po/lt.gmo differ
diff --git a/po/lt.po b/po/lt.po
new file mode 100644 (file)
index 0000000..085d30e
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,97 @@
+# translation of gst-plugins-ugly-0.10.7.2 to Lithuanian
+# This file is put in the public domain.
+#
+# Gintautas Miliauskas <gintas@akl.lt>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.7.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2008-05-14 02:52+0300\n"
+"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "Nepavyko perskaityti DVD įrašo informacijos."
+
+#, fuzzy
+msgid "Could not open CD device for reading."
+msgstr "Nepavyko atverti %d DVD įrašo"
+
+msgid "Disc is not an Audio CD."
+msgstr ""
+
+msgid "Could not open DVD"
+msgstr "Nepavyko atverti DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nepavyko atverti %d DVD įrašo"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Nepavyko peršokti į %2$d DVD įrašo %1$d dalį"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nepavyko atverti %d DVD įrašo. Šis elementas nepalaiko interaktyvių įrašų"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Nepavyko atverti DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Nepavyko sukonfigūruoti LAME kodavimo programos. Patikrinkite kodavimo "
+"parametrus."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Pageidautas bitų dažnis %d kbit/s savybei „%s“ neleidžiamas. Bitų dažnis "
+"pakeistas į %d kbit/s."
+
+#, fuzzy
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nepavyko sukonfigūruoti LAME kodavimo programos. Patikrinkite kodavimo "
+"parametrus."
+
+msgid "This stream contains no data."
+msgstr "Šiame sraute nėra duomenų."
+
+msgid "Internal data stream error."
+msgstr ""
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Netaisyklinga DVD įrašo informacija."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Nepavyko perskaityti DVD įrašo informacijos."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Nepavyko atverti DVD įrenginio „%s“."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Nepavyko nustatyti PGC paieškos."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Šis failas užšifruotas ir negali būti parodytas."
diff --git a/po/lv.gmo b/po/lv.gmo
new file mode 100644 (file)
index 0000000..f7ad00a
Binary files /dev/null and b/po/lv.gmo differ
diff --git a/po/lv.po b/po/lv.po
new file mode 100644 (file)
index 0000000..40b1aba
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,89 @@
+# Latvain translation of gst-plugins
+# This file is put in the public domain.
+# Arvis Lācis <arvis.lacis@inbox.lv>, 2009.
+# Rihards Prieditis <rprieditis@gmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-09-02 12:04-0000\n"
+"Last-Translator: Rihards Priedītis <rprieditis@gmail.com>\n"
+"Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
+"Language: lv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+msgid "Could not read from CD."
+msgstr "Nevar nolasīt no CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Nevarēja atvērt CD ierīci lasīšanai."
+
+msgid "Disc is not an Audio CD."
+msgstr "Disks nav Audio CD."
+
+msgid "Could not open DVD"
+msgstr "Nevar atvērt DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nevar atvērt DVD virsrakstu %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Neizdevās pāriet uz %d nodaļu DVD virsrakstā %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nevar atvērt DVD virsrakstu %d. Šis elements nenodrošina interaktīvos "
+"virsrakstus."
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Nevarēja nolasīt DVD. Iespējams, ka DVD ir šifrēts un DVD atšifrēšanas "
+"bibliotēka nav instalēta."
+
+msgid "Could not read DVD."
+msgstr "Nevar nolasīt  DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Neizdevās uzstādīt LAME kodētāju. Pārbaudiet jūsu kodējuma parametrus."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Pieprasītais straumēšanas ātrums %d kbiti/s nepieciešamajai īpašībai \"%s\" "
+"nav atļauts. Straumēšanas ātrums tika mainīts uz %d kbitiem/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nezidevās uzstādīt TwoLAME kodētāju. Pārbaudiet jūsu kodējuma parametrus."
+
+msgid "This stream contains no data."
+msgstr "Šī straume nesatur datus."
+
+msgid "Internal data stream error."
+msgstr "Iekšējās datu plūsmas kļūda."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Nederīga DVD virsraksta informācija."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Nevarēja nolasīt virsrakstu informāciju no DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Neizdevās atvērt DVD ierīci \"%s\"."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Neizdevās uzstādīt PCG balstīto meklēšanu."
diff --git a/po/ms.gmo b/po/ms.gmo
new file mode 100644 (file)
index 0000000..a073b6b
Binary files /dev/null and b/po/ms.gmo differ
diff --git a/po/ms.po b/po/ms.po
new file mode 100644 (file)
index 0000000..bb0e13f
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,86 @@
+# translation of gst-plugins-ugly-0.10.11.2.po to Malay
+# This file is put in the public domain.
+#
+# Muhammad Najmi bin Ahmad Zabidi <najmi.zabidi@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.11.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-07-16 15:07+0800\n"
+"Last-Translator: Muhammad Najmi bin Ahmad Zabidi <najmi.zabidi@gmail.com>\n"
+"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
+"Language: ms\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+msgid "Could not read from CD."
+msgstr "Tidak dapat baca dari CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Tidak dapat buka peranti CD untuk baca."
+
+msgid "Disc is not an Audio CD."
+msgstr "Cakera bukan CD Audio"
+
+msgid "Could not open DVD"
+msgstr "Tidak dapat buka DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Tidak dapat buka tajuk %d DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Gagal untuk ke bab %d pata tajuk DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Gagal buka tajuk %d DVD. Tajuk interaktrif tidak disokong oleh elemen ini"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Tidak dapat buka DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Gagal mengkonfigur pengekod LAME. Periksa parameter pengenkod anda."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Kadarbit %d yang diminta untuk properti '%s' tidak dibenarkan. Kadarbit "
+"telah ditukar ke %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Gagal mengkonfigur pengenkod TwoLAME. Periksa parameter pengenkod anda."
+
+msgid "This stream contains no data."
+msgstr "Aliran ini tiada data."
+
+msgid "Internal data stream error."
+msgstr "Ralat aliran data dalaman."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Maklumat tajuk pada DVD tidak sah."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Tidak dapat baca maklumat tajuk pada DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Gagal membuka peranti DVD %s'."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Gagal untuk menetapkan carian berasaskan PGC."
diff --git a/po/mt.gmo b/po/mt.gmo
new file mode 100644 (file)
index 0000000..b94708b
Binary files /dev/null and b/po/mt.gmo differ
diff --git a/po/mt.po b/po/mt.po
new file mode 100644 (file)
index 0000000..ef413af
--- /dev/null
+++ b/po/mt.po
@@ -0,0 +1,91 @@
+# Maltese translation for gst-plugins-ugly.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# NAME OF AUTHOR <michelbugeja@rabatmalta.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.9.3\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2008-11-13 18:18+0100\n"
+"Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
+"Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
+"Language: mt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Maltese\n"
+"X-Poedit-Country: Malta\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Ma nistax naqra mis-CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Ma nistax niftaħ is-CD biex naqra."
+
+msgid "Disc is not an Audio CD."
+msgstr "Id-diska mijhiex CD tal-awdjo."
+
+msgid "Could not open DVD"
+msgstr "Ma nistax niftaħ DVD."
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Ma nistax niftaħ titlu %d tad-DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Problema biex immur kapitlu %d mit-titlu %d tad-DVD"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Ma nistax niftaħ titlu %d tad-DVD. Titli nterattivi mhux issapportjati minn "
+"dan l-element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Ma nistax niftaħ DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Problema biex nissetja LAME encoder. Iċċekkja l-parametri tal-encoding."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Mhux permess il-bitrate %d kbit/s rikjesta għal '%s'. Għalhekk il-bitrate "
+"ġiet mibdula għal %d kbit/s."
+
+#, fuzzy
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Problema biex nissetja LAME encoder. Iċċekkja l-parametri tal-encoding."
+
+msgid "This stream contains no data."
+msgstr "L-istream ma fiha l-ebda data."
+
+msgid "Internal data stream error."
+msgstr "Problema interna fid-data stream."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "L-informazzjoni tat-titlu tad-DVD mhux validu."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Ma nistax naqra l-informazzjoni tat-titlu tad-DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Problema biex niftaħ l-apparat tad-DVD '%s'."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Problema biex nissettja tfittxija bbażata fuq PGC."
diff --git a/po/nb.gmo b/po/nb.gmo
new file mode 100644 (file)
index 0000000..2472448
Binary files /dev/null and b/po/nb.gmo differ
diff --git a/po/nb.po b/po/nb.po
new file mode 100644 (file)
index 0000000..65d040d
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,91 @@
+# Norwegian bokmaal translation of gst-plugins-ugly.
+# This file is put in the public domain.
+# Kjartan Maraas <kmaraas@gnome.org>, 2004-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.6\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2007-11-02 14:39+0100\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "Kunne ikke lese tittelinformasjon for DVD."
+
+#, fuzzy
+msgid "Could not open CD device for reading."
+msgstr "Kunne ikke åpne DVD-tittel %d."
+
+msgid "Disc is not an Audio CD."
+msgstr ""
+
+msgid "Could not open DVD"
+msgstr "Kunne ikke åpne DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Kunne ikke åpne DVD-tittel %d."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Klarte ikke å gå til kapittel %d på DVD tittel %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Kunne ikke åpne DVD-tittel %d. Interaktive titler er ikke støttet av dette "
+"elementet"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Kunne ikke åpne DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Kunne ikke konfigurere LAME-koder. Sjekk parameterene for kodingen."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Forespurt bitrate %d kbit/s for egenskap «%s» er ikke tillatt. Bitraten ble "
+"endret til %d kbit/s."
+
+#, fuzzy
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "Kunne ikke konfigurere LAME-koder. Sjekk parameterene for kodingen."
+
+msgid "This stream contains no data."
+msgstr "Denne strømmen inneholde ikke data."
+
+msgid "Internal data stream error."
+msgstr ""
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Ugyldig tittelinformasjon på DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Kunne ikke lese tittelinformasjon for DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Kunne ikke åpne DVD-enhet «%s»."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Kunne ikke sette PGC-basert søking."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Denne filen er kryptert og kan ikke spilles av."
diff --git a/po/nl.gmo b/po/nl.gmo
new file mode 100644 (file)
index 0000000..7978e5e
Binary files /dev/null and b/po/nl.gmo differ
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..ed0ed1c
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,91 @@
+# translation of gst-plugins-ugly-0.10.17.2.nl.po to Dutch
+# Copyright (C) 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Freek de Kruijf <f.de.kruijf@gmail.com>, 2007, 2008, 2009, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-23 23:55+0200\n"
+"Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+msgid "Could not read from CD."
+msgstr "Kan niet van de CD lezen."
+
+msgid "Could not open CD device for reading."
+msgstr "Kan het CD-apparaat niet openen voor lezen."
+
+msgid "Disc is not an Audio CD."
+msgstr "De schrijf is geen audio-CD"
+
+msgid "Could not open DVD"
+msgstr "Kan DVD niet openen"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Kan DVD-titel %d niet openen"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Kan niet naar hoofdstuk %d van DVD-titel %d gaan"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Kan de DVD-titel %d niet openen. Interactieve titels worden door dit element "
+"niet ondersteund"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Kon dvd niet lezen. Dit kan veroorzaakt zijn omdat de dvd versleuteld is en "
+"een bibliotheek voor ontcijferen van een dvd niet is geïnstalleerd."
+
+msgid "Could not read DVD."
+msgstr "Kon dvd niet lezen"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Kan de LAME-encoder niet configureren. Controleer uw encodingparameters."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"De gevraagde bitsnelheid %d kbits/s voor eigenschap '%s' is niet toegestaan. "
+"De bitsnelheid is gewijzigd in %d kbits/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Kan de TwoLAME-encoder niet configureren. Controleer uw encodingparameters."
+
+msgid "This stream contains no data."
+msgstr "Deze stroom bevat geen gegevens."
+
+msgid "Internal data stream error."
+msgstr "Fout met interne gegevensstroom."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Ongeldige titelinformatie op de DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Kan de titelinformatie van de DVD niet lezen."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Kan het DVD-apparaat '%s' niet openen."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Kan op PGC gebaseerd zoeken niet instellen."
diff --git a/po/or.gmo b/po/or.gmo
new file mode 100644 (file)
index 0000000..25c0575
Binary files /dev/null and b/po/or.gmo differ
diff --git a/po/or.po b/po/or.po
new file mode 100644 (file)
index 0000000..862f4d3
--- /dev/null
+++ b/po/or.po
@@ -0,0 +1,270 @@
+# Oriya translation of gst-plugins-0.8.3.pot.
+# Copyright (C) 2004, Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-0.8.3 package.
+# Gora Mohanty <gora_mohanty@yahoo.co.in>, 2004.
+# $Id$
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-0.8.3\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2004-09-27 13:32+0530\n"
+"Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
+"Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
+"Language: or\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "\"%s\" ଫାଇଲ ଲେଖିହେଲା ନାହିଁ."
+
+msgid "Could not open CD device for reading."
+msgstr "ସି.ଡି. ଯନ୍ତ୍ର ପଢ଼ିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#, fuzzy
+msgid "Disc is not an Audio CD."
+msgstr "ଯନ୍ତ୍ର ଖୋଲାଯାଇ ନାହିଁ."
+
+msgid "Could not open DVD"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Could not open DVD title %d"
+msgstr "ଭି.ଏଫ.ଏସ. ଫାଇଲ \"%s\" ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "\"%s\" ଫାଇଲ ଲେଖିହେଲା ନାହିଁ."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+msgid "This stream contains no data."
+msgstr ""
+
+msgid "Internal data stream error."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "\"%s\" ଫାଇଲ ଲେଖିହେଲା ନାହିଁ."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "ଭି.ଏଫ.ଏସ. ଫାଇଲ \"%s\" ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "\"%s\" ଫାଇଲ ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "\"%s\" ଫାଇଲ ବନ୍ଦ କରିବାରେ ତ୍ରୁଟି."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "\"%s\" ଫାଇଲ ପଢ଼ିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "No filename specified."
+#~ msgstr "କୌଣସି ଫାଇଲନାମ ଉଲ୍ଲେଖିତ ହୋଇ ନାହିଁ."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "ନିବେଶ ଧ୍ବନି ନାହିଁ ବା ଅବୈଧ ଅଛି. ଏ.ଭି.ଆଇ. ଧାରା ଭ୍ରଷ୍ଟ ହୋଇଯିବ."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "\"%s\" ଧ୍ବନି ଯନ୍ତ୍ର ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "\"%s\" ନିୟନ୍ତ୍ରଣ ଯନ୍ତ୍ର ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "\"%s\" ଧ୍ବନି ଯନ୍ତ୍ର ବିନ୍ଯାସ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "\"%s\" ଧ୍ବନି ଯନ୍ତ୍ରକୁ %d ହର୍ଜରେ ବିନ୍ଯାସ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "\"%s\" ଧ୍ବନି ଯନ୍ତ୍ର ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "\"%s\" ନିୟନ୍ତ୍ରଣ ଯନ୍ତ୍ର ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "\"%s\" ଭିଡିଓ ଯନ୍ତ୍ର ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "\"%s\" ଭିଡିଓ ଯନ୍ତ୍ର ବନ୍ଦ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ରରେ ଲେଖିହେଲା ନାହିଁ."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr "\"%s\" ଓ.ଏସ.ଏସ. ଯନ୍ତ୍ର ପୂର୍ବରୁ ଅନ୍ଯ କାରିକା ଦ୍ବାରା ବ୍ଯବହାର କରାଯାଉଛି."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ବ୍ଯବହାର କରିହେଲା ନାହିଁ, ତାହାର ଅନୁମତି ଦେଖନ୍ତୁ."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ଅବସ୍ଥିତ ନାହିଁ."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ପଢ଼ିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Your OSS device could not be probed correctly"
+#~ msgstr "ଆପଣଙ୍କର ଓ.ଏସ.ଏସ. ଯନ୍ତ୍ରର ଠିକ ଭାବରେ ଅନୁସନ୍ଧାନ କରିହେଲା ନାହିଁ."
+
+#~ msgid "Volume"
+#~ msgstr "ପ୍ରବଳତା"
+
+#~ msgid "Bass"
+#~ msgstr "ଅନୁଚ୍ଚ ସ୍ବର"
+
+#~ msgid "Treble"
+#~ msgstr "ଉଚ୍ଚ ସ୍ବର"
+
+#~ msgid "Synth"
+#~ msgstr "ସିନ୍ଥେସାଇଜର"
+
+#~ msgid "PCM"
+#~ msgstr "ପି.ସି.ଏମ."
+
+#~ msgid "Speaker"
+#~ msgstr "ସ୍ବରବର୍ଦ୍ଧକ ୟନ୍ତ୍ର"
+
+#~ msgid "Line-in"
+#~ msgstr "ଲାଇନ-ଇନ"
+
+#~ msgid "Microphone"
+#~ msgstr "ମାଇକ୍ରୋଫୋନ୍"
+
+#~ msgid "CD"
+#~ msgstr "ସି.ଡି."
+
+#~ msgid "Mixer"
+#~ msgstr "ମିଶ୍ରଣ ଯନ୍ତ୍ର"
+
+#~ msgid "PCM-2"
+#~ msgstr "ପି.ସି.ଏମ.-୨"
+
+#~ msgid "Record"
+#~ msgstr "ଅନୁଲିପିକରଣ"
+
+#~ msgid "In-gain"
+#~ msgstr "ନିବେଶ-ବୃଦ୍ଧି"
+
+#~ msgid "Out-gain"
+#~ msgstr "ନିର୍ଗମ-ବୃଦ୍ଧି"
+
+#~ msgid "Line-1"
+#~ msgstr "ଲାଇନ-୧"
+
+#~ msgid "Line-2"
+#~ msgstr "ଲାଇନ-୨"
+
+#~ msgid "Line-3"
+#~ msgstr "ଲାଇନ-୩"
+
+#~ msgid "Digital-1"
+#~ msgstr "ସାଂଖ୍ଯିକ-୧"
+
+#~ msgid "Digital-2"
+#~ msgstr "ସାଂଖ୍ଯିକ-୨"
+
+#~ msgid "Digital-3"
+#~ msgstr "ସାଂଖ୍ଯିକ-୩"
+
+#~ msgid "Phone-in"
+#~ msgstr "ଫୋନ-ନିବେଶ"
+
+#~ msgid "Phone-out"
+#~ msgstr "ଫୋନ-ନିର୍ଗମ"
+
+#~ msgid "Video"
+#~ msgstr "ଭିଡିଓ"
+
+#~ msgid "Radio"
+#~ msgstr "ରେଡିଓ"
+
+#~ msgid "Monitor"
+#~ msgstr "ପ୍ରଦର୍ଶିକା"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "ସ୍ବରବର୍ଦ୍ଧକ ୟନ୍ତ୍ର"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "ଭି.ଏଫ.ଏସ. ଫାଇଲ \"%s\" ପଢ଼ିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "କୌଣସି ଫାଇଲନାମ ଦିଆଯାଇ ନାହିଁ"
+
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "ଭି.ଏଫ.ଏସ. ଫାଇଲ \"%s\" ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ: %s."
+
+#~ msgid "No filename given"
+#~ msgstr "କୌଣସି ଫାଇଲନାମ ଦିଆଯାଇ ନାହିଁ"
+
+#, fuzzy
+#~ msgid "Your OSS device doesn't support mono or stereo."
+#~ msgstr "ଆପଣଙ୍କର ଓ.ଏସ.ଏସ. ଯନ୍ତ୍ରର ଠିକ ଭାବରେ ଅନୁସନ୍ଧାନ କରିହେଲା ନାହିଁ."
+
+#~ msgid "No device specified."
+#~ msgstr "କୌଣସି ଯନ୍ତ୍ର ଉଲ୍ଲେଖିତ କରାଯାଇ ନାହିଁ."
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ପଢ଼ିବା ଓ ଲେଖିବା ପାଇଁ ଖୋଲିହେଲା ନାହିଁ."
+
+#~ msgid "Device is open."
+#~ msgstr "ଯନ୍ତ୍ର ଖୋଲାଯାଇଚ୍ଛି."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ର ଗୋଟିଏ ଅନୁଲିପିକାର ନୁହେଁ."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ରରୁ ଅସ୍ଥାୟୀ ସଞ୍ଚୟ ସ୍ଥାନ ଆଣିହେଲା ନାହିଁ."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "\"%s\" ଯନ୍ତ୍ରରୁ ପର୍ଯ୍ଯାପ୍ତ ଅସ୍ଥାୟୀ ସଞ୍ଚୟ ସ୍ଥାନ ଆଣିହେଲା ନାହିଁ."
+
+#~ msgid ""
+#~ "The %s element could not be found. This element is essential for "
+#~ "playback. Please install the right plug-in and verify that it works by "
+#~ "running 'gst-inspect %s'"
+#~ msgstr ""
+#~ "%s ଉପାଦାନ ମିଳିଲା ନାହିଁ. ପୁନଃପ୍ରଦର୍ଶନ ପାଇଁ ଏହି ଉପାଦାନଟି ଆବଶ୍ଯକ. ଦୟା କରି ସଠିକ ପ୍ଲଗ୍ଇନ୍ "
+#~ "ସ୍ଥାପିତ କରନ୍ତୁ, ଓ 'gst-inspect %s' ଚଳାଇ ଯାଞ୍ଚ କରନ୍ତୁ କି ଏହା କାର୍ଯ୍ଯକାରୀ ଅଛି"
+
+#~ msgid ""
+#~ "No usable colorspace element could be found.\n"
+#~ "Please install one and restart."
+#~ msgstr ""
+#~ "କୌଣସି ବ୍ଯବହାରଯୋଗ୍ଯ ରଙ୍ଗକ୍ଷେତ୍ର ଉପାଦାନ ମିଳିଲା ନାହିଁ.\n"
+#~ "ଦୟା କରି ଗୋଟିଏ ଉପାଦାନ ସ୍ଥାପିତ କରି ପୁନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ."
diff --git a/po/pl.gmo b/po/pl.gmo
new file mode 100644 (file)
index 0000000..92d4613
Binary files /dev/null and b/po/pl.gmo differ
diff --git a/po/pl.po b/po/pl.po
new file mode 100644 (file)
index 0000000..4ef8024
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,78 @@
+# Polish translation for gst-plugins-ugly.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2007-2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 18:00+0200\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Odczyt z CD nie powiódł się."
+
+msgid "Could not open CD device for reading."
+msgstr "Nie udało się otworzyć urządzenia CD do odczytu."
+
+msgid "Disc is not an Audio CD."
+msgstr "Płyta nie jest płytą CD Audio."
+
+msgid "Could not open DVD"
+msgstr "Nie udało się otworzyć DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nie udało się otworzyć tytułu DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Nie udało się przemieścić do rozdziału %d tytułu DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nie udało się otworzyć tytułu DVD %d. Interaktywne tytułu nie są obsługiwane "
+"przez ten element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Nie udało się odczytać DVD. Powodem może być to, że płyta jest zaszyfrowana, "
+"a biblioteka odszyfrowująca nie została zainstalowana."
+
+msgid "Could not read DVD."
+msgstr "Nie udało się odczytać DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Nie udało się skonfigurować kodera LAME. Proszę sprawdzić parametry "
+"kodowania."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Żądana prędkość bitowa %d kbit/s dla właściwości '%s' nie jest dozwolona. "
+"Prędkość bitowa zmieniona na %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nie udało się skonfigurować kodera TwoLAME. Proszę sprawdzić parametry "
+"kodowania."
+
+msgid "This stream contains no data."
+msgstr "Ten strumień nie zawiera danych."
+
+msgid "Internal data stream error."
+msgstr "Błąd wewnętrzny strumienia danych."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
new file mode 100644 (file)
index 0000000..069b2c4
Binary files /dev/null and b/po/pt_BR.gmo differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644 (file)
index 0000000..aa7efab
--- /dev/null
@@ -0,0 +1,95 @@
+# Brazilian Portuguese translation of gst-plugins-ugly.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Copyright (C) 2007-2010 Free Software Foundation, Inc.
+# Raphael Higino <In memoriam>, 2007.
+# Fabrício Godoy <skarllot@gmail.com>, 2008-2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.14.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2010-05-14 23:53-0300\n"
+"Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgid "Could not read from CD."
+msgstr "Não foi possível ler as informações do CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Não foi possível abrir o dispositivo de CD para leitura."
+
+msgid "Disc is not an Audio CD."
+msgstr "O disco não é um CD de áudio."
+
+msgid "Could not open DVD"
+msgstr "Não foi possível abrir o DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Não foi possível abrir o título %d do DVD"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Falha ao avançar para o capítulo %d do título %d do DVD"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Não foi possível abrir o título %d do DVD. Não há suporte a títulos "
+"interativos por este elemento"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Não foi possível abrir o DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Falha ao configurar o codificador LAME. Verifique seus parâmetros de "
+"codificação."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"A taxa de bits, %d kbits/s, requisitada pela propriedade \"%s\" não é "
+"permitida. A taxa de bits foi alterada para %d kbits/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Falha ao configurar o codificador TwoLAME. Verifique seus parâmetros de "
+"codificação."
+
+msgid "This stream contains no data."
+msgstr "Este fluxo não contém dados."
+
+msgid "Internal data stream error."
+msgstr "Erro interno no fluxo de dados."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "As informações de título no DVD são inválidas."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Não foi possível ler as informações de título do DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Falha ao abrir o dispositivo de DVD \"%s\"."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Falha ao definir busca baseada em PGC."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Este arquivo está criptografado e não pôde ser reproduzido."
diff --git a/po/quot.sed b/po/quot.sed
new file mode 100644 (file)
index 0000000..0122c46
--- /dev/null
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644 (file)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644 (file)
index 0000000..c7e2690
Binary files /dev/null and b/po/ro.gmo differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644 (file)
index 0000000..b7214be
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,76 @@
+# Romanian translation for gst-plugins-ugly
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2010-08-16 03:32+0300\n"
+"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Virtaal 0.6.1\n"
+
+msgid "Could not read from CD."
+msgstr "Nu s-a putut citi de pe CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Nu s-a putut deschide dispozitivul CD pentru citire."
+
+msgid "Disc is not an Audio CD."
+msgstr "Discul nu este un CD audio."
+
+msgid "Could not open DVD"
+msgstr "Nu s-a putut deschide DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nu s-a putut deschide titlul DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Nu s-a putut sări la capitolul %d al titlului DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nu s-a putut deschide titlul DVD %d. Titlurile interactive nu sunt suportate "
+"de acest element"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Nu s-a putut deschide DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Nu s-a putut configura codorul LAME. Verificați parametrii de codare."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Rata de biți solicitată de %d kbiți/s pentru proprietatea „%s” nu este "
+"permisă. Rata de biți a fost modificată la %d kbiți/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nu s-a putut configura codorul TwoLAME. Verificați parametrii de codare."
+
+msgid "This stream contains no data."
+msgstr "Fluxul acesta nu conține date."
+
+msgid "Internal data stream error."
+msgstr "Eroare internă a fluxului de date."
diff --git a/po/ru.gmo b/po/ru.gmo
new file mode 100644 (file)
index 0000000..d7a5d29
Binary files /dev/null and b/po/ru.gmo differ
diff --git a/po/ru.po b/po/ru.po
new file mode 100644 (file)
index 0000000..7284e1b
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,95 @@
+# Translation for gst-plugins-ugly messages to Russian
+# This file is put in the public domain.
+#
+# Артём Попов <artfwo@gmail.com>, 2009.
+# Pavel Maryanov <acid_jack@ukr.net>, 2009.
+# Yuri Kozlov <yuray@komyakino.ru>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 20:28+0400\n"
+"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgid "Could not read from CD."
+msgstr "Не удалось прочесть CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Не удалось открыть CD-устройство для чтения."
+
+msgid "Disc is not an Audio CD."
+msgstr "Диск не в формате аудио-CD."
+
+msgid "Could not open DVD"
+msgstr "Не удалось открыть DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Не удалось открыть DVD-раздел %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Ошибка перехода к эпизоду %d DVD-раздела %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Не удалось открыть DVD-раздел %d. Интерактивные разделы не поддерживаются "
+"этим элементом"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Не удалось прочесть DVD. Это могло произойти из-за того, что DVD закодирован "
+"и не установлена библиотека декодирования DVD."
+
+msgid "Could not read DVD."
+msgstr "Не удалось прочесть DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Не удалось настроить кодировщик LAME. Проверьте параметры кодирования."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Запрошенный битрейт в %d кбит/с для свойства «%s» недопустим. Битрейт был "
+"изменён на %d кбит/с."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Не удалось настроить кодировщик TwoLAME. Проверьте параметры кодирования."
+
+msgid "This stream contains no data."
+msgstr "Поток не содержит данных."
+
+msgid "Internal data stream error."
+msgstr "Внутренняя ошибка потока данных."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Неверные сведения о разделах на DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Не удалось прочесть сведения о разделах для DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Ошибка при открытии DVD-устройства «%s»."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Не удалось включить PGC-позиционирование."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Файл зашифрован и не может быть воспроизведён."
diff --git a/po/sk.gmo b/po/sk.gmo
new file mode 100644 (file)
index 0000000..60e82ea
Binary files /dev/null and b/po/sk.gmo differ
diff --git a/po/sk.po b/po/sk.po
new file mode 100644 (file)
index 0000000..2010408
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,287 @@
+# Czech translations of gst-plugins.
+# Copyright (C) 2004 gst-plugins' COPYRIGHT HOLDER
+# This file is put in the public domain.
+# Peter Tuhársky <tuharsky@misbb.sk>, 2007, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.11.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-09-21 10:26+0100\n"
+"Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Poedit-Language: Slovak\n"
+"X-Poedit-Country: SLOVAKIA\n"
+
+msgid "Could not read from CD."
+msgstr "Nepodarilo sa čítať z CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Nemohu otevřít zařízení CD pro čtení."
+
+msgid "Disc is not an Audio CD."
+msgstr "Tento disk nie je zvukové CD."
+
+msgid "Could not open DVD"
+msgstr "Nepodarilo sa otvoriť DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Nepodarilo sa otvoriť DVD titul %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Nepodarilo sa preskočiť na kapitolu %d pre DVD titul %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Nepodarilo sa otvoriť DVD titul %d. Interaktívne tituly nie sú podporované "
+"týmto prvkom"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Nepodarilo sa otvoriť DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Nepodarilo sa nastaviť LAME enkodér. Skontrolujte svoje kódovacie "
+"nastavenia, prosím."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Požadovaná bitová rýchlosť %d kbit/s pre vlastnosť '%s' nie je dovolená. "
+"Bitová rýchlosť bola nastavená na %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Nepodarilo sa nastaviť TwoLAME enkodér. Skontrolujte svoje kódovacie "
+"nastavenia, prosím."
+
+msgid "This stream contains no data."
+msgstr "Tento prúd neobsahuje žiadne údaje."
+
+msgid "Internal data stream error."
+msgstr "Chyba vnútorného prúdu údajov."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Chybný titul na DVD."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Nepodarilo sa načítať informáciu o titule DVD."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Nepodarilo sa otvoriť DVD zariadenie '%s'."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Nepodarilo sa nastaviť preskočenie na báze PGC. "
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Tento súbor je šifrovaný a nedá sa prehrať."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "Nemohu otevřít soubor \"%s\" pro zápis."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "Chyba při zavírání souboru \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "Nemohu otevřít soubor \"%s\" pro čtení."
+
+#~ msgid "No filename specified."
+#~ msgstr "Nezadán název souboru."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "Žádný nebo neplatný vstup zvuku, proud AVI bude poškozen."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "Nemohu otevřít zařízení zvuku \"%s\" pro zápis."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "Nemohu otevřít řídicí zařízení \"%s\" pro zápis."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "Nemohu nastavit zařízení zvuku \"%s\"."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "Nemohu nastavit zařízení zvuku \"%s\" na %d Hz."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "Nemohu zavřít zařízení zvuku \"%s\"."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "Nemohu zavřít řídicí zařízení \"%s\"."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "Nemohu otevřít zařízení videa \"%s\" pro zápis."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "Nemohu zavřít zařízení videa \"%s\"."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "Nemohu zapisovat do zařízení \"%s\"."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr "Zařízení OSS \"%s\" již používá jiný program."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr "Nemohu přistupovat k zařízení \"%s\", zkontrolujte jeho oprávnění."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "Zařízení \"%s\" neexistuje."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "Nemohu otevřít zažízení \"%s\" pro zápis."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "Nemohu otevřít zažízení \"%s\" pro čtení."
+
+#~ msgid "Your OSS device could not be probed correctly"
+#~ msgstr "Vaše zařízení OSS nebylo možné správně najít"
+
+#~ msgid "Volume"
+#~ msgstr "Hlasitost"
+
+#~ msgid "Bass"
+#~ msgstr "Basy"
+
+#~ msgid "Treble"
+#~ msgstr "Výšky"
+
+#~ msgid "Synth"
+#~ msgstr "Synth"
+
+#~ msgid "PCM"
+#~ msgstr "PCM"
+
+#~ msgid "Speaker"
+#~ msgstr "Reproduktor"
+
+#~ msgid "Line-in"
+#~ msgstr "Line-in"
+
+#~ msgid "Microphone"
+#~ msgstr "Mikrofon"
+
+#~ msgid "CD"
+#~ msgstr "CD"
+
+#~ msgid "Mixer"
+#~ msgstr "Mixér"
+
+#~ msgid "PCM-2"
+#~ msgstr "PCM-2"
+
+#~ msgid "Record"
+#~ msgstr "Nahrávání"
+
+#~ msgid "In-gain"
+#~ msgstr "Vstupní-zisk"
+
+#~ msgid "Out-gain"
+#~ msgstr "Výstupní-zisk"
+
+#~ msgid "Line-1"
+#~ msgstr "Line-1"
+
+#~ msgid "Line-2"
+#~ msgstr "Line-2"
+
+#~ msgid "Line-3"
+#~ msgstr "Line-3"
+
+#~ msgid "Digital-1"
+#~ msgstr "Digitální-1"
+
+#~ msgid "Digital-2"
+#~ msgstr "Digitální-2"
+
+#~ msgid "Digital-3"
+#~ msgstr "Digitální-3"
+
+#~ msgid "Phone-in"
+#~ msgstr "Telefon-in"
+
+#~ msgid "Phone-out"
+#~ msgstr "Telefon-out"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Radio"
+#~ msgstr "Rádio"
+
+#~ msgid "Monitor"
+#~ msgstr "Monitor"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "Reproduktor"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "Nemohu otevřít soubor vfs \"%s\" pro čtení."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "Nezadán název souboru"
+
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "Nemohu otevřít soubor vfs \"%s\" pro zápis: %s."
+
+#~ msgid "No filename given"
+#~ msgstr "Nezadán název souboru"
+
+#, fuzzy
+#~ msgid "Your OSS device doesn't support mono or stereo."
+#~ msgstr "Vaše zařízení OSS nebylo možné správně najít"
+
+#~ msgid "No device specified."
+#~ msgstr "Nezadáno zařízení."
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "Nemohu otevřít zařízení \"%s\" pro čtení a zápis."
+
+#~ msgid "Device is open."
+#~ msgstr "Zařízení je otevřeno."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "Zařízení \"%s\" není zachytávací zařízení."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "Nemohu od zařízení \"%s\" získat vyrovnávací paměti."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "Nemohu od zařízení \"%s\" získat dost vyrovnávacích pamětí."
+
+#~ msgid ""
+#~ "The %s element could not be found. This element is essential for "
+#~ "playback. Please install the right plug-in and verify that it works by "
+#~ "running 'gst-inspect %s'"
+#~ msgstr ""
+#~ "Element %s nelze najít. Tento element je pro přehrávání nutný. "
+#~ "Nainstalujte prosím potřebný modul a ověřte, že funguje, spuštěním 'gst-"
+#~ "inspect %s'"
+
+#~ msgid ""
+#~ "No usable colorspace element could be found.\n"
+#~ "Please install one and restart."
+#~ msgstr ""
+#~ "Nenalezen použitelný element colorspace.\n"
+#~ "Nainstalujte prosím nějaký a restartujte."
diff --git a/po/sl.gmo b/po/sl.gmo
new file mode 100644 (file)
index 0000000..80fcfcf
Binary files /dev/null and b/po/sl.gmo differ
diff --git a/po/sl.po b/po/sl.po
new file mode 100644 (file)
index 0000000..0ea4c52
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,81 @@
+# Slovenian translation for gst-plugins-ugly.
+# Copyright (C) 2009 - 2011 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Matej Urbančič <matej.urban@gmail.com>, 2009.
+# Klemen Košir <klemen.kosir@gmx.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 15:35+0100\n"
+"Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
+"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+msgid "Could not read from CD."
+msgstr "S CD-ja ni mogoče brati."
+
+msgid "Could not open CD device for reading."
+msgstr "Naprave CD ni mogoče odpreti za branje."
+
+msgid "Disc is not an Audio CD."
+msgstr "Disk ni zvočni CD."
+
+msgid "Could not open DVD"
+msgstr "DVD-ja ni mogoče odpreti"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "DVD naslova %d ni mogoče odpreti."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Napaka med odpiranjem poglavja %d DVD naslova %d."
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr "DVD naslova %d ni mogoče odpreti. Interaktivni naslovi niso podprti."
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"DVD-ja ni mogoče prebrati. Verjetno je DVD šifriran, knjižnica za "
+"dešifriranje pa ni nameščena."
+
+msgid "Could not read DVD."
+msgstr "DVD-ja ni mogoče prebrati."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Napaka med nastavljanjem kodirnika LAME. Preverite parametre kodiranja."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Zahtevana bitna hitrost %d kbit/s za lastnost \"%s\" ni dovoljena. Bitna "
+"hitrost je bila spremenjena na %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Napaka med nastavljanjem kodirnika TwoLAME. Preverite parametre kodiranja."
+
+msgid "This stream contains no data."
+msgstr "Pretok ne vsebuje podatkov."
+
+msgid "Internal data stream error."
+msgstr "Notranja napaka pretoka podatkov."
diff --git a/po/sq.gmo b/po/sq.gmo
new file mode 100644 (file)
index 0000000..7998f43
Binary files /dev/null and b/po/sq.gmo differ
diff --git a/po/sq.po b/po/sq.po
new file mode 100644 (file)
index 0000000..ba81662
--- /dev/null
+++ b/po/sq.po
@@ -0,0 +1,271 @@
+# Përkthimi i mesazheve të gst-plugins në shqip.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Laurent Dhima <laurenti@alblinux.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins 0.8.3\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2004-08-07 20:29+0200\n"
+"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
+"Language-Team: Albanian <begraj@hotmail.com>\n"
+"Language: sq\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#, fuzzy
+msgid "Could not read from CD."
+msgstr "I pamundur shkrimi tek file \"%s\"."
+
+msgid "Could not open CD device for reading."
+msgstr "I pamundur hapja e dispozitivit CD për lexim."
+
+#, fuzzy
+msgid "Disc is not an Audio CD."
+msgstr "Dispozitivi nuk është hapur."
+
+msgid "Could not open DVD"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Could not open DVD title %d"
+msgstr "E pamundur mbyllja e file vfs \"%s\"."
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr ""
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "I pamundur shkrimi tek file \"%s\"."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+
+msgid "This stream contains no data."
+msgstr ""
+
+msgid "Internal data stream error."
+msgstr ""
+
+#, fuzzy
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "I pamundur shkrimi tek file \"%s\"."
+
+#, fuzzy
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "E pamundur mbyllja e file vfs \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for writing."
+#~ msgstr "E pamundur hapja e file \"%s\" në shkrim."
+
+#~ msgid "Error closing file \"%s\"."
+#~ msgstr "Gabim gjatë mbylljes së file \"%s\"."
+
+#~ msgid "Could not open file \"%s\" for reading."
+#~ msgstr "E pamundur hapja e file \"%s\" për lexim."
+
+#~ msgid "No filename specified."
+#~ msgstr "Nuk është përcaktuar emri i file."
+
+#~ msgid "No or invalid input audio, AVI stream will be corrupt."
+#~ msgstr "Input audio i gabuar ose mungon, stream AVI mund të jetë i dëmtuar."
+
+#~ msgid "Could not open audio device \"%s\" for writing."
+#~ msgstr "E pamundur hapja e dispozitivit të zërit \"%s\" për shkrim."
+
+#~ msgid "Could not open control device \"%s\" for writing."
+#~ msgstr "E pamundur hapja e dispozitivit të kontrollit \"%s\" për shkrim."
+
+#~ msgid "Could not configure audio device \"%s\"."
+#~ msgstr "I pamundur konfigurimi i dispozitivit të zërit \"%s\"."
+
+#~ msgid "Could not set audio device \"%s\" to %d Hz."
+#~ msgstr "I pamundur rregullimi i dispozitivit audio \"%s\" në %d Hz."
+
+#~ msgid "Could not close audio device \"%s\"."
+#~ msgstr "E pamundur mbyllja e dispozitivit audio \"%s\"."
+
+#~ msgid "Could not close control device \"%s\"."
+#~ msgstr "E pamundur mbyllja e dispozitivit të kontrollit \"%s\"."
+
+#~ msgid "Could not open video device \"%s\" for writing."
+#~ msgstr "E pamundur hapja e dispozitivit video \"%s\" për shkrim."
+
+#~ msgid "Could not close video device \"%s\"."
+#~ msgstr "E pamundur mbyllja e dispozitivit video \"%s\"."
+
+#~ msgid "Could not write to device \"%s\"."
+#~ msgstr "I pamundur shkrimi në dispozitivin \"%s\"."
+
+#~ msgid "OSS device \"%s\" is already in use by another program."
+#~ msgstr ""
+#~ "Dispozitivi OSS \"%s\" është duke u përdorur nga një tjetër program."
+
+#~ msgid "Could not access device \"%s\", check its permissions."
+#~ msgstr ""
+#~ "E pamundur futja në dispozitivin \"%s\", kontrollo të drejtat e tij."
+
+#~ msgid "Device \"%s\" does not exist."
+#~ msgstr "Dispozitivi \"%s\" nuk ekziston."
+
+#~ msgid "Could not open device \"%s\" for writing."
+#~ msgstr "E pamundur hapja e dispozitivit \"%s\" për shkrim."
+
+#~ msgid "Could not open device \"%s\" for reading."
+#~ msgstr "E pamundur hapja e dispozitivit \"%s\" për lexim."
+
+#~ msgid "Your OSS device could not be probed correctly"
+#~ msgstr "Dispozitivi juaj OSS mund të mos provohet korrektësisht"
+
+#~ msgid "Volume"
+#~ msgstr "Volumi"
+
+#~ msgid "Bass"
+#~ msgstr "Bas"
+
+#~ msgid "Treble"
+#~ msgstr "Treble"
+
+#~ msgid "Synth"
+#~ msgstr "Sintetizuesi"
+
+#~ msgid "PCM"
+#~ msgstr "PCM"
+
+#~ msgid "Speaker"
+#~ msgstr "Zë folës"
+
+#~ msgid "Line-in"
+#~ msgstr "Linja-hyrje"
+
+#~ msgid "Microphone"
+#~ msgstr "Mikrofoni"
+
+#~ msgid "CD"
+#~ msgstr "CD"
+
+#~ msgid "Mixer"
+#~ msgstr "Kontrolli i volumit"
+
+#~ msgid "PCM-2"
+#~ msgstr "PCM-2"
+
+#~ msgid "Record"
+#~ msgstr "Regjistrimi"
+
+#~ msgid "In-gain"
+#~ msgstr "In-gain"
+
+#~ msgid "Out-gain"
+#~ msgstr "Out-gain"
+
+#~ msgid "Line-1"
+#~ msgstr "Linja-1"
+
+#~ msgid "Line-2"
+#~ msgstr "Linja-2"
+
+#~ msgid "Line-3"
+#~ msgstr "Linja-3"
+
+#~ msgid "Digital-1"
+#~ msgstr "Dixhitale-1"
+
+#~ msgid "Digital-2"
+#~ msgstr "Dixhitale-2"
+
+#~ msgid "Digital-3"
+#~ msgstr "Dixhitale-3"
+
+#~ msgid "Phone-in"
+#~ msgstr "Phone-hyrja"
+
+#~ msgid "Phone-out"
+#~ msgstr "Phone-dalja"
+
+#~ msgid "Video"
+#~ msgstr "Video"
+
+#~ msgid "Radio"
+#~ msgstr "Radio"
+
+#~ msgid "Monitor"
+#~ msgstr "Ekrani"
+
+#, fuzzy
+#~ msgid "PC Speaker"
+#~ msgstr "Zë folës"
+
+#~ msgid "Could not open vfs file \"%s\" for reading."
+#~ msgstr "E pamundur hapja e file vfs \"%s\" për lexim."
+
+#, fuzzy
+#~ msgid "No filename given."
+#~ msgstr "Nuk është dhënë asnjë emër file"
+
+#~ msgid "Could not open vfs file \"%s\" for writing: %s."
+#~ msgstr "E pamundur hapja e file vfs \"%s\" për shkrim: %s."
+
+#~ msgid "No filename given"
+#~ msgstr "Nuk është dhënë asnjë emër file"
+
+#, fuzzy
+#~ msgid "Your OSS device doesn't support mono or stereo."
+#~ msgstr "Dispozitivi juaj OSS mund të mos provohet korrektësisht"
+
+#~ msgid "No device specified."
+#~ msgstr "Nuk është përcaktuar asnjë dispozitiv."
+
+#~ msgid "Could not open device \"%s\" for reading and writing."
+#~ msgstr "E pamundur hapja e dispozitivit \"%s\" për lexim dhe shkrim."
+
+#~ msgid "Device is open."
+#~ msgstr "Dispozitivi është i hapur."
+
+#~ msgid "Device \"%s\" is not a capture device."
+#~ msgstr "Dispozitivi \"%s\" nuk është një dispozitiv marrje."
+
+#~ msgid "Could not get buffers from device \"%s\"."
+#~ msgstr "E pamundur marrja e buffers nga dispozitivi \"%s\"."
+
+#~ msgid "Could not get enough buffers from device \"%s\"."
+#~ msgstr "E pamundur marrja e buffers të mjaftueshëm nga dispozitivi \"%s\"."
+
+#~ msgid ""
+#~ "The %s element could not be found. This element is essential for "
+#~ "playback. Please install the right plug-in and verify that it works by "
+#~ "running 'gst-inspect %s'"
+#~ msgstr ""
+#~ "E pamundur gjetja e elementit %s. Ky element është thelbësor për "
+#~ "playback. Ju lutem instaloni plug-in e duhur dhe kontrollo funksionimin "
+#~ "duke ekzekutuar 'gst-inspect %s'"
+
+#~ msgid ""
+#~ "No usable colorspace element could be found.\n"
+#~ "Please install one and restart."
+#~ msgstr ""
+#~ "Nuk arrin të gjehet asnjë element ngjyra e hapësirës.\n"
+#~ "Ju lutem instaloni një dhe rinisni."
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644 (file)
index 0000000..9730bf8
Binary files /dev/null and b/po/sr.gmo differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..ef95503
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,79 @@
+# Serbian translation of gst-plugins
+# This file is put in the public domain.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-12-04 13:43+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <gnu@prevod.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.7.0\n"
+"X-Project-Style: gnome\n"
+
+msgid "Could not read from CD."
+msgstr "Не могу да читам ЦД."
+
+msgid "Could not open CD device for reading."
+msgstr "Не могу да отворим ЦД уређај ради читања."
+
+msgid "Disc is not an Audio CD."
+msgstr "Диск није Звучни ЦД."
+
+msgid "Could not open DVD"
+msgstr "Не могу да отворим ДВД"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Не могу да отворим ДВД наслов „%d“"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Нисам успео да стигнем до поглавља „%d“ ДВД наслова „%d“"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Не могу да отворим ДВД наслов „%d“. Овај елемент не подржава међудејствене "
+"наслове"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Не могу да читам ДВД. Можда зато што је ДВД шифрован а библиотека за "
+"дешифровање ДВД-а није инсталирана."
+
+msgid "Could not read DVD."
+msgstr "Не могу да читам ДВД."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Нисам успео да подесим ЛАМЕ енкодер. Проверите ваше параметре кодирања."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Тражени проток података од %d kbit/s за „%s“ није допуштен. Проток података "
+"је постављен на %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Нисам успео да подесим ДваЛАМЕ енкодер. Проверите ваше параметре кодирања."
+
+msgid "This stream contains no data."
+msgstr "Овај ток не садржи податке."
+
+msgid "Internal data stream error."
+msgstr "Унутрашња грешка тока података."
diff --git a/po/stamp-po b/po/stamp-po
new file mode 100644 (file)
index 0000000..9788f70
--- /dev/null
@@ -0,0 +1 @@
+timestamp
diff --git a/po/sv.gmo b/po/sv.gmo
new file mode 100644 (file)
index 0000000..1212da5
Binary files /dev/null and b/po/sv.gmo differ
diff --git a/po/sv.po b/po/sv.po
new file mode 100644 (file)
index 0000000..8d19849
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,93 @@
+# Swedish translation for gst-plugins-ugly.
+# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Daniel Nylander <po@danielnylander.se>, 2007, 2008, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.10.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2009-03-10 16:12+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "Kunde inte läsa från cd."
+
+msgid "Could not open CD device for reading."
+msgstr "Kunde inte öppna cd-enheten för läsning."
+
+msgid "Disc is not an Audio CD."
+msgstr "Skivan är inte en ljud-cd."
+
+msgid "Could not open DVD"
+msgstr "Kunde inte öppna dvd"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Kunde inte öppna dvd-titel %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Misslyckades med att gå till kapitel %d för dvd-titel %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Kunde inte öppna dvd-titel %d. Interaktiva titlar stöds inte av det här "
+"elementet"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Kunde inte öppna dvd"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"Misslyckades med att konfigurera LAME-kodaren. Kontrollera dina "
+"kodningsparametrar."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Den begärda bitfrekvensen %d kbit/s för egenskapen \"%s\" tillåts inte. "
+"Bitfrekvensen ändrades till %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Misslyckades med att konfigurera TwoLAME-kodaren. Kontrollera dina "
+"kodningsparametrar."
+
+msgid "This stream contains no data."
+msgstr "Den här strömmen innehåller inget data."
+
+msgid "Internal data stream error."
+msgstr "Fel i intern dataström."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "Ogiltig titelinformation på dvd."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "Kunde inte läsa titelinformation för dvd."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "Misslyckades med att öppna dvd-enheten \"%s\"."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "Misslyckades med att ställa in PGC-baserad spolning."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Den här filen är krypterad och kan inte spelas upp."
diff --git a/po/tr.gmo b/po/tr.gmo
new file mode 100644 (file)
index 0000000..bdc231b
Binary files /dev/null and b/po/tr.gmo differ
diff --git a/po/tr.po b/po/tr.po
new file mode 100644 (file)
index 0000000..0f94d42
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,88 @@
+# translation of gst-plugins-ugly-0.10.17.2.po to Turkish
+# This file is put in the public domain.
+# Server Acim <sacim@kde.org.tr>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly-0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-26 19:24+0200\n"
+"Last-Translator: Server Acim <serveracim@gmail.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+msgid "Could not read from CD."
+msgstr "CD'den okuyamıyor."
+
+msgid "Could not open CD device for reading."
+msgstr "Okumak için CD aygıtını açamıyor."
+
+msgid "Disc is not an Audio CD."
+msgstr "Bu disk bir Ses CD'si değil."
+
+msgid "Could not open DVD"
+msgstr "DVD açılamıyor"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "DVD başlığı açılamıyor %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Bu dosyalara okunamadı:bölüm %d ve DVD başlığı %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"DVD başlığı açılamadı %d. Bu öğede etkileşimli Interactive başlıklar "
+"desteklenmiyor"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"DVD okunamıyor. Bunun sebebi, DVD'nin şifrelenmiş olması veya DVD şifre "
+"çzöme kitaplığının kurulu olmaması olabilir."
+
+msgid "Could not read DVD."
+msgstr "DVD okunamıyor."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr ""
+"LAME kodlayıcı yapılandırılamadı. Kodlama parametrelerinizi denetleyiniz."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"İstenen bit oranı %d kbit/s bu özellik için '%s' onaylanmadı. Bu yüzden bit "
+"oranı şuna dönüştürüldü %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"TwoLAME kodlayıcı yapılandırılamadı. Kodlama parametrelerinizi denetleyiniz."
+
+msgid "This stream contains no data."
+msgstr "Akış veri içermiyor."
+
+msgid "Internal data stream error."
+msgstr "İç veri akış hatası."
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "DVD'de geçersiz başlık bilgisi."
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "DVD'deki başlık bilgisi okunamıyor."
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "DVD aygıtı açılamadı '%s'."
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "PGC tabanlı arama ayarlanamadı."
diff --git a/po/uk.gmo b/po/uk.gmo
new file mode 100644 (file)
index 0000000..e6ddc07
Binary files /dev/null and b/po/uk.gmo differ
diff --git a/po/uk.po b/po/uk.po
new file mode 100644 (file)
index 0000000..7e1825d
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,84 @@
+# Ukrainian translation to gst-plugins-ugly.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+#
+# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2007.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-04-30 16:27+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 1.2\n"
+
+msgid "Could not read from CD."
+msgstr "Не вдалося прочитати дані з компакт-диска."
+
+msgid "Could not open CD device for reading."
+msgstr "Не вдалося відкрити носій для читання."
+
+msgid "Disc is not an Audio CD."
+msgstr "Диск не записано у форматі Audio CD."
+
+msgid "Could not open DVD"
+msgstr "Не вдалося відкрити DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Не вдалося відкрити частину DVD %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Не вдалося перейти до розділу %d частини DVD %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr ""
+"Не вдалося відкрити заголовок DVD %d. Інтерактивні заголовки не "
+"підтримуються цим елементом"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+"Не вдалося прочитати DVD. Причиною може бути те, що DVD зашифровано, а "
+"бібліотеку розшифрування DVD не встановлено."
+
+msgid "Could not read DVD."
+msgstr "Не вдалося прочитати DVD."
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Помилка при налаштовуванні кодера LAME. Перевірте параметри кодування."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Запитана бітова швидкість %d кбіт/с для властивості «%s» є неприпустимою. "
+"Бітову швидкість змінено на %d кбіт/с."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr ""
+"Помилка при налаштовуванні кодувальника TwoLAME. Перевірте параметри "
+"кодування."
+
+msgid "This stream contains no data."
+msgstr "Потік не містить даних."
+
+msgid "Internal data stream error."
+msgstr "Помилка внутрішнього потоку даних."
+
+#~ msgid "This file is encrypted and cannot be played."
+#~ msgstr "Файл зашифрований та не може бути відтворений."
diff --git a/po/vi.gmo b/po/vi.gmo
new file mode 100644 (file)
index 0000000..73e33c4
Binary files /dev/null and b/po/vi.gmo differ
diff --git a/po/vi.po b/po/vi.po
new file mode 100644 (file)
index 0000000..7db6467
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,74 @@
+# Vietnamese translation for GST Plugins Ugly.
+# Copyright © 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Clytie Siddall <clytie@riverland.net.au>, 2007-2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.13.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2010-03-06 22:13+1030\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"Language: vi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+msgid "Could not read from CD."
+msgstr "Không thể đọc từ đĩa CD."
+
+msgid "Could not open CD device for reading."
+msgstr "Không thể mở thiết bị đĩa CD để đọc."
+
+msgid "Disc is not an Audio CD."
+msgstr "Đĩa không phải là một đĩa CD âm thanh."
+
+msgid "Could not open DVD"
+msgstr "Không thể mở đĩa DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "Không thể mở đĩa DVD tên %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "Lỗi đi tới chương %d của đĩa DVD tên %d"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr "Không thể mở đĩa DVD tên %d. Phần tử này không hỗ trợ tên tương tác."
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr ""
+
+#, fuzzy
+msgid "Could not read DVD."
+msgstr "Không thể mở đĩa DVD"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "Lỗi cấu hình bộ biên mã LAME. Hãy kiểm tra các tham số biên mã."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr ""
+"Không cho phép tỷ lệ đã yêu cầu %d kbit/giây cho thuộc tính « %s » nên tỷ lệ "
+"bit bị thay đổi thành %d kbit/g."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "Lỗi cấu hình bộ biên mã TwoLAME. Hãy kiểm tra lại các tham số biên mã."
+
+msgid "This stream contains no data."
+msgstr "Luồng này không chứa dữ liệu."
+
+msgid "Internal data stream error."
+msgstr "Lỗi luồng dữ liệu nội bộ."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
new file mode 100644 (file)
index 0000000..efa149e
Binary files /dev/null and b/po/zh_CN.gmo differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644 (file)
index 0000000..36da8d2
--- /dev/null
@@ -0,0 +1,83 @@
+# Chinese (simplified) translation for gst-plugins-ugly.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gst-plugins-ugly package.
+# Wenzheng Hu <db_lobster@163.com>, 2007.
+# LI Daobing <lidaobing@gmail.com>, 2008, 2009.
+# Wylmer Wang <wantinghard@gmail.com>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
+"POT-Creation-Date: 2012-02-21 00:55+0000\n"
+"PO-Revision-Date: 2011-12-20 10:58+0800\n"
+"Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Could not read from CD."
+msgstr "无法读取CD。"
+
+msgid "Could not open CD device for reading."
+msgstr "无法打开以读方式打开CD设备。"
+
+msgid "Disc is not an Audio CD."
+msgstr "盘类型不是音频CD。"
+
+msgid "Could not open DVD"
+msgstr "无法打开 DVD"
+
+#, c-format
+msgid "Could not open DVD title %d"
+msgstr "无法打开 DVD 标题 %d"
+
+#, c-format
+msgid "Failed to go to chapter %d of DVD title %d"
+msgstr "跳转到章节 %d, DVD 标题 %d 失败"
+
+#, c-format
+msgid ""
+"Could not open DVD title %d. Interactive titles are not supported by this "
+"element"
+msgstr "无法打开 DVD 标题 %d. 这个元素不支持互动标题"
+
+msgid ""
+"Could not read DVD. This may be because the DVD is encrypted and a DVD "
+"decryption library is not installed."
+msgstr "无法读取 DVD。可能 DVD 光盘已加密,但 DVD 解密库没有安装。"
+
+msgid "Could not read DVD."
+msgstr "无法读取 DVD。"
+
+msgid "Failed to configure LAME encoder. Check your encoding parameters."
+msgstr "设置 LAME 编码器失败. 请检查你的编码参数."
+
+#, c-format
+msgid ""
+"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
+"bitrate was changed to %d kbit/s."
+msgstr "不允许的比特率 %d kbit/s 于 '%s'. 比特率已改变成 %d kbit/s."
+
+msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
+msgstr "设置 TwoLAME 编码器失败. 请检查你的编码参数."
+
+msgid "This stream contains no data."
+msgstr "这个串流中没有包含数据."
+
+msgid "Internal data stream error."
+msgstr "内部数据流错误。"
+
+#~ msgid "Invalid title information on DVD."
+#~ msgstr "无效的 DVD 标题信息。"
+
+#~ msgid "Could not read title information for DVD."
+#~ msgstr "无法读取为 DVD 读取标题信息。"
+
+#~ msgid "Failed to open DVD device '%s'."
+#~ msgstr "无法打开 DVD 设备 '%s'。"
+
+#~ msgid "Failed to set PGC based seeking."
+#~ msgstr "设置基于 PGC 的定位失败。"
diff --git a/stamp-h.in b/stamp-h.in
new file mode 100644 (file)
index 0000000..9788f70
--- /dev/null
@@ -0,0 +1 @@
+timestamp
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644 (file)
index 0000000..dfe3b5a
--- /dev/null
@@ -0,0 +1,9 @@
+if HAVE_GST_CHECK
+SUBDIRS_CHECK = check
+else
+SUBDIRS_CHECK =
+endif
+
+SUBDIRS = $(SUBDIRS_CHECK)
+
+DIST_SUBDIRS = check
diff --git a/tests/Makefile.in b/tests/Makefile.in
new file mode 100644 (file)
index 0000000..3f4ef58
--- /dev/null
@@ -0,0 +1,725 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 = tests
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+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
+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"
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+@HAVE_GST_CHECK_FALSE@SUBDIRS_CHECK = 
+@HAVE_GST_CHECK_TRUE@SUBDIRS_CHECK = check
+SUBDIRS = $(SUBDIRS_CHECK)
+DIST_SUBDIRS = check
+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 tests/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tests/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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+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 --git a/tests/check/Makefile.am b/tests/check/Makefile.am
new file mode 100644 (file)
index 0000000..77241ba
--- /dev/null
@@ -0,0 +1,74 @@
+include $(top_srcdir)/common/check.mak
+
+CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
+
+REGISTRY_ENVIRONMENT = \
+       GST_REGISTRY=$(CHECK_REGISTRY)
+
+TESTS_ENVIRONMENT = \
+       $(REGISTRY_ENVIRONMENT)                                 \
+       GST_PLUGIN_SYSTEM_PATH=                                 \
+       GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR)  \
+       GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-ugly@$(top_builddir)" \
+       GST_STATE_IGNORE_ELEMENTS="siddec dvdreadsrc cdiocddasrc"
+
+# ths core dumps of some machines have PIDs appended
+CLEANFILES = core.* test-registry.*
+
+clean-local: clean-local-check
+
+TESTS = $(check_PROGRAMS)
+
+if USE_AMRNB
+AMRNB = elements/amrnbenc
+else
+AMRNB =
+endif
+
+if USE_LAME
+LAME = pipelines/lame
+else
+LAME =
+endif
+
+if USE_MPEG2DEC
+MPEG2DEC = elements/mpeg2dec
+else
+MPEG2DEC =
+endif
+
+if USE_X264
+check_x264enc=elements/x264enc
+else
+check_x264enc=
+endif
+
+check_PROGRAMS = \
+       generic/index \
+       generic/states \
+       $(AMRNB) \
+       $(LAME) \
+       $(MPEG2DEC) \
+       $(check_x264enc) \
+       elements/xingmux
+
+# these tests don't even pass
+noinst_PROGRAMS =
+
+noinst_HEADERS = elements/xingmux_testdata.h
+
+AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) \
+               -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
+
+# valgrind testing
+VALGRIND_TESTS_DISABLE = \
+       generic/index \
+       elements/x264enc
+
+SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp
+
+elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+
+EXTRA_DIST = gst-plugins-ugly.supp
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
new file mode 100644 (file)
index 0000000..1eea6bc
--- /dev/null
@@ -0,0 +1,1150 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(top_srcdir)/common/check.mak
+check_PROGRAMS = generic/index$(EXEEXT) generic/states$(EXEEXT) \
+       $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+       $(am__EXEEXT_4) elements/xingmux$(EXEEXT)
+noinst_PROGRAMS =
+subdir = tests/check
+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-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-function.m4 \
+       $(top_srcdir)/common/m4/gst-gettext.m4 \
+       $(top_srcdir)/common/m4/gst-glib2.m4 \
+       $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+       $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+       $(top_srcdir)/common/m4/gst-plugindir.m4 \
+       $(top_srcdir)/common/m4/gst.m4 \
+       $(top_srcdir)/common/m4/gtk-doc.m4 \
+       $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+       $(top_srcdir)/m4/a52.m4 $(top_srcdir)/m4/gettext.m4 \
+       $(top_srcdir)/m4/gst-sid.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 =
+@USE_AMRNB_TRUE@am__EXEEXT_1 = elements/amrnbenc$(EXEEXT)
+@USE_LAME_TRUE@am__EXEEXT_2 = pipelines/lame$(EXEEXT)
+@USE_MPEG2DEC_TRUE@am__EXEEXT_3 = elements/mpeg2dec$(EXEEXT)
+@USE_X264_TRUE@am__EXEEXT_4 = elements/x264enc$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+elements_amrnbenc_SOURCES = elements/amrnbenc.c
+elements_amrnbenc_OBJECTS = amrnbenc.$(OBJEXT)
+elements_amrnbenc_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+elements_amrnbenc_DEPENDENCIES = $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__dirstamp = $(am__leading_dot)dirstamp
+elements_mpeg2dec_SOURCES = elements/mpeg2dec.c
+elements_mpeg2dec_OBJECTS = mpeg2dec.$(OBJEXT)
+elements_mpeg2dec_LDADD = $(LDADD)
+elements_mpeg2dec_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_x264enc_SOURCES = elements/x264enc.c
+elements_x264enc_OBJECTS = x264enc.$(OBJEXT)
+elements_x264enc_LDADD = $(LDADD)
+elements_x264enc_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_xingmux_SOURCES = elements/xingmux.c
+elements_xingmux_OBJECTS = xingmux.$(OBJEXT)
+elements_xingmux_LDADD = $(LDADD)
+elements_xingmux_DEPENDENCIES = $(am__DEPENDENCIES_1)
+generic_index_SOURCES = generic/index.c
+generic_index_OBJECTS = index.$(OBJEXT)
+generic_index_LDADD = $(LDADD)
+generic_index_DEPENDENCIES = $(am__DEPENDENCIES_1)
+generic_states_SOURCES = generic/states.c
+generic_states_OBJECTS = states.$(OBJEXT)
+generic_states_LDADD = $(LDADD)
+generic_states_DEPENDENCIES = $(am__DEPENDENCIES_1)
+pipelines_lame_SOURCES = pipelines/lame.c
+pipelines_lame_OBJECTS = lame.$(OBJEXT)
+pipelines_lame_LDADD = $(LDADD)
+pipelines_lame_DEPENDENCIES = $(am__DEPENDENCIES_1)
+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) $(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_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+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_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = elements/amrnbenc.c elements/mpeg2dec.c elements/x264enc.c \
+       elements/xingmux.c generic/index.c generic/states.c \
+       pipelines/lame.c
+DIST_SOURCES = elements/amrnbenc.c elements/mpeg2dec.c \
+       elements/x264enc.c elements/xingmux.c generic/index.c \
+       generic/states.c pipelines/lame.c
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52DEC_CFLAGS = @A52DEC_CFLAGS@
+A52DEC_LIBS = @A52DEC_LIBS@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMRNB_CFLAGS = @AMRNB_CFLAGS@
+AMRNB_LIBS = @AMRNB_LIBS@
+AMRWB_CFLAGS = @AMRWB_CFLAGS@
+AMRWB_LIBS = @AMRWB_LIBS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CDIO_CFLAGS = @CDIO_CFLAGS@
+CDIO_LIBS = @CDIO_LIBS@
+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@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVDREAD_LIBS = @DVDREAD_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@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_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_CXXFLAGS = @GST_CXXFLAGS@
+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_DIR = @GST_PLUGINS_BASE_DIR@
+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@
+HAVE_AMRNB = @HAVE_AMRNB@
+HAVE_AMRWB = @HAVE_AMRWB@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DVDREAD = @HAVE_DVDREAD@
+HAVE_LAME = @HAVE_LAME@
+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@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAD_CFLAGS = @MAD_CFLAGS@
+MAD_LIBS = @MAD_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MPEG2DEC_CFLAGS = @MPEG2DEC_CFLAGS@
+MPEG2DEC_LIBS = @MPEG2DEC_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIDPLAY_CFLAGS = @SIDPLAY_CFLAGS@
+SIDPLAY_LIBS = @SIDPLAY_LIBS@
+STRIP = @STRIP@
+TWOLAME_CFLAGS = @TWOLAME_CFLAGS@
+TWOLAME_LIBS = @TWOLAME_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@
+WIN32_LIBS = @WIN32_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+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@
+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@
+LOOPS = 10
+
+# inspect every plugin feature
+GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_MAJORMINOR)
+CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
+REGISTRY_ENVIRONMENT = \
+       GST_REGISTRY=$(CHECK_REGISTRY)
+
+TESTS_ENVIRONMENT = \
+       $(REGISTRY_ENVIRONMENT)                                 \
+       GST_PLUGIN_SYSTEM_PATH=                                 \
+       GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/ext:$(top_builddir)/sys:$(GSTPB_PLUGINS_DIR):$(GST_PLUGINS_DIR)  \
+       GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-ugly@$(top_builddir)" \
+       GST_STATE_IGNORE_ELEMENTS="siddec dvdreadsrc cdiocddasrc"
+
+
+# ths core dumps of some machines have PIDs appended
+CLEANFILES = core.* test-registry.*
+TESTS = $(check_PROGRAMS)
+@USE_AMRNB_FALSE@AMRNB = 
+@USE_AMRNB_TRUE@AMRNB = elements/amrnbenc
+@USE_LAME_FALSE@LAME = 
+@USE_LAME_TRUE@LAME = pipelines/lame
+@USE_MPEG2DEC_FALSE@MPEG2DEC = 
+@USE_MPEG2DEC_TRUE@MPEG2DEC = elements/mpeg2dec
+@USE_X264_FALSE@check_x264enc = 
+@USE_X264_TRUE@check_x264enc = elements/x264enc
+noinst_HEADERS = elements/xingmux_testdata.h
+AM_CFLAGS = $(GST_OBJ_CFLAGS) $(GST_CHECK_CFLAGS) $(CHECK_CFLAGS) \
+               -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+
+LDADD = $(GST_OBJ_LIBS) $(GST_CHECK_LIBS) $(CHECK_LIBS)
+
+# valgrind testing
+VALGRIND_TESTS_DISABLE = \
+       generic/index \
+       elements/x264enc
+
+SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-ugly.supp
+elements_cmmldec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+elements_cmmlenc_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(AM_CFLAGS)
+EXTRA_DIST = gst-plugins-ugly.supp
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/check.mak $(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 tests/check/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --gnu tests/check/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_srcdir)/common/check.mak:
+
+$(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):
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+elements/$(am__dirstamp):
+       @$(MKDIR_P) elements
+       @: > elements/$(am__dirstamp)
+elements/amrnbenc$(EXEEXT): $(elements_amrnbenc_OBJECTS) $(elements_amrnbenc_DEPENDENCIES) $(EXTRA_elements_amrnbenc_DEPENDENCIES) elements/$(am__dirstamp)
+       @rm -f elements/amrnbenc$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(elements_amrnbenc_OBJECTS) $(elements_amrnbenc_LDADD) $(LIBS)
+elements/mpeg2dec$(EXEEXT): $(elements_mpeg2dec_OBJECTS) $(elements_mpeg2dec_DEPENDENCIES) $(EXTRA_elements_mpeg2dec_DEPENDENCIES) elements/$(am__dirstamp)
+       @rm -f elements/mpeg2dec$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(elements_mpeg2dec_OBJECTS) $(elements_mpeg2dec_LDADD) $(LIBS)
+elements/x264enc$(EXEEXT): $(elements_x264enc_OBJECTS) $(elements_x264enc_DEPENDENCIES) $(EXTRA_elements_x264enc_DEPENDENCIES) elements/$(am__dirstamp)
+       @rm -f elements/x264enc$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(elements_x264enc_OBJECTS) $(elements_x264enc_LDADD) $(LIBS)
+elements/xingmux$(EXEEXT): $(elements_xingmux_OBJECTS) $(elements_xingmux_DEPENDENCIES) $(EXTRA_elements_xingmux_DEPENDENCIES) elements/$(am__dirstamp)
+       @rm -f elements/xingmux$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(elements_xingmux_OBJECTS) $(elements_xingmux_LDADD) $(LIBS)
+generic/$(am__dirstamp):
+       @$(MKDIR_P) generic
+       @: > generic/$(am__dirstamp)
+generic/index$(EXEEXT): $(generic_index_OBJECTS) $(generic_index_DEPENDENCIES) $(EXTRA_generic_index_DEPENDENCIES) generic/$(am__dirstamp)
+       @rm -f generic/index$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(generic_index_OBJECTS) $(generic_index_LDADD) $(LIBS)
+generic/states$(EXEEXT): $(generic_states_OBJECTS) $(generic_states_DEPENDENCIES) $(EXTRA_generic_states_DEPENDENCIES) generic/$(am__dirstamp)
+       @rm -f generic/states$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(generic_states_OBJECTS) $(generic_states_LDADD) $(LIBS)
+pipelines/$(am__dirstamp):
+       @$(MKDIR_P) pipelines
+       @: > pipelines/$(am__dirstamp)
+pipelines/lame$(EXEEXT): $(pipelines_lame_OBJECTS) $(pipelines_lame_DEPENDENCIES) $(EXTRA_pipelines_lame_DEPENDENCIES) pipelines/$(am__dirstamp)
+       @rm -f pipelines/lame$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(pipelines_lame_OBJECTS) $(pipelines_lame_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/amrnbenc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/index.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lame.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpeg2dec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/states.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x264enc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xingmux.Po@am__quote@
+
+.c.o:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+amrnbenc.o: elements/amrnbenc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT amrnbenc.o -MD -MP -MF $(DEPDIR)/amrnbenc.Tpo -c -o amrnbenc.o `test -f 'elements/amrnbenc.c' || echo '$(srcdir)/'`elements/amrnbenc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/amrnbenc.Tpo $(DEPDIR)/amrnbenc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/amrnbenc.c' object='amrnbenc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o amrnbenc.o `test -f 'elements/amrnbenc.c' || echo '$(srcdir)/'`elements/amrnbenc.c
+
+amrnbenc.obj: elements/amrnbenc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT amrnbenc.obj -MD -MP -MF $(DEPDIR)/amrnbenc.Tpo -c -o amrnbenc.obj `if test -f 'elements/amrnbenc.c'; then $(CYGPATH_W) 'elements/amrnbenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/amrnbenc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/amrnbenc.Tpo $(DEPDIR)/amrnbenc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/amrnbenc.c' object='amrnbenc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o amrnbenc.obj `if test -f 'elements/amrnbenc.c'; then $(CYGPATH_W) 'elements/amrnbenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/amrnbenc.c'; fi`
+
+mpeg2dec.o: elements/mpeg2dec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpeg2dec.o -MD -MP -MF $(DEPDIR)/mpeg2dec.Tpo -c -o mpeg2dec.o `test -f 'elements/mpeg2dec.c' || echo '$(srcdir)/'`elements/mpeg2dec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/mpeg2dec.Tpo $(DEPDIR)/mpeg2dec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/mpeg2dec.c' object='mpeg2dec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpeg2dec.o `test -f 'elements/mpeg2dec.c' || echo '$(srcdir)/'`elements/mpeg2dec.c
+
+mpeg2dec.obj: elements/mpeg2dec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mpeg2dec.obj -MD -MP -MF $(DEPDIR)/mpeg2dec.Tpo -c -o mpeg2dec.obj `if test -f 'elements/mpeg2dec.c'; then $(CYGPATH_W) 'elements/mpeg2dec.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpeg2dec.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/mpeg2dec.Tpo $(DEPDIR)/mpeg2dec.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/mpeg2dec.c' object='mpeg2dec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mpeg2dec.obj `if test -f 'elements/mpeg2dec.c'; then $(CYGPATH_W) 'elements/mpeg2dec.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpeg2dec.c'; fi`
+
+x264enc.o: elements/x264enc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT x264enc.o -MD -MP -MF $(DEPDIR)/x264enc.Tpo -c -o x264enc.o `test -f 'elements/x264enc.c' || echo '$(srcdir)/'`elements/x264enc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/x264enc.Tpo $(DEPDIR)/x264enc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/x264enc.c' object='x264enc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o x264enc.o `test -f 'elements/x264enc.c' || echo '$(srcdir)/'`elements/x264enc.c
+
+x264enc.obj: elements/x264enc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT x264enc.obj -MD -MP -MF $(DEPDIR)/x264enc.Tpo -c -o x264enc.obj `if test -f 'elements/x264enc.c'; then $(CYGPATH_W) 'elements/x264enc.c'; else $(CYGPATH_W) '$(srcdir)/elements/x264enc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/x264enc.Tpo $(DEPDIR)/x264enc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/x264enc.c' object='x264enc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o x264enc.obj `if test -f 'elements/x264enc.c'; then $(CYGPATH_W) 'elements/x264enc.c'; else $(CYGPATH_W) '$(srcdir)/elements/x264enc.c'; fi`
+
+xingmux.o: elements/xingmux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xingmux.o -MD -MP -MF $(DEPDIR)/xingmux.Tpo -c -o xingmux.o `test -f 'elements/xingmux.c' || echo '$(srcdir)/'`elements/xingmux.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/xingmux.Tpo $(DEPDIR)/xingmux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/xingmux.c' object='xingmux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xingmux.o `test -f 'elements/xingmux.c' || echo '$(srcdir)/'`elements/xingmux.c
+
+xingmux.obj: elements/xingmux.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xingmux.obj -MD -MP -MF $(DEPDIR)/xingmux.Tpo -c -o xingmux.obj `if test -f 'elements/xingmux.c'; then $(CYGPATH_W) 'elements/xingmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/xingmux.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/xingmux.Tpo $(DEPDIR)/xingmux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='elements/xingmux.c' object='xingmux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xingmux.obj `if test -f 'elements/xingmux.c'; then $(CYGPATH_W) 'elements/xingmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/xingmux.c'; fi`
+
+index.o: generic/index.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT index.o -MD -MP -MF $(DEPDIR)/index.Tpo -c -o index.o `test -f 'generic/index.c' || echo '$(srcdir)/'`generic/index.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/index.Tpo $(DEPDIR)/index.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='generic/index.c' object='index.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o index.o `test -f 'generic/index.c' || echo '$(srcdir)/'`generic/index.c
+
+index.obj: generic/index.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT index.obj -MD -MP -MF $(DEPDIR)/index.Tpo -c -o index.obj `if test -f 'generic/index.c'; then $(CYGPATH_W) 'generic/index.c'; else $(CYGPATH_W) '$(srcdir)/generic/index.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/index.Tpo $(DEPDIR)/index.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='generic/index.c' object='index.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o index.obj `if test -f 'generic/index.c'; then $(CYGPATH_W) 'generic/index.c'; else $(CYGPATH_W) '$(srcdir)/generic/index.c'; fi`
+
+states.o: generic/states.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT states.o -MD -MP -MF $(DEPDIR)/states.Tpo -c -o states.o `test -f 'generic/states.c' || echo '$(srcdir)/'`generic/states.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/states.Tpo $(DEPDIR)/states.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='generic/states.c' object='states.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o states.o `test -f 'generic/states.c' || echo '$(srcdir)/'`generic/states.c
+
+states.obj: generic/states.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT states.obj -MD -MP -MF $(DEPDIR)/states.Tpo -c -o states.obj `if test -f 'generic/states.c'; then $(CYGPATH_W) 'generic/states.c'; else $(CYGPATH_W) '$(srcdir)/generic/states.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/states.Tpo $(DEPDIR)/states.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='generic/states.c' object='states.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o states.obj `if test -f 'generic/states.c'; then $(CYGPATH_W) 'generic/states.c'; else $(CYGPATH_W) '$(srcdir)/generic/states.c'; fi`
+
+lame.o: pipelines/lame.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lame.o -MD -MP -MF $(DEPDIR)/lame.Tpo -c -o lame.o `test -f 'pipelines/lame.c' || echo '$(srcdir)/'`pipelines/lame.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lame.Tpo $(DEPDIR)/lame.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pipelines/lame.c' object='lame.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lame.o `test -f 'pipelines/lame.c' || echo '$(srcdir)/'`pipelines/lame.c
+
+lame.obj: pipelines/lame.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lame.obj -MD -MP -MF $(DEPDIR)/lame.Tpo -c -o lame.obj `if test -f 'pipelines/lame.c'; then $(CYGPATH_W) 'pipelines/lame.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/lame.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lame.Tpo $(DEPDIR)/lame.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pipelines/lame.c' object='lame.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lame.obj `if test -f 'pipelines/lame.c'; then $(CYGPATH_W) 'pipelines/lame.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/lame.c'; fi`
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+       -rm -rf elements/.libs elements/_libs
+       -rm -rf generic/.libs generic/_libs
+       -rm -rf pipelines/.libs pipelines/_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
+
+check-TESTS: $(TESTS)
+       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+       srcdir=$(srcdir); export srcdir; \
+       list=' $(TESTS) '; \
+       $(am__tty_colors); \
+       if test -n "$$list"; then \
+         for tst in $$list; do \
+           if test -f ./$$tst; then dir=./; \
+           elif test -f $$tst; then dir=; \
+           else dir="$(srcdir)/"; fi; \
+           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xpass=`expr $$xpass + 1`; \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=XPASS; \
+             ;; \
+             *) \
+               col=$$grn; res=PASS; \
+             ;; \
+             esac; \
+           elif test $$? -ne 77; then \
+             all=`expr $$all + 1`; \
+             case " $(XFAIL_TESTS) " in \
+             *[\ \     ]$$tst[\ \      ]*) \
+               xfail=`expr $$xfail + 1`; \
+               col=$$lgn; res=XFAIL; \
+             ;; \
+             *) \
+               failed=`expr $$failed + 1`; \
+               col=$$red; res=FAIL; \
+             ;; \
+             esac; \
+           else \
+             skip=`expr $$skip + 1`; \
+             col=$$blu; res=SKIP; \
+           fi; \
+           echo "$${col}$$res$${std}: $$tst"; \
+         done; \
+         if test "$$all" -eq 1; then \
+           tests="test"; \
+           All=""; \
+         else \
+           tests="tests"; \
+           All="All "; \
+         fi; \
+         if test "$$failed" -eq 0; then \
+           if test "$$xfail" -eq 0; then \
+             banner="$$All$$all $$tests passed"; \
+           else \
+             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+           fi; \
+         else \
+           if test "$$xpass" -eq 0; then \
+             banner="$$failed of $$all $$tests failed"; \
+           else \
+             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+           fi; \
+         fi; \
+         dashes="$$banner"; \
+         skipped=""; \
+         if test "$$skip" -ne 0; then \
+           if test "$$skip" -eq 1; then \
+             skipped="($$skip test was not run)"; \
+           else \
+             skipped="($$skip tests were not run)"; \
+           fi; \
+           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$skipped"; \
+         fi; \
+         report=""; \
+         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+           report="Please report to $(PACKAGE_BUGREPORT)"; \
+           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+             dashes="$$report"; \
+         fi; \
+         dashes=`echo "$$dashes" | sed s/./=/g`; \
+         if test "$$failed" -eq 0; then \
+           col="$$grn"; \
+         else \
+           col="$$red"; \
+         fi; \
+         echo "$${col}$$dashes$${std}"; \
+         echo "$${col}$$banner$${std}"; \
+         test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+         test -z "$$report" || echo "$${col}$$report$${std}"; \
+         echo "$${col}$$dashes$${std}"; \
+         test "$$failed" -eq 0; \
+       else :; fi
+
+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
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS) $(HEADERS)
+installdirs:
+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:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+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)
+       -rm -f elements/$(am__dirstamp)
+       -rm -f generic/$(am__dirstamp)
+       -rm -f pipelines/$(am__dirstamp)
+
+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-checkPROGRAMS clean-generic clean-libtool clean-local \
+       clean-noinstPROGRAMS 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-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:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic clean-libtool clean-local \
+       clean-noinstPROGRAMS 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-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
+
+
+# keep target around, since it's referenced in the modules' Makefiles
+clean-local-check:
+       @echo
+
+# hangs spectacularly on some machines, so let's not do this by default yet
+@HAVE_VALGRIND_TRUE@check-valgrind:
+@HAVE_VALGRIND_TRUE@   $(MAKE) valgrind
+@HAVE_VALGRIND_FALSE@check-valgrind:
+@HAVE_VALGRIND_FALSE@  @true
+
+# run any given test by running make test.check
+# if the test fails, run it again at at least debug level 2
+%.check: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $* ||                                                   \
+       $(TESTS_ENVIRONMENT)                                    \
+       GST_DEBUG=$$GST_DEBUG,*:2                               \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $*
+
+# run any given test in a loop
+%.torture: %
+       @for i in `seq 1 $(LOOPS)`; do                          \
+       $(TESTS_ENVIRONMENT)                                    \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $*; done
+
+# run any given test in an infinite loop
+%.forever: %
+       @while true; do                                         \
+       $(TESTS_ENVIRONMENT)                                    \
+       CK_DEFAULT_TIMEOUT=20                                   \
+       $* || break; done
+
+# valgrind any given test by running make test.valgrind
+%.valgrind: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=360                                  \
+       G_SLICE=always-malloc                                   \
+       $(LIBTOOL) --mode=execute                               \
+       $(VALGRIND_PATH) -q                                     \
+       $(foreach s,$(SUPPRESSIONS),--suppressions=$(s))        \
+       --tool=memcheck --leak-check=full --trace-children=yes  \
+       --leak-resolution=high --num-callers=20                 \
+       ./$* 2>&1 | tee valgrind.log
+       @if grep "==" valgrind.log > /dev/null 2>&1; then       \
+           rm valgrind.log;                                    \
+           exit 1;                                             \
+       fi
+       @rm valgrind.log
+
+# valgrind any given test and generate suppressions for it
+%.valgrind.gen-suppressions: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_DEFAULT_TIMEOUT=360                                  \
+       G_SLICE=always-malloc                                   \
+       $(LIBTOOL) --mode=execute                               \
+       $(VALGRIND_PATH) -q                                     \
+       $(foreach s,$(SUPPRESSIONS),--suppressions=$(s))        \
+       --tool=memcheck --leak-check=full --trace-children=yes  \
+       --leak-resolution=high --num-callers=20                 \
+       --gen-suppressions=all                                  \
+       ./$* 2>&1 | tee suppressions.log
+
+# valgrind any given test until failure by running make test.valgrind-forever
+%.valgrind-forever: %
+       @while $(MAKE) $*.valgrind; do                          \
+         true; done
+
+# gdb any given test by running make test.gdb
+%.gdb: %
+       @$(TESTS_ENVIRONMENT)                                   \
+       CK_FORK=no                                              \
+       $(LIBTOOL) --mode=execute                               \
+       gdb $*
+
+# torture tests
+torture: $(TESTS)
+       -rm test-registry.xml
+       @echo "Torturing tests ..."
+       @for i in `seq 1 $(LOOPS)`; do                          \
+               $(MAKE) check ||                                \
+               (echo "Failure after $$i runs"; exit 1) ||      \
+               exit 1;                                         \
+       done
+       @banner="All $(LOOPS) loops passed";                    \
+       dashes=`echo "$$banner" | sed s/./=/g`;                 \
+       echo $$dashes; echo $$banner; echo $$dashes
+
+# forever tests
+forever: $(TESTS)
+       -rm test-registry.xml
+       @echo "Forever tests ..."
+       @while true; do                                         \
+               $(MAKE) check ||                                \
+               (echo "Failure"; exit 1) ||                     \
+               exit 1;                                         \
+       done
+
+# valgrind all tests
+valgrind: $(TESTS)
+       @echo "Valgrinding tests ..."
+       @failed=0;                                                      \
+       for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do   \
+               $(MAKE) $$t.valgrind;                                   \
+               if test "$$?" -ne 0; then                               \
+                       echo "Valgrind error for test $$t";             \
+                       failed=`expr $$failed + 1`;                     \
+                       whicht="$$whicht $$t";                          \
+               fi;                                                     \
+       done;                                                           \
+       if test "$$failed" -ne 0; then                                  \
+               echo "$$failed tests had leaks or errors under valgrind:";      \
+               echo "$$whicht";                                        \
+               false;                                                  \
+       fi
+
+# valgrind all tests and generate suppressions
+valgrind.gen-suppressions: $(TESTS)
+       @echo "Valgrinding tests ..."
+       @failed=0;                                                      \
+       for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do   \
+               $(MAKE) $$t.valgrind.gen-suppressions;                  \
+               if test "$$?" -ne 0; then                               \
+                       echo "Valgrind error for test $$t";             \
+                       failed=`expr $$failed + 1`;                     \
+                       whicht="$$whicht $$t";                          \
+               fi;                                                     \
+       done;                                                           \
+       if test "$$failed" -ne 0; then                                  \
+               echo "$$failed tests had leaks or errors under valgrind:";      \
+               echo "$$whicht";                                        \
+               false;                                                  \
+       fi
+inspect:
+       @echo "Inspecting features ..."
+       @for e in `$(TESTS_ENVIRONMENT) $(GST_INSPECT) | head -n -2     \
+         | cut -d: -f2`;                                               \
+         do echo Inspecting $$e;                                       \
+            $(GST_INSPECT) $$e > /dev/null 2>&1; done
+
+help:
+       @echo
+       @echo "make check                         -- run all checks"
+       @echo "make torture                       -- run all checks $(LOOPS) times"
+       @echo "make (dir)/(test).check            -- run the given check once"
+       @echo "make (dir)/(test).forever          -- run the given check forever"
+       @echo "make (dir)/(test).torture          -- run the given check $(LOOPS) times"
+       @echo
+       @echo "make (dir)/(test).gdb              -- start up gdb for the given test"
+       @echo
+       @echo "make valgrind                      -- valgrind all tests"
+       @echo "make valgrind.gen-suppressions     -- generate suppressions for all tests"
+       @echo "                                      and save to suppressions.log"
+       @echo "make (dir)/(test).valgrind         -- valgrind the given test"
+       @echo "make (dir)/(test).valgrind-forever -- valgrind the given test forever"
+       @echo "make (dir)/(test).valgrind.gen-suppressions -- generate suppressions"
+       @echo "                                               and save to suppressions.log"
+       @echo "make inspect                       -- inspect all plugin features"
+       @echo
+       @echo
+       @echo "Additionally, you can use the GST_CHECKS environment variable to"
+       @echo "specify which test(s) should be run. This is useful if you are"
+       @echo "debugging a failure in one particular test, or want to reproduce"
+       @echo "a race condition in a single test."
+       @echo
+       @echo "Examples:"
+       @echo
+       @echo "  GST_CHECKS=test_this,test_that  make element/foobar.check"
+       @echo "  GST_CHECKS=test_many_threads    make element/foobar.forever"
+       @echo
+
+clean-local: clean-local-check
+
+# 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 --git a/tests/check/elements/amrnbenc.c b/tests/check/elements/amrnbenc.c
new file mode 100644 (file)
index 0000000..82b938a
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * GStreamer
+ *
+ * unit test for amrnbenc
+ *
+ * Copyright (C) 2006 Thomas Vander Stichele <thomas at apestaart dot org>
+ *
+ * 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.
+ */
+
+#include <gst/check/gstcheck.h>
+
+#define SRC_CAPS "audio/x-raw-int,width=16,depth=16,channels=1,rate=8000,signed=true,endianness=BYTE_ORDER"
+#define SINK_CAPS "audio/AMR"
+
+GList *buffers;
+GList *current_buf = NULL;
+
+GstPad *srcpad, *sinkpad;
+
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (SINK_CAPS)
+    );
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (SRC_CAPS)
+    );
+
+/* takes a copy of the passed buffer data */
+GstBuffer *
+buffer_new (const gchar * buffer_data, guint size)
+{
+  GstBuffer *buffer;
+  GstCaps *caps;
+
+  buffer = gst_buffer_new_and_alloc (size);
+  memcpy (GST_BUFFER_DATA (buffer), buffer_data, size);
+  caps = gst_caps_from_string (SRC_CAPS);
+  gst_buffer_set_caps (buffer, caps);
+  gst_caps_unref (caps);
+
+  return buffer;
+}
+
+static void
+buffer_unref (void *buffer, void *user_data)
+{
+  gst_buffer_unref (GST_BUFFER (buffer));
+}
+
+GstElement *
+setup_amrnbenc ()
+{
+  GstElement *amrnbenc;
+  GstBus *bus;
+  guint64 granulerate_n, granulerate_d;
+
+  GST_DEBUG ("setup_amrnbenc");
+
+  amrnbenc = gst_check_setup_element ("amrnbenc");
+  srcpad = gst_check_setup_src_pad (amrnbenc, &srctemplate, NULL);
+  sinkpad = gst_check_setup_sink_pad (amrnbenc, &sinktemplate, NULL);
+  gst_pad_set_active (srcpad, TRUE);
+  gst_pad_set_active (sinkpad, TRUE);
+
+  bus = gst_bus_new ();
+  gst_element_set_bus (amrnbenc, bus);
+
+  fail_unless (gst_element_set_state (amrnbenc,
+          GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE,
+      "could not set to playing");
+
+  buffers = NULL;
+  return amrnbenc;
+}
+
+static void
+cleanup_amrnbenc (GstElement * amrnbenc)
+{
+  GstBus *bus;
+
+  /* free encoded buffers */
+  g_list_foreach (buffers, buffer_unref, NULL);
+  g_list_free (buffers);
+  buffers = NULL;
+
+  bus = GST_ELEMENT_BUS (amrnbenc);
+  gst_bus_set_flushing (bus, TRUE);
+  gst_object_unref (bus);
+
+  GST_DEBUG ("cleanup_amrnbenc");
+  gst_pad_set_active (srcpad, FALSE);
+  gst_pad_set_active (sinkpad, FALSE);
+  gst_check_teardown_src_pad (amrnbenc);
+  gst_check_teardown_sink_pad (amrnbenc);
+  gst_check_teardown_element (amrnbenc);
+}
+
+/* push a random block of audio of the given size */
+static void
+push_data (gint size, GstFlowReturn expected_return)
+{
+  GstBuffer *buffer;
+  GstFlowReturn res;
+  gchar *data = g_malloc0 (size);
+
+  buffer = buffer_new (data, size);
+  g_free (data);
+  res = gst_pad_push (srcpad, buffer);
+  fail_unless (res == expected_return,
+      "pushing audio returned %d not %d", res, expected_return);
+}
+
+GST_START_TEST (test_enc)
+{
+  GstElement *amrnbenc;
+
+  amrnbenc = setup_amrnbenc ();
+  push_data (1000, GST_FLOW_OK);
+
+  cleanup_amrnbenc (amrnbenc);
+}
+
+GST_END_TEST;
+
+static Suite *
+amrnbenc_suite ()
+{
+  Suite *s = suite_create ("amrnbenc");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_enc);
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = amrnbenc_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/tests/check/elements/mpeg2dec.c b/tests/check/elements/mpeg2dec.c
new file mode 100644 (file)
index 0000000..ce4af1e
--- /dev/null
@@ -0,0 +1,1579 @@
+/* GStreamer
+ *
+ * unit test for mpeg2dec
+ *
+ * Copyright (c) 2006 Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * 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.
+ */
+
+#include <unistd.h>
+
+#include <gst/check/gstcheck.h>
+
+/* For ease of programming we use globals to keep refs for our floating
+ * src and sink pads we create; otherwise we always have to do get_pad,
+ * get_peer, and then remove references in every test function */
+static GstPad *mysrcpad, *mysinkpad;
+
+/* mpeg2 video created with gst-launch-0.10 videotestsrc num-buffers=32 pattern=blue ! "video/x-raw-yuv,format=(fourcc)I420,width=176,height=144,framerate=(fraction)25/1" ! ffenc_mpeg2video ! filesink location=test.mpg
+*/
+
+guint8 test_stream1[] = {
+  0x00, 0x00, 0x01, 0xb3, 0x0b, 0x00, 0x90, 0x13,
+  0xff, 0xff, 0xe0, 0x28, 0x00, 0x00, 0x01, 0xb5,
+  0x14, 0x8a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0xb8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00,
+  0x01, 0xb5, 0x8f, 0xff, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x88, 0x00, 0x00, 0x01, 0x02, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x03, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01,
+  0x04, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00,
+  0x00, 0x01, 0x05, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x88, 0x00, 0x00, 0x01, 0x06, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x07, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01,
+  0x08, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00,
+  0x00, 0x01, 0x09, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x88, 0x00, 0x00, 0x01, 0x00, 0x00, 0x57, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0xd7, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0x17, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x57, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01,
+  0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x01, 0xd7, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0x17, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x57, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02,
+  0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x02, 0xd7, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x03, 0x17, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x03, 0x57, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x03,
+  0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0xb3, 0x0b, 0x00, 0x90, 0x13, 0xff, 0xff, 0xe0,
+  0x28, 0x00, 0x00, 0x01, 0xb5, 0x14, 0x8a, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb8, 0x00,
+  0x08, 0x07, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x0f, 0xff, 0xf8, 0x00, 0x00, 0x01, 0xb5, 0x8f,
+  0xff, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00,
+  0x01, 0x02, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88,
+  0x00, 0x00, 0x01, 0x03, 0x13, 0xf8, 0xe5, 0x29,
+  0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x88, 0x00, 0x00, 0x01, 0x04, 0x13, 0xf8,
+  0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x05,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00,
+  0x01, 0x06, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88,
+  0x00, 0x00, 0x01, 0x07, 0x13, 0xf8, 0xe5, 0x29,
+  0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x88, 0x00, 0x00, 0x01, 0x08, 0x13, 0xf8,
+  0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x09,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x57, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x97, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0xd7,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x01, 0x17, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0x57, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x97, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0xd7,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x17, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x02, 0x57, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x02, 0x97, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0xd7,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x03, 0x17, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x03, 0x57, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xb3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x03, 0x97, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xb3, 0x80, 0x00, 0x00, 0x01, 0xb3, 0x0b, 0x00,
+  0x90, 0x13, 0xff, 0xff, 0xe0, 0x28, 0x00, 0x00,
+  0x01, 0xb5, 0x14, 0x8a, 0x00, 0x01, 0x00, 0x00,
+  0x00, 0x00, 0x01, 0xb8, 0x00, 0x08, 0x22, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x00, 0x0f, 0xff, 0xf8,
+  0x00, 0x00, 0x01, 0xb5, 0x8f, 0xff, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x02, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01,
+  0x03, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00,
+  0x00, 0x01, 0x04, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x88, 0x00, 0x00, 0x01, 0x05, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x06, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x88, 0x00, 0x00, 0x01,
+  0x07, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x88, 0x00,
+  0x00, 0x01, 0x08, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x88, 0x00, 0x00, 0x01, 0x09, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x88, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x57, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xb3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xb3, 0x80,
+};
+
+/* mpeg2 video created with gst-launch-0.10 videotestsrc num-buffers=32 pattern=blue ! "video/x-raw-yuv,format=(fourcc)I420,width=183,height=217,framerate=(fraction)25/1" ! ffenc_mpeg2video ! filesink location=test.mpg
+*/
+
+guint8 test_stream2[] = {
+  0x00, 0x00, 0x01, 0xb3, 0x0b, 0x70, 0xd9, 0x13,
+  0xff, 0xff, 0xe0, 0x28, 0x00, 0x00, 0x01, 0xb5,
+  0x14, 0x8a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0xb8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00,
+  0x01, 0xb5, 0x8f, 0xff, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x1b, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x02, 0x1b, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x03, 0x1b,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x04, 0x1b, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x05, 0x1b, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x06, 0x1b, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x07, 0x1b,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x08, 0x1b, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x09, 0x1b, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x0a, 0x1b, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x0b, 0x1b,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x0c, 0x1b, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x0d, 0x1b, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x0e, 0x1b, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00,
+  0x57, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0xd7, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x17, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01,
+  0x57, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x01, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x01, 0xd7, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x17, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02,
+  0x57, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x02, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x00, 0x02, 0xd7, 0xff, 0xfb, 0x80,
+  0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41,
+  0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3,
+  0x80, 0x00, 0x00, 0x01, 0x00, 0x03, 0x17, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x03,
+  0x57, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5,
+  0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x03, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00,
+  0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00,
+  0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00,
+  0x00, 0x01, 0xb3, 0x0b, 0x70, 0xd9, 0x13, 0xff,
+  0xff, 0xe0, 0x28, 0x00, 0x00, 0x01, 0xb5, 0x14,
+  0x8a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0xb8, 0x00, 0x08, 0x07, 0x80, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00, 0x01,
+  0xb5, 0x8f, 0xff, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x02,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x20, 0x00, 0x00, 0x01, 0x03, 0x13, 0xf8,
+  0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20,
+  0x00, 0x00, 0x01, 0x04, 0x13, 0xf8, 0xe5, 0x29,
+  0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00,
+  0x01, 0x05, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x06,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x20, 0x00, 0x00, 0x01, 0x07, 0x13, 0xf8,
+  0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20,
+  0x00, 0x00, 0x01, 0x08, 0x13, 0xf8, 0xe5, 0x29,
+  0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00,
+  0x01, 0x09, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x0a,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x20, 0x00, 0x00, 0x01, 0x0b, 0x13, 0xf8,
+  0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20,
+  0x00, 0x00, 0x01, 0x0c, 0x13, 0xf8, 0xe5, 0x29,
+  0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00,
+  0x01, 0x0d, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7,
+  0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x0e,
+  0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x57,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0xd7, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x01, 0x17, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x57,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x01, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x01, 0xd7, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x02, 0x17, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x57,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x02, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x00, 0x02, 0xd7, 0xff, 0xfb, 0x80, 0x00,
+  0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80,
+  0x00, 0x00, 0x01, 0x01, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x02, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x03, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x04, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x05, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x06, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x07, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x08, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x09, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80,
+  0x00, 0x00, 0x01, 0x00, 0x03, 0x17, 0xff, 0xfb,
+  0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f, 0xf3,
+  0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12, 0x70,
+  0xa3, 0x80, 0x00, 0x00, 0x01, 0x00, 0x03, 0x57,
+  0xff, 0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81,
+  0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e,
+  0x12, 0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x03, 0x97, 0xff, 0xfb, 0x80, 0x00, 0x00, 0x01,
+  0xb5, 0x81, 0x1f, 0xf3, 0x41, 0x80, 0x00, 0x00,
+  0x01, 0x01, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x02, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x03, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x04, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x05, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x06, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x07, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x08, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x09, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0a, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0b, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0c, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0d, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0x0e, 0x12, 0x70, 0xa3, 0x80, 0x00, 0x00,
+  0x01, 0xb3, 0x0b, 0x70, 0xd9, 0x13, 0xff, 0xff,
+  0xe0, 0x28, 0x00, 0x00, 0x01, 0xb5, 0x14, 0x8a,
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb8,
+  0x00, 0x08, 0x22, 0x80, 0x00, 0x00, 0x01, 0x00,
+  0x00, 0x0f, 0xff, 0xf8, 0x00, 0x00, 0x01, 0xb5,
+  0x8f, 0xff, 0xf3, 0x41, 0x80, 0x00, 0x00, 0x01,
+  0x01, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x02, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x03, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x04, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x05, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x06, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x07, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x08, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x09, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x0a, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x0b, 0x13, 0xf8, 0xe5,
+  0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22,
+  0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e,
+  0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00,
+  0x00, 0x01, 0x0c, 0x13, 0xf8, 0xe5, 0x29, 0x4b,
+  0xf7, 0xfb, 0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5,
+  0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52,
+  0x94, 0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29,
+  0x48, 0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94,
+  0x88, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x20, 0x00, 0x00, 0x01,
+  0x0d, 0x13, 0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb,
+  0xca, 0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48,
+  0x8b, 0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88,
+  0xb9, 0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b,
+  0x94, 0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x20, 0x00, 0x00, 0x01, 0x0e, 0x13,
+  0xf8, 0xe5, 0x29, 0x4b, 0xf7, 0xfb, 0xca, 0xb9,
+  0x4a, 0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94,
+  0xa5, 0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a,
+  0x52, 0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5,
+  0x22, 0x2e, 0x52, 0x94, 0x88, 0xb9, 0x4a, 0x52,
+  0x22, 0xe5, 0x29, 0x48, 0x8b, 0x94, 0xa5, 0x22,
+  0x20, 0x00, 0x00, 0x01, 0x00, 0x00, 0x57, 0xff,
+  0xfb, 0x80, 0x00, 0x00, 0x01, 0xb5, 0x81, 0x1f,
+  0xf3, 0x41, 0x80, 0x00, 0x00, 0x01, 0x01, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x02, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x03, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x04, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x05, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x06, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x07, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x08, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x09, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0a, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0b, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0c, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0d, 0x12,
+  0x70, 0xa3, 0x80, 0x00, 0x00, 0x01, 0x0e, 0x12,
+  0x70, 0xa3, 0x80,
+};
+
+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 ("video/mpeg, "
+        "systemstream=(boolean)false, " "mpegversion=(int)2")
+    );
+
+GstElement *
+setup_mpeg2dec ()
+{
+  GstElement *mpeg2dec;
+
+  GST_DEBUG ("setup_mpeg2dec");
+  mpeg2dec = gst_check_setup_element ("mpeg2dec");
+  mysrcpad = gst_check_setup_src_pad (mpeg2dec, &srctemplate, NULL);
+  mysinkpad = gst_check_setup_sink_pad (mpeg2dec, &sinktemplate, NULL);
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  return mpeg2dec;
+}
+
+void
+cleanup_mpeg2dec (GstElement * mpeg2dec)
+{
+  GST_DEBUG ("cleanup_mpeg2dec");
+  gst_element_set_state (mpeg2dec, GST_STATE_NULL);
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (mpeg2dec);
+  gst_check_teardown_sink_pad (mpeg2dec);
+  gst_check_teardown_element (mpeg2dec);
+}
+
+GST_START_TEST (test_decode_stream1)
+{
+  GstElement *mpeg2dec;
+  GstBuffer *inbuffer, *outbuffer;
+  GstBus *bus;
+  int i, num_buffers;
+  GstCaps *out_caps;
+
+  mpeg2dec = setup_mpeg2dec ();
+
+  fail_unless (gst_element_set_state (mpeg2dec,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  bus = gst_bus_new ();
+
+  inbuffer = gst_buffer_new_and_alloc (sizeof (test_stream1));
+  memcpy (GST_BUFFER_DATA (inbuffer), test_stream1, sizeof (test_stream1));
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  gst_buffer_ref (inbuffer);
+
+  gst_element_set_bus (mpeg2dec, bus);
+
+  /* should decode the buffer without problems */
+  fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_OK);
+
+  gst_buffer_unref (inbuffer);
+
+  num_buffers = g_list_length (buffers);
+
+  /* should be 30 buffers, one per decoded frame */
+  fail_unless_equals_int (num_buffers, 30);
+
+  /* each buffer should have these caps */
+  out_caps =
+      gst_caps_new_simple ("video/x-raw-yuv", "format", GST_TYPE_FOURCC,
+      GST_STR_FOURCC ("I420"), "width", G_TYPE_INT, 176, "height", G_TYPE_INT,
+      144, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, "framerate",
+      GST_TYPE_FRACTION, 25, 1, "interlaced", G_TYPE_BOOLEAN, FALSE, NULL);
+
+  for (i = 0; i < num_buffers; ++i) {
+    outbuffer = GST_BUFFER (buffers->data);
+    fail_if (outbuffer == NULL);
+
+    GST_LOG ("buffer caps %" GST_PTR_FORMAT, GST_BUFFER_CAPS (outbuffer));
+    fail_unless (gst_caps_is_equal_fixed (GST_BUFFER_CAPS (outbuffer),
+            out_caps), "Incorrect buffer caps");
+
+    /* I420 with 176x144 must have this size */
+    fail_unless_equals_int (GST_BUFFER_SIZE (outbuffer), 38016);
+
+    buffers = g_list_remove (buffers, outbuffer);
+    gst_buffer_unref (outbuffer);
+    outbuffer = NULL;
+  }
+
+  gst_caps_unref (out_caps);
+  g_list_free (buffers);
+  buffers = NULL;
+
+  gst_bus_set_flushing (bus, TRUE);
+  gst_element_set_bus (mpeg2dec, NULL);
+  gst_object_unref (GST_OBJECT (bus));
+  cleanup_mpeg2dec (mpeg2dec);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_decode_stream2)
+{
+  GstElement *mpeg2dec;
+  GstBuffer *inbuffer, *outbuffer;
+  GstBus *bus;
+  int i, num_buffers;
+  GstCaps *out_caps;
+
+  mpeg2dec = setup_mpeg2dec ();
+
+  fail_unless (gst_element_set_state (mpeg2dec,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  bus = gst_bus_new ();
+
+  inbuffer = gst_buffer_new_and_alloc (sizeof (test_stream2));
+  memcpy (GST_BUFFER_DATA (inbuffer), test_stream2, sizeof (test_stream2));
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  gst_buffer_ref (inbuffer);
+
+  gst_element_set_bus (mpeg2dec, bus);
+
+  /* should decode the buffer without problems */
+  fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_OK);
+
+  gst_buffer_unref (inbuffer);
+
+  num_buffers = g_list_length (buffers);
+
+  /* should be 30 buffers, one per decoded frame */
+  fail_unless_equals_int (num_buffers, 30);
+
+  /* each buffer should have these caps */
+  out_caps =
+      gst_caps_new_simple ("video/x-raw-yuv", "format", GST_TYPE_FOURCC,
+      GST_STR_FOURCC ("I420"), "width", G_TYPE_INT, 183, "height", G_TYPE_INT,
+      217, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, "framerate",
+      GST_TYPE_FRACTION, 25, 1, "interlaced", G_TYPE_BOOLEAN, FALSE, NULL);
+
+  for (i = 0; i < num_buffers; ++i) {
+    outbuffer = GST_BUFFER (buffers->data);
+    fail_if (outbuffer == NULL);
+
+    GST_LOG ("buffer caps %" GST_PTR_FORMAT, GST_BUFFER_CAPS (outbuffer));
+    fail_unless (gst_caps_is_equal_fixed (GST_BUFFER_CAPS (outbuffer),
+            out_caps), "Incorrect buffer caps");
+
+    /* I420 with 183x217 must have this size */
+    fail_unless_equals_int (GST_BUFFER_SIZE (outbuffer), 60168);
+
+    buffers = g_list_remove (buffers, outbuffer);
+    gst_buffer_unref (outbuffer);
+    outbuffer = NULL;
+  }
+
+  gst_caps_unref (out_caps);
+  g_list_free (buffers);
+  buffers = NULL;
+
+  gst_bus_set_flushing (bus, TRUE);
+  gst_element_set_bus (mpeg2dec, NULL);
+  gst_object_unref (GST_OBJECT (bus));
+  cleanup_mpeg2dec (mpeg2dec);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_decode_garbage)
+{
+  GstElement *mpeg2dec;
+  GstBuffer *inbuffer;
+  GstBus *bus;
+  int i, num_buffers;
+  guint32 *tmpbuf;
+
+  mpeg2dec = setup_mpeg2dec ();
+
+  fail_unless (gst_element_set_state (mpeg2dec,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  bus = gst_bus_new ();
+
+  inbuffer = gst_buffer_new_and_alloc (4096 * sizeof (guint32));
+  /* initialize the buffer with something that is no mpeg2 */
+  tmpbuf = (guint32 *) GST_BUFFER_DATA (inbuffer);
+  for (i = 0; i < 4096; i++) {
+    tmpbuf[i] = i;
+  }
+
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  gst_buffer_ref (inbuffer);
+
+  gst_element_set_bus (mpeg2dec, bus);
+
+  /* should be possible to push without problems but nothing gets decoded */
+  fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_OK);
+
+  gst_buffer_unref (inbuffer);
+
+  num_buffers = g_list_length (buffers);
+
+  /* should be 0 buffers as decoding should've been impossible */
+  fail_unless_equals_int (num_buffers, 0);
+
+  g_list_free (buffers);
+  buffers = NULL;
+
+  gst_bus_set_flushing (bus, TRUE);
+  gst_element_set_bus (mpeg2dec, NULL);
+  gst_object_unref (GST_OBJECT (bus));
+  cleanup_mpeg2dec (mpeg2dec);
+}
+
+GST_END_TEST;
+Suite *
+mpeg2dec_suite (void)
+{
+  Suite *s = suite_create ("mpeg2dec");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_decode_stream1);
+  tcase_add_test (tc_chain, test_decode_stream2);
+  tcase_add_test (tc_chain, test_decode_garbage);
+
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = mpeg2dec_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/tests/check/elements/x264enc.c b/tests/check/elements/x264enc.c
new file mode 100644 (file)
index 0000000..777a472
--- /dev/null
@@ -0,0 +1,344 @@
+/* GStreamer
+ *
+ * unit test for x264enc
+ *
+ * Copyright (C) <2008> Mark Nauwelaerts <mnauw@users.sf.net>
+ *
+ * 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.
+ */
+
+#include <unistd.h>
+
+#include <gst/check/gstcheck.h>
+
+/* For ease of programming we use globals to keep refs for our floating
+ * src and sink pads we create; otherwise we always have to do get_pad,
+ * get_peer, and then remove references in every test function */
+static GstPad *mysrcpad, *mysinkpad;
+
+#define VIDEO_CAPS_STRING "video/x-raw-yuv, " \
+                           "format = (fourcc) I420, " \
+                           "width = (int) 384, " \
+                           "height = (int) 288, " \
+                           "framerate = (fraction) 25/1"
+
+#define MPEG_CAPS_STRING "video/x-h264, " \
+                           "width = (int) 384, " \
+                           "height = (int) 288, " \
+                           "framerate = (fraction) 25/1"
+
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (MPEG_CAPS_STRING));
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (VIDEO_CAPS_STRING));
+
+
+static GstElement *
+setup_x264enc (void)
+{
+  GstElement *x264enc;
+
+  GST_DEBUG ("setup_x264enc");
+  x264enc = gst_check_setup_element ("x264enc");
+  mysrcpad = gst_check_setup_src_pad (x264enc, &srctemplate, NULL);
+  mysinkpad = gst_check_setup_sink_pad (x264enc, &sinktemplate, NULL);
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  return x264enc;
+}
+
+static void
+cleanup_x264enc (GstElement * x264enc)
+{
+  GST_DEBUG ("cleanup_x264enc");
+  gst_element_set_state (x264enc, GST_STATE_NULL);
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (x264enc);
+  gst_check_teardown_sink_pad (x264enc);
+  gst_check_teardown_element (x264enc);
+}
+
+static void
+check_caps (GstCaps * caps)
+{
+  GstStructure *s;
+  const GValue *sf, *avcc;
+  const gchar *stream_format;
+
+  fail_unless (caps != NULL);
+
+  GST_INFO ("caps %" GST_PTR_FORMAT, caps);
+  s = gst_caps_get_structure (caps, 0);
+  fail_unless (s != NULL);
+  fail_if (!gst_structure_has_name (s, "video/x-h264"));
+  sf = gst_structure_get_value (s, "stream-format");
+  fail_unless (sf != NULL);
+  fail_unless (G_VALUE_HOLDS_STRING (sf));
+  stream_format = g_value_get_string (sf);
+  fail_unless (stream_format != NULL);
+  if (strcmp (stream_format, "avc") == 0) {
+    const guint8 *data;
+    GstBuffer *buf;
+
+    avcc = gst_structure_get_value (s, "codec_data");
+    fail_unless (avcc != NULL);
+    fail_unless (GST_VALUE_HOLDS_BUFFER (avcc));
+    buf = gst_value_get_buffer (avcc);
+    fail_unless (buf != NULL);
+    data = GST_BUFFER_DATA (buf);
+    fail_unless_equals_int (data[0], 1);
+    /* should be either baseline, main profile or extended profile */
+    fail_unless (data[1] == 0x42 || data[1] == 0x4D || data[1] == 0x58);
+  } else if (strcmp (stream_format, "byte-stream") == 0) {
+    fail_if (gst_structure_get_value (s, "codec_data") != NULL);
+  } else {
+    fail_if (TRUE, "unexpected stream-format in caps: %s", stream_format);
+  }
+}
+
+GST_START_TEST (test_video_pad)
+{
+  GstElement *x264enc;
+  GstBuffer *inbuffer, *outbuffer;
+  GstCaps *caps;
+  int i, num_buffers;
+
+  x264enc = setup_x264enc ();
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  /* corresponds to I420 buffer for the size mentioned in the caps */
+  inbuffer = gst_buffer_new_and_alloc (384 * 288 * 3 / 2);
+  /* makes valgrind's memcheck happier */
+  memset (GST_BUFFER_DATA (inbuffer), 0, GST_BUFFER_SIZE (inbuffer));
+  caps = gst_caps_from_string (VIDEO_CAPS_STRING);
+  gst_buffer_set_caps (inbuffer, caps);
+  gst_caps_unref (caps);
+  GST_BUFFER_TIMESTAMP (inbuffer) = 0;
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+  fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
+
+  /* send eos to have all flushed if needed */
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()) == TRUE);
+
+  num_buffers = g_list_length (buffers);
+  fail_unless (num_buffers == 1);
+
+  /* clean up buffers */
+  for (i = 0; i < num_buffers; ++i) {
+    outbuffer = GST_BUFFER (buffers->data);
+    fail_if (outbuffer == NULL);
+
+    switch (i) {
+      case 0:
+      {
+        gint nsize, npos, j, type, next_type;
+        guint8 *data = GST_BUFFER_DATA (outbuffer);
+        gint size = GST_BUFFER_SIZE (outbuffer);
+
+        check_caps (GST_BUFFER_CAPS (outbuffer));
+
+        npos = 0;
+        j = 0;
+        /* need SPS first */
+        next_type = 7;
+        /* loop through NALs */
+        while (npos < size) {
+          fail_unless (size - npos >= 4);
+          nsize = GST_READ_UINT32_BE (data + npos);
+          fail_unless (nsize > 0);
+          fail_unless (npos + 4 + nsize <= size);
+          type = data[npos + 4] & 0x1F;
+          /* check the first NALs, disregard AU (9), SEI (6) */
+          if (type != 9 && type != 6) {
+            fail_unless (type == next_type);
+            switch (type) {
+              case 7:
+                /* SPS */
+                next_type = 8;
+                break;
+              case 8:
+                /* PPS */
+                next_type = 5;
+                break;
+              default:
+                break;
+            }
+            j++;
+          }
+          npos += nsize + 4;
+        }
+        /* should have reached the exact end */
+        fail_unless (npos == size);
+        break;
+      }
+      default:
+        break;
+    }
+    buffers = g_list_remove (buffers, outbuffer);
+
+    ASSERT_BUFFER_REFCOUNT (outbuffer, "outbuffer", 1);
+    gst_buffer_unref (outbuffer);
+    outbuffer = NULL;
+  }
+
+  cleanup_x264enc (x264enc);
+  g_list_free (buffers);
+  buffers = NULL;
+}
+
+GST_END_TEST;
+
+GstCaps *pad_caps;
+
+GstCaps *
+getcaps_test (GstPad * pad)
+{
+  return gst_caps_ref (pad_caps);
+}
+
+GST_START_TEST (test_profile_in_caps)
+{
+  GstElement *x264enc;
+  GstPad *srcpad;
+  GstPad *sinkpad;
+  GstStructure *s;
+
+  pad_caps = gst_caps_from_string (MPEG_CAPS_STRING);
+
+  x264enc = setup_x264enc ();
+  gst_pad_set_getcaps_function (mysinkpad, getcaps_test);
+  srcpad = gst_element_get_static_pad (x264enc, "src");
+  sinkpad = gst_element_get_static_pad (x264enc, "sink");
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"), "main"));
+
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_READY) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to ready");
+  g_object_set (x264enc, "profile", 1, NULL);
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"),
+          "constrained-baseline"));
+
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_READY) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to ready");
+  g_object_set (x264enc, "profile", 3, NULL);
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"), "high"));
+
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_READY) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to ready");
+  g_object_set (x264enc, "profile", 2, NULL);
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"), "main"));
+
+  s = gst_caps_get_structure (pad_caps, 0);
+  gst_structure_set (s, "profile", G_TYPE_STRING, "constrained-baseline", NULL);
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_READY) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to ready");
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"),
+          "constrained-baseline"));
+
+  s = gst_caps_get_structure (pad_caps, 0);
+  gst_structure_set (s, "profile", G_TYPE_STRING, "high", NULL);
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_READY) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to ready");
+  fail_unless (gst_element_set_state (x264enc,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+  fail_unless (gst_pad_set_caps (sinkpad,
+          (GstCaps *) gst_pad_get_pad_template_caps (mysrcpad)));
+  s = gst_caps_get_structure (GST_PAD_CAPS (srcpad), 0);
+  fail_unless (!g_strcmp0 (gst_structure_get_string (s, "profile"), "high"));
+
+  gst_object_unref (srcpad);
+  gst_object_unref (sinkpad);
+  cleanup_x264enc (x264enc);
+  gst_caps_unref (pad_caps);
+}
+
+GST_END_TEST;
+
+Suite *
+x264enc_suite (void)
+{
+  Suite *s = suite_create ("x264enc");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_video_pad);
+  tcase_add_test (tc_chain, test_profile_in_caps);
+
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = x264enc_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/tests/check/elements/xingmux.c b/tests/check/elements/xingmux.c
new file mode 100644 (file)
index 0000000..52f27ce
--- /dev/null
@@ -0,0 +1,162 @@
+/* GStreamer
+ *
+ * Copyright (C) 2008 Sebastian Dröge <slomo@circular-chaos.org>
+ *
+ * xingmux.c: Unit test for the xingmux element
+ *
+ * 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
+ */
+
+#include <gst/gst.h>
+#include <gst/base/gstbasetransform.h>
+#include <gst/check/gstcheck.h>
+
+#include <math.h>
+
+#include "xingmux_testdata.h"
+
+/* For ease of programming we use globals to keep refs for our floating
+ * src and sink pads we create; otherwise we always have to do get_pad,
+ * get_peer, and then remove references in every test function */
+GstPad *mysrcpad, *mysinkpad;
+
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, " "mpegversion = (int) 1," "layer = (int) 3")
+    );
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, " "mpegversion = (int) 1," "layer = (int) 3")
+    );
+
+GstElement *
+setup_xingmux ()
+{
+  GstElement *xingmux;
+
+  GST_DEBUG ("setup_xingmux");
+  xingmux = gst_check_setup_element ("xingmux");
+  mysrcpad = gst_check_setup_src_pad (xingmux, &srctemplate, NULL);
+  mysinkpad = gst_check_setup_sink_pad (xingmux, &sinktemplate, NULL);
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  return xingmux;
+}
+
+void
+cleanup_xingmux (GstElement * xingmux)
+{
+  GST_DEBUG ("cleanup_xingmux");
+
+  g_list_foreach (buffers, (GFunc) gst_mini_object_unref, NULL);
+  g_list_free (buffers);
+  buffers = NULL;
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (xingmux);
+  gst_check_teardown_sink_pad (xingmux);
+  gst_check_teardown_element (xingmux);
+}
+
+GST_START_TEST (test_xing_remux)
+{
+  GstElement *xingmux;
+  GstBuffer *inbuffer;
+  GList *it;
+  const guint8 *verify_data;
+
+  xingmux = setup_xingmux ();
+
+  fail_unless (gst_element_set_state (xingmux,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to playing");
+
+  inbuffer = gst_buffer_new_and_alloc (sizeof (test_xing));
+  memcpy (GST_BUFFER_DATA (inbuffer), test_xing, sizeof (test_xing));
+
+  gst_buffer_set_caps (inbuffer, GST_PAD_CAPS (mysrcpad));
+  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
+
+  /* pushing gives away my reference ... */
+  fail_unless (gst_pad_push (mysrcpad, inbuffer) == GST_FLOW_OK);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_eos ()));
+  /* ... and puts a new buffer on the global list */
+  fail_unless_equals_int (g_list_length (buffers), 93);
+
+  verify_data = test_xing;
+  for (it = buffers; it != NULL; it = it->next) {
+    GstBuffer *outbuffer = (GstBuffer *) it->data;
+
+    if (it == buffers) {
+      gint j;
+
+      /* Empty Xing header, should be the same as input data until the "Xing" marker
+       * and zeroes afterwards. */
+      fail_unless (memcmp (test_xing, GST_BUFFER_DATA (outbuffer), 25) == 0);
+      for (j = 26; j < GST_BUFFER_SIZE (outbuffer); j++)
+        fail_unless (GST_BUFFER_DATA (outbuffer)[j] == 0);
+      verify_data += GST_BUFFER_SIZE (outbuffer);
+    } else if (it->next != NULL) {
+      /* Should contain the raw MP3 data without changes */
+      fail_unless (memcmp (verify_data, GST_BUFFER_DATA (outbuffer),
+              GST_BUFFER_SIZE (outbuffer)) == 0);
+      verify_data += GST_BUFFER_SIZE (outbuffer);
+    } else {
+      /* Last buffer is the rewrite of the first buffer and should be exactly the same
+       * as the old Xing header we had */
+      fail_unless (memcmp (test_xing, GST_BUFFER_DATA (outbuffer),
+              GST_BUFFER_SIZE (outbuffer)) == 0);
+    }
+  }
+
+  /* cleanup */
+  cleanup_xingmux (xingmux);
+}
+
+GST_END_TEST;
+
+Suite *
+xingmux_suite (void)
+{
+  Suite *s = suite_create ("xingmux");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_xing_remux);
+
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = xingmux_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/tests/check/elements/xingmux_testdata.h b/tests/check/elements/xingmux_testdata.h
new file mode 100644 (file)
index 0000000..bc785fc
--- /dev/null
@@ -0,0 +1,4777 @@
+static const guint8 test_xing[] = {
+0xff, 0xfb, 0x30, 0xc4, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x69, 0x6e, 
+0x67, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 
+0x5a, 0x00, 0x00, 0x95, 0x2e, 0x00, 0x03, 0x06, 
+0x09, 0x0c, 0x0f, 0x11, 0x14, 0x17, 0x1a, 0x1d, 
+0x1f, 0x1f, 0x22, 0x25, 0x28, 0x2b, 0x2d, 0x30, 
+0x33, 0x36, 0x39, 0x3b, 0x3b, 0x3e, 0x41, 0x44, 
+0x47, 0x49, 0x4c, 0x4f, 0x52, 0x55, 0x57, 0x57, 
+0x5a, 0x5d, 0x60, 0x63, 0x65, 0x68, 0x6b, 0x6e, 
+0x71, 0x73, 0x73, 0x76, 0x79, 0x7c, 0x7f, 0x81, 
+0x84, 0x87, 0x8a, 0x8d, 0x8f, 0x8f, 0x92, 0x95, 
+0x98, 0x9b, 0x9d, 0xa0, 0xa3, 0xa6, 0xa9, 0xab, 
+0xab, 0xae, 0xb1, 0xb4, 0xb7, 0xb9, 0xbc, 0xbf, 
+0xc2, 0xc5, 0xc7, 0xc7, 0xca, 0xcd, 0xd0, 0xd3, 
+0xd5, 0xd8, 0xdb, 0xde, 0xe1, 0xe3, 0xe3, 0xe6, 
+0xe9, 0xec, 0xef, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd, 
+0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0x90, 0xc4, 
+0x00, 0x03, 0x8f, 0xd4, 0x59, 0x42, 0x6d, 0xe1, 
+0x27, 0x02, 0xde, 0x92, 0x67, 0x09, 0xed, 0x25, 
+0x29, 0x00, 0x00, 0x0a, 0x70, 0xcc, 0x4b, 0x4c, 
+0xac, 0xbc, 0xcc, 0x4a, 0xcc, 0xbd, 0x24, 0xd7, 
+0xce, 0xcc, 0xca, 0xa8, 0xf5, 0x2b, 0x8d, 0x80, 
+0xa8, 0xfd, 0x43, 0x9a, 0xc1, 0xcb, 0x43, 0x30, 
+0x10, 0xd0, 0x06, 0x91, 0x6a, 0x0e, 0xbb, 0xd9, 
+0x7b, 0x5c, 0x72, 0x1c, 0x87, 0x20, 0x0c, 0x02, 
+0x00, 0x80, 0x60, 0x50, 0x2b, 0x15, 0x8a, 0xc5, 
+0x62, 0xb2, 0x74, 0x68, 0xd1, 0xa0, 0x40, 0x81, 
+0x02, 0x04, 0x08, 0x18, 0x04, 0xc1, 0xf0, 0x7c, 
+0x1f, 0x07, 0xc1, 0x00, 0x40, 0x10, 0x04, 0x01, 
+0x30, 0x7c, 0x1f, 0x07, 0xc1, 0xf0, 0x40, 0x10, 
+0x04, 0x01, 0x03, 0x22, 0x70, 0xff, 0xe6, 0x4b, 
+0x87, 0xff, 0x97, 0x07, 0xc1, 0xfb, 0xbf, 0xc1, 
+0x00, 0x40, 0x10, 0x0c, 0x27, 0xfc, 0xb8, 0x3e, 
+0x0f, 0x83, 0xe1, 0xf0, 0x40, 0x10, 0x04, 0x01, 
+0x04, 0x89, 0xc1, 0xf0, 0x7e, 0xe2, 0x80, 0x80, 
+0x34, 0x60, 0x02, 0x05, 0x06, 0x08, 0xa0, 0xa0, 
+0x60, 0xba, 0x0f, 0x06, 0x11, 0xa0, 0xf8, 0x61, 
+0x0e, 0x25, 0x06, 0x51, 0xab, 0x64, 0x67, 0xb4, 
+0x1b, 0x66, 0x12, 0x01, 0x3a, 0x60, 0xf0, 0x0a, 
+0x26, 0x06, 0x20, 0x90, 0x70, 0x53, 0x1a, 0x38, 
+0x80, 0x12, 0x86, 0x3c, 0x51, 0x87, 0x0c, 0x61, 
+0x41, 0x18, 0x10, 0x00, 0x10, 0x05, 0xc1, 0x2f, 
+0x0a, 0x0e, 0xa4, 0x4a, 0x82, 0xaa, 0x55, 0x8a, 
+0xbb, 0x56, 0x15, 0x87, 0x33, 0xa6, 0x74, 0xe5, 
+0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x06, 0x04, 
+0x41, 0x10, 0x44, 0x11, 0x14, 0x8a, 0x45, 0x22, 
+0x91, 0x48, 0xa8, 0x54, 0x2a, 0x15, 0x13, 0x22, 
+0x44, 0x88, 0x89, 0x0a, 0x14, 0x28, 0x50, 0xa1, 
+0x42, 0x85, 0x0a, 0x24, 0x48, 0x91, 0x22, 0x44, 
+0x89, 0x12, 0x25, 0x41, 0x41, 0x41, 0x41, 0x42, 
+0x82, 0x82, 0x82, 0x82, 0x41, 0x41, 0x41, 0x41, 
+0x42, 0x82, 0x82, 0x82, 0x82, 0x41, 0x41, 0x41, 
+0x41, 0x42, 0x82, 0x82, 0x82, 0x82, 0x41, 0x41, 
+0x41, 0x41, 0x42, 0x82, 0x82, 0x82, 0x82, 0x41, 
+0x41, 0x41, 0x41, 0x42, 0x82, 0x82, 0x82, 0x82, 
+0x41, 0x41, 0x41, 0x41, 0x42, 0x82, 0x82, 0x82, 
+0x82, 0x41, 0x41, 0x41, 0x41, 0x42, 0x82, 0x82, 
+0x82, 0x82, 0x41, 0x41, 0x41, 0x41, 0x42, 0x95, 
+0x32, 0x88, 0xad, 0x32, 0xe4, 0xdc, 0x34, 0x09, 
+0x55, 0x36, 0xd6, 0x8e, 0x30, 0xf8, 0x87, 0xdd, 
+0x36, 0x72, 0xfd, 0x01, 0x36, 0x47, 0x87, 0xab, 
+0x30, 0xe7, 0xc2, 0x26, 0x30, 0x42, 0x80, 0x71, 
+0x30, 0x0e, 0xc0, 0x94, 0x36, 0xa3, 0x8c, 0xe3, 
+0x3b, 0x43, 0x5f, 0xa1, 0x8c, 0x50, 0x07, 0x43, 
+0x67, 0x16, 0x5d, 0xe2, 0x17, 0xf6, 0xbf, 0xdd, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xbf, 0xff, 0xe9, 0x30, 0x05, 0xc0, 0x37, 0x30, 
+0x1e, 0x80, 0x9e, 0x30, 0x3d, 0x41, 0x33, 0x30, 
+0x73, 0x82, 0x72, 0x31, 0x0c, 0xff, 0xfb, 0x92, 
+0xc4, 0x2a, 0x83, 0xc8, 0x60, 0x25, 0x16, 0x0e, 
+0xff, 0x82, 0x81, 0x27, 0x85, 0x22, 0xc1, 0xff, 
+0xec, 0x90, 0xc7, 0x7f, 0x36, 0xd8, 0xb9, 0x6d, 
+0x36, 0xaf, 0xc7, 0x81, 0x31, 0x13, 0x02, 0xaa, 
+0x30, 0x83, 0x41, 0xbb, 0x30, 0x49, 0x41, 0x3b, 
+0x30, 0x44, 0x81, 0x14, 0x30, 0x45, 0x41, 0xd5, 
+0x3a, 0xf8, 0xf3, 0x22, 0x06, 0x47, 0xf6, 0xb8, 
+0xff, 0xc3, 0x94, 0x99, 0x9c, 0xed, 0xfa, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xd6, 0x32, 0x84, 0xae, 0x32, 0xd8, 0xe3, 
+0x33, 0xed, 0x5e, 0x36, 0x9a, 0xa1, 0x30, 0xf0, 
+0xc8, 0x12, 0x36, 0x3e, 0x3e, 0x9e, 0x36, 0x14, 
+0xc7, 0xe2, 0x30, 0xdf, 0x02, 0x3d, 0x30, 0x3d, 
+0xc0, 0x84, 0x30, 0x12, 0x00, 0x87, 0x36, 0xfb, 
+0x60, 0xe4, 0x1a, 0x73, 0x62, 0x20, 0x4c, 0x56, 
+0x04, 0x43, 0x57, 0x1a, 0x5a, 0xb0, 0xe7, 0x52, 
+0x3d, 0x3f, 0xfd, 0xdf, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xa0, 0xc0, 0x26, 0x00, 0xe0, 0xc0, 
+0x97, 0x02, 0xbc, 0xc1, 0x22, 0x05, 0x50, 0xc2, 
+0x23, 0x0a, 0xdc, 0xc4, 0xea, 0x21, 0x18, 0xe0, 
+0x01, 0xfd, 0x18, 0xdf, 0x3e, 0x21, 0x28, 0xc5, 
+0x05, 0x0b, 0xec, 0xc2, 0x60, 0x07, 0xe0, 0xc1, 
+0x4e, 0x05, 0xb8, 0xc1, 0x35, 0x05, 0x1c, 0xc1, 
+0x34, 0x08, 0xa0, 0xf1, 0x2a, 0x8c, 0xac, 0x35, 
+0x00, 0x0c, 0xed, 0xd8, 0x87, 0xe9, 0xec, 0x3d, 
+0x5f, 0xea, 0xff, 0x57, 0xff, 0xff, 0xff, 0xff, 
+0xf7, 0xd7, 0xff, 0xff, 0xff, 0xf5, 0x26, 0x20, 
+0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9b, 0xd5, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 0x20, 0x97, 
+0x32, 0x64, 0xc6, 0x33, 0x41, 0x39, 0x35, 0x86, 
+0x5a, 0x30, 0xca, 0x87, 0x43, 0x35, 0x4a, 0xf8, 
+0x53, 0x35, 0x27, 0x07, 0x17, 0x30, 0xbb, 0x42, 
+0x04, 0x30, 0x30, 0x80, 0x81, 0x30, 0x11, 0xc0, 
+0x68, 0x36, 0x42, 0xcc, 0xe0, 0x36, 0x03, 0x56, 
+0x9a, 0x00, 0x44, 0x54, 0xd6, 0x75, 0x67, 0x94, 
+0x12, 0xeb, 0xfa, 0x0c, 0x02, 0xf0, 0x0b, 0xcc, 
+0x09, 0xe0, 0x29, 0x0c, 0x12, 0xd0, 0x51, 0xcc, 
+0x23, 0x00, 0xa7, 0x0c, 0x50, 0x91, 0xff, 0x4e, 
+0x0c, 0x0f, 0x42, 0xcd, 0xff, 0xb2, 0x00, 0xcc, 
+0x52, 0x00, 0xb9, 0x8c, 0x26, 0x90, 0x7d, 0x4c, 
+0x14, 0xd0, 0x5c, 0xcc, 0x12, 0xc0, 0x53, 0x0c, 
+0x12, 0x90, 0x8d, 0xce, 0xf6, 0xc4, 0xc9, 0x83, 
+0x90, 0x7d, 0x9c, 0x3f, 0xf0, 0xe5, 0x25, 0xff, 
+0xfb, 0x92, 0xc4, 0xaa, 0x83, 0xc8, 0x18, 0x23, 
+0x16, 0x0e, 0xff, 0x82, 0x81, 0x2d, 0x85, 0x22, 
+0x81, 0xff, 0xec, 0x90, 0xbe, 0x5b, 0xbf, 0xff, 
+0xf6, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x8f, 0xff, 
+0xfa, 0x3f, 0xd1, 0xf6, 0xe8, 0x4c, 0x41, 0x4d, 
+0x45, 0x33, 0x2e, 0x39, 0x37, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 
+0x1c, 0x98, 0x32, 0x50, 0xcb, 0x33, 0x25, 0x3e, 
+0x35, 0x4a, 0x6b, 0x30, 0xc3, 0x47, 0x6c, 0x35, 
+0x19, 0x39, 0x9a, 0x34, 0xf6, 0xc7, 0x42, 0x30, 
+0xb2, 0x82, 0x17, 0x30, 0x2c, 0x40, 0x90, 0x30, 
+0x14, 0x80, 0x5d, 0x36, 0x7a, 0xa0, 0xe1, 0x15, 
+0x33, 0x59, 0x19, 0x40, 0x44, 0xa4, 0xd5, 0x75, 
+0xa7, 0x56, 0x1c, 0xea, 0xfa, 0x7f, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x18, 0x07, 
+0x00, 0x12, 0x18, 0x14, 0xa0, 0x4d, 0x98, 0x26, 
+0x80, 0x9c, 0x18, 0x47, 0xa1, 0x41, 0x98, 0xa4, 
+0x83, 0xd7, 0x1c, 0x2e, 0xfd, 0x5c, 0x1c, 0x15, 
+0x83, 0xdc, 0x18, 0xa7, 0x21, 0x68, 0x98, 0x4d, 
+0x80, 0xf7, 0x18, 0x29, 0x00, 0xba, 0x18, 0x24, 
+0xa0, 0xaa, 0x98, 0x23, 0xc1, 0x21, 0x1d, 0x95, 
+0xa1, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 
+0xc8, 0x23, 0x18, 0x0e, 0xff, 0x82, 0x81, 0x33, 
+0x05, 0x62, 0x81, 0xff, 0xec, 0x90, 0x92, 0x87, 
+0xa0, 0xe3, 0x3b, 0x76, 0x21, 0xfa, 0x7b, 0x0f, 
+0x56, 0x8f, 0xab, 0xfd, 0x54, 0x7f, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xd4, 0x98, 
+0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x6e, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0x32, 0x18, 0x99, 0x32, 0x44, 0xce, 0x33, 
+0x01, 0x47, 0x35, 0x16, 0x78, 0x30, 0xba, 0x87, 
+0x97, 0x34, 0xe5, 0x7a, 0xcf, 0x34, 0xc3, 0x87, 
+0x6d, 0x30, 0xaa, 0x42, 0x26, 0x30, 0x27, 0x00, 
+0xa1, 0x30, 0x17, 0x40, 0x4e, 0x36, 0xb2, 0x7c, 
+0xe1, 0xf4, 0x43, 0x5b, 0x97, 0x80, 0xc4, 0x94, 
+0xd6, 0x75, 0x67, 0x86, 0x13, 0xeb, 0xfa, 0x3f, 
+0xe8, 0x30, 0x10, 0x40, 0x1b, 0x30, 0x2b, 0x00, 
+0x90, 0x30, 0x4f, 0x41, 0x2b, 0x30, 0x92, 0x02, 
+0x68, 0x31, 0x4f, 0xc7, 0x5f, 0x38, 0x88, 0xb8, 
+0x4d, 0x38, 0x54, 0xc7, 0x6b, 0x31, 0x54, 0x02, 
+0xba, 0x30, 0x9c, 0xc1, 0xeb, 0x30, 0x51, 0x41, 
+0x79, 0x30, 0x46, 0x81, 0x5a, 0x30, 0x44, 0xc2, 
+0x4f, 0x3a, 0xbb, 0x93, 0x22, 0x10, 0x41, 0xf6, 
+0x70, 0xed, 0xc6, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xc7, 0xe4, 0x23, 0x18, 0x0e, 0xff, 0x82, 
+0x81, 0x2f, 0x05, 0x22, 0x81, 0xff, 0xec, 0x90, 
+0x29, 0x2d, 0xf2, 0xdd, 0xfe, 0x8f, 0xfb, 0x6f, 
+0xff, 0xff, 0xff, 0xff, 0xf4, 0x7f, 0xff, 0xd1, 
+0xfe, 0x8f, 0xb7, 0x42, 0x62, 0x0a, 0x6a, 0x29, 
+0x99, 0x71, 0xc9, 0xbd, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x32, 0x14, 0x98, 0x32, 0x30, 
+0xd3, 0x32, 0xe5, 0x4c, 0x34, 0xda, 0x85, 0x30, 
+0xb2, 0x47, 0xbc, 0x34, 0xae, 0xbb, 0xf0, 0x34, 
+0x8e, 0xc7, 0x94, 0x30, 0xa1, 0x02, 0x37, 0x30, 
+0x21, 0xc0, 0xae, 0x30, 0x19, 0x80, 0x43, 0x36, 
+0xea, 0x58, 0xe2, 0x93, 0x53, 0x5d, 0x16, 0xc0, 
+0xc4, 0xe4, 0xd5, 0x75, 0xa4, 0x2b, 0x67, 0x52, 
+0x0c, 0x05, 0x60, 0x05, 0x0c, 0x0d, 0x10, 0x27, 
+0x4c, 0x17, 0x40, 0x51, 0x0c, 0x2a, 0xb0, 0xa8, 
+0x4c, 0x61, 0x82, 0x02, 0x0e, 0x79, 0xbf, 0x50, 
+0x8e, 0x6a, 0x82, 0x06, 0x0c, 0x62, 0x90, 0xc1, 
+0xcc, 0x2d, 0x20, 0x8a, 0x8c, 0x17, 0x20, 0x6c, 
+0x8c, 0x13, 0xb0, 0x65, 0x4c, 0x12, 0xc0, 0xac, 
+0x8e, 0xf3, 0x68, 0xc9, 0xc5, 0xcb, 0xb8, 0xc3, 
+0xdd, 0x87, 0xfe, 0x5f, 0x60, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xc7, 0x00, 0x23, 0x18, 0x0e, 
+0xff, 0x82, 0x81, 0x36, 0x85, 0x62, 0x81, 0xff, 
+0xec, 0x90, 0xfa, 0xb2, 0x5f, 0x7f, 0xaf, 0xaa, 
+0x8f, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfd, 0xff, 
+0xef, 0xff, 0x7f, 0xa9, 0x31, 0x05, 0x35, 0x14, 
+0xcc, 0xb8, 0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 0x08, 0x9b, 
+0x32, 0x1c, 0xd4, 0x32, 0xc1, 0x53, 0x34, 0x9e, 
+0x90, 0x30, 0xa9, 0x87, 0xe1, 0x34, 0x76, 0x7c, 
+0xff, 0x34, 0x57, 0x87, 0xb9, 0x30, 0x98, 0x42, 
+0x46, 0x30, 0x1c, 0x00, 0xbd, 0x30, 0x1c, 0x40, 
+0x34, 0x37, 0x22, 0x34, 0xe3, 0x72, 0x43, 0x5f, 
+0x95, 0x01, 0x45, 0x14, 0xba, 0x75, 0x67, 0xb0, 
+0x15, 0x67, 0x6b, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x51, 
+0x80, 0xbe, 0x00, 0x39, 0x81, 0xac, 0x04, 0x71, 
+0x82, 0xfa, 0x09, 0x99, 0x85, 0x6c, 0x14, 0x01, 
+0x8c, 0x66, 0x3d, 0x29, 0xd0, 0x8d, 0xd2, 0x39, 
+0xce, 0x9e, 0x3d, 0xc9, 0x8c, 0x80, 0x17, 0x51, 
+0x85, 0xae, 0x11, 0x19, 0x82, 0xda, 0x0d, 0xa9, 
+0x82, 0x60, 0x0c, 0xd1, 0x82, 0x3e, 0x15, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 0xa8, 0x23, 
+0x18, 0x0e, 0xff, 0x82, 0xa1, 0x3a, 0x05, 0x22, 
+0x41, 0xff, 0xec, 0x90, 0xf9, 0xd8, 0xf0, 0x99, 
+0x20, 0xc1, 0x77, 0xd8, 0x63, 0xb7, 0x0c, 0x4b, 
+0x2d, 0xb9, 0x6f, 0x91, 0xfb, 0xbd, 0x5d, 0x74, 
+0xff, 0xff, 0xff, 0xff, 0xef, 0x5b, 0x5d, 0xff, 
+0xff, 0x77, 0xfb, 0xbd, 0x69, 0x88, 0x29, 0xa8, 
+0xa6, 0x65, 0xc7, 0x26, 0xea, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x32, 
+0x04, 0x9a, 0x32, 0x08, 0xd7, 0x32, 0xa5, 0x58, 
+0x34, 0x52, 0x9d, 0x30, 0xa0, 0x48, 0x02, 0x34, 
+0x3b, 0xbd, 0xfa, 0x34, 0x1e, 0xc7, 0xda, 0x30, 
+0x8e, 0x02, 0x55, 0x30, 0x16, 0xc0, 0xca, 0x30, 
+0x1e, 0x80, 0x25, 0x37, 0x5a, 0x00, 0xe4, 0x11, 
+0x53, 0x60, 0x13, 0xc1, 0x45, 0x24, 0xb9, 0x75, 
+0xa4, 0x21, 0x76, 0x7a, 0x01, 0xc0, 0x78, 0x18, 
+0x20, 0x20, 0x4b, 0x98, 0x37, 0xc0, 0xa6, 0x18, 
+0x65, 0x21, 0x5b, 0x98, 0xe5, 0xc4, 0x21, 0x1d, 
+0xd2, 0xbf, 0x6c, 0x1d, 0xae, 0xc4, 0x2e, 0x18, 
+0xe7, 0x61, 0x9b, 0x98, 0x68, 0x41, 0x35, 0x18, 
+0x33, 0x80, 0xfc, 0x18, 0x2a, 0x20, 0xef, 0x98, 
+0x27, 0x01, 0x98, 0x1b, 0x02, 0x0c, 0x62, 0x91, 
+0x09, 0x67, 0x16, 0x1d, 0xac, 0x3f, 0xf1, 0xbb, 
+0x0f, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc8, 
+0x54, 0x25, 0x18, 0x0e, 0xff, 0x82, 0xa1, 0x3f, 
+0x05, 0x22, 0x41, 0xff, 0xec, 0x90, 0x53, 0xa1, 
+0xef, 0xbf, 0xd7, 0xfe, 0xef, 0xff, 0x5f, 0xd9, 
+0xfb, 0xff, 0xdf, 0x5a, 0x3e, 0xff, 0x57, 0x7f, 
+0xfb, 0xdd, 0xd4, 0x98, 0x82, 0x9a, 0x8a, 0x66, 
+0x5c, 0x72, 0x6f, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x31, 0xf8, 0x9b, 0x31, 0xf4, 0xd8, 0x32, 
+0x79, 0x5f, 0x34, 0x16, 0xa6, 0x30, 0x96, 0x88, 
+0x23, 0x33, 0xff, 0x7e, 0xe3, 0x33, 0xe3, 0x07, 
+0xfb, 0x30, 0x84, 0x42, 0x62, 0x30, 0x10, 0x00, 
+0xd9, 0x30, 0x20, 0xc0, 0x14, 0x37, 0x81, 0xdc, 
+0xe4, 0xb0, 0x23, 0x62, 0x92, 0x01, 0xc5, 0x54, 
+0xba, 0x79, 0x64, 0x41, 0x06, 0xdb, 0x5a, 0x46, 
+0x81, 0x06, 0x30, 0x41, 0x80, 0x86, 0x30, 0x71, 
+0xc1, 0x37, 0x30, 0xcd, 0x02, 0x8c, 0x31, 0xd2, 
+0x47, 0xc9, 0x3b, 0xce, 0xbb, 0x2b, 0x3b, 0x86, 
+0x47, 0xe5, 0x31, 0xd3, 0x83, 0x14, 0x30, 0xd1, 
+0x42, 0x61, 0x30, 0x65, 0xc1, 0xf9, 0x30, 0x50, 
+0x81, 0xe4, 0x30, 0x49, 0xc3, 0x3b, 0x35, 0xac, 
+0x2c, 0xc4, 0x82, 0x22, 0xd5, 0xae, 0x46, 0xb6, 
+0xfa, 0x4b, 0x2d, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xc6, 0xa8, 0x23, 0x18, 0x0e, 0xff, 0x82, 
+0xa1, 0x46, 0x85, 0x22, 0x01, 0xff, 0xf0, 0x90, 
+0xb8, 0xae, 0x47, 0xe3, 0x7d, 0x5d, 0x76, 0xfd, 
+0x8f, 0xf7, 0x7f, 0x7f, 0xfb, 0xbf, 0xb1, 0xd5, 
+0x7f, 0xf5, 0xf7, 0x7f, 0xbb, 0xd6, 0x98, 0x82, 
+0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x6e, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x31, 0xf4, 0x9a, 0x31, 0xe0, 
+0xdd, 0x32, 0x55, 0x62, 0x33, 0xca, 0xb1, 0x30, 
+0x8c, 0xc8, 0x3e, 0x33, 0xbf, 0xbf, 0xb8, 0x33, 
+0xa5, 0x48, 0x18, 0x30, 0x79, 0x82, 0x6f, 0x30, 
+0x09, 0x40, 0xe4, 0x30, 0x23, 0x00, 0x03, 0x37, 
+0xa9, 0xa8, 0xe5, 0x4f, 0x13, 0x63, 0x10, 0xc2, 
+0x0a, 0xc9, 0x72, 0xf3, 0x48, 0x42, 0xec, 0xf4, 
+0x18, 0x14, 0x40, 0x03, 0x98, 0x27, 0x20, 0x45, 
+0x98, 0x42, 0x00, 0xa5, 0x18, 0x76, 0xe1, 0x5d, 
+0x99, 0x0d, 0x44, 0x28, 0x1e, 0xcf, 0x7f, 0x86, 
+0x1e, 0xa5, 0x44, 0x3a, 0x19, 0x0d, 0xa1, 0xaf, 
+0x98, 0x77, 0xc1, 0x56, 0x18, 0x39, 0x41, 0x22, 
+0x18, 0x2c, 0x61, 0x18, 0x98, 0x27, 0x81, 0xdf, 
+0x18, 0x18, 0x40, 0x9c, 0x18, 0x05, 0x20, 0x15, 
+0x82, 0x00, 0x04, 0x02, 0x6e, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xc6, 0xc8, 0x23, 0x18, 0x0e, 
+0xff, 0x82, 0xa1, 0x46, 0x85, 0x22, 0x01, 0xff, 
+0xf0, 0x90, 0x15, 0x01, 0x2f, 0x1e, 0xe5, 0x03, 
+0x76, 0xab, 0xce, 0xb3, 0x7c, 0x77, 0xf4, 0xaa, 
+0x95, 0xaf, 0xb7, 0xa6, 0xff, 0xec, 0xfb, 0xaa, 
+0xfa, 0xb7, 0x3e, 0x84, 0x7a, 0x9f, 0xd0, 0x9e, 
+0xff, 0xa7, 0x7f, 0xa9, 0x31, 0x05, 0x35, 0x14, 
+0xcc, 0xb8, 0xe4, 0xde, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x31, 0x98, 0x85, 
+0x31, 0x84, 0xbe, 0x31, 0xd9, 0x37, 0x33, 0x06, 
+0x60, 0x30, 0x71, 0x87, 0x51, 0x33, 0x10, 0x78, 
+0x9d, 0x32, 0xfa, 0x07, 0x31, 0x30, 0x60, 0xc2, 
+0x2a, 0x30, 0x00, 0x00, 0xcf, 0x1e, 0x03, 0xf8, 
+0xdb, 0x05, 0x13, 0x83, 0xb0, 0x0d, 0x5e, 0x30, 
+0x0c, 0x22, 0xa9, 0x27, 0x96, 0x7b, 0x02, 0x26, 
+0x05, 0x58, 0x03, 0x46, 0x09, 0xf0, 0x0e, 0xc6, 
+0x10, 0xc8, 0x25, 0xe6, 0x1e, 0x00, 0x51, 0x06, 
+0x44, 0x18, 0xf7, 0x67, 0xb8, 0xc7, 0x51, 0x27, 
+0xae, 0x28, 0xfc, 0x66, 0x44, 0x00, 0x66, 0x86, 
+0x1e, 0x08, 0x53, 0xe6, 0x0e, 0x18, 0x48, 0xa6, 
+0x0a, 0x80, 0x46, 0xc6, 0x09, 0x38, 0x79, 0x26, 
+0xb1, 0x9e, 0x98, 0x90, 0x58, 0x0d, 0x02, 0xa9, 
+0x43, 0x2b, 0x7d, 0x23, 0x13, 0xf6, 0x3a, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 0xa4, 0x23, 
+0x18, 0x0e, 0xff, 0x82, 0xa1, 0x7a, 0x87, 0xa1, 
+0xc1, 0xff, 0xb4, 0x98, 0x05, 0xd8, 0xcf, 0x1b, 
+0xfe, 0xb6, 0xa3, 0xec, 0x7f, 0xff, 0xeb, 0xfd, 
+0x8d, 0xeb, 0xda, 0xea, 0xfe, 0x87, 0x7d, 0x75, 
+0x9c, 0xe9, 0x59, 0xf1, 0xd7, 0x74, 0x2d, 0x31, 
+0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xde, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x31, 
+0x94, 0x82, 0x31, 0x70, 0xc1, 0x31, 0xb5, 0x3a, 
+0x32, 0xc2, 0x69, 0x30, 0x68, 0x47, 0x64, 0x32, 
+0xd3, 0xb9, 0x38, 0x32, 0xbf, 0x47, 0x44, 0x30, 
+0x56, 0x82, 0x35, 0x10, 0x01, 0xb4, 0x10, 0x08, 
+0x61, 0xb7, 0x48, 0x87, 0x08, 0x57, 0x9a, 0xc0, 
+0x56, 0x1c, 0x46, 0x54, 0x2f, 0x34, 0xee, 0x75, 
+0x18, 0x1a, 0x00, 0x1b, 0x98, 0x2f, 0x20, 0x39, 
+0x98, 0x4e, 0x00, 0x9e, 0x18, 0x8a, 0xe1, 0x55, 
+0x99, 0x39, 0x84, 0x0f, 0x1f, 0xec, 0x7e, 0xa7, 
+0x1f, 0xbb, 0x44, 0x29, 0x19, 0x38, 0xe1, 0xbc, 
+0x98, 0x89, 0x01, 0x77, 0x18, 0x3f, 0x41, 0x4c, 
+0x18, 0x2d, 0xe1, 0x46, 0x98, 0x27, 0x02, 0x2f, 
+0x18, 0x17, 0x40, 0xb8, 0x18, 0x04, 0xe0, 0x1b, 
+0x83, 0x00, 0x08, 0x03, 0x2c, 0x26, 0x82, 0x4e, 
+0x39, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 
+0x4c, 0x25, 0x1a, 0x0e, 0xff, 0x82, 0xa9, 0x69, 
+0x85, 0xa1, 0xc1, 0xff, 0xf0, 0x90, 0xc9, 0x43, 
+0xed, 0x49, 0x4d, 0x9d, 0xff, 0xd4, 0xea, 0xfd, 
+0xd5, 0xfd, 0xd8, 0xe7, 0x7d, 0x48, 0xff, 0x5f, 
+0xf4, 0xff, 0xe5, 0x5e, 0x96, 0xfc, 0xff, 0xf5, 
+0x7f, 0xfd, 0xdb, 0x4d, 0xfd, 0x17, 0xd3, 0xe8, 
+0xbf, 0xef, 0xfd, 0x07, 0xfd, 0x3a, 0x4f, 0xb2, 
+0xbf, 0xfe, 0x09, 0xa9, 0x4c, 0x41, 0x4d, 0x45, 
+0x33, 0x2e, 0x39, 0x37, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0x31, 0x88, 0x83, 0x31, 0x5c, 0xc0, 0x31, 
+0x91, 0x3f, 0x32, 0x7e, 0x6e, 0x30, 0x5e, 0x07, 
+0x79, 0x32, 0x95, 0x79, 0xc1, 0x32, 0x82, 0x07, 
+0x59, 0x30, 0x4c, 0x42, 0x3c, 0x30, 0x04, 0xc0, 
+0xe3, 0x30, 0x23, 0x40, 0x07, 0x37, 0x00, 0xec, 
+0xe1, 0xa9, 0xc3, 0x59, 0x89, 0x04, 0x89, 0x2a, 
+0x89, 0xed, 0x93, 0xe0, 0x44, 0xc0, 0xdb, 0x01, 
+0x20, 0xc1, 0x7e, 0x01, 0x60, 0xc2, 0x77, 0x04, 
+0x6c, 0xc4, 0x60, 0x09, 0xb0, 0xc9, 0xe3, 0x1d, 
+0x94, 0xff, 0xf0, 0xde, 0xe4, 0xfe, 0x65, 0x1e, 
+0x74, 0xc9, 0xd6, 0x0d, 0x18, 0xc4, 0x47, 0x0b, 
+0x7c, 0xc1, 0xef, 0x0a, 0x5c, 0xc1, 0x5a, 0x0a, 
+0x48, 0xc1, 0x1d, 0x11, 0xa4, 0xc0, 0xa7, 0x05, 
+0xd4, 0xc0, 0x20, 0x00, 0xe0, 0x2a, 0x00, 0x48, 
+0x0e, 0xc0, 0x9b, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xc6, 0x24, 0x25, 0x1a, 0x0e, 0xff, 0x82, 
+0xa9, 0xbb, 0xb3, 0x61, 0x81, 0xf6, 0x89, 0xb8, 
+0x89, 0x20, 0xe4, 0x29, 0x9e, 0x4a, 0x8f, 0x9c, 
+0xd7, 0xfd, 0x68, 0x27, 0xfb, 0x69, 0xff, 0x5d, 
+0xad, 0xff, 0xd9, 0xed, 0xfb, 0xbf, 0xff, 0xff, 
+0xa7, 0xcb, 0xdb, 0xd7, 0xfe, 0xfd, 0x2c, 0xdd, 
+0x7e, 0xba, 0xd6, 0xdf, 0xa7, 0xcf, 0xd4, 0x46, 
+0x8a, 0x06, 0x9f, 0xc6, 0x5f, 0x4a, 0xd3, 0x10, 
+0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4d, 0xea, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x31, 0x84, 0x82, 0x31, 0x40, 
+0xc3, 0x31, 0x6d, 0x40, 0x32, 0x32, 0x75, 0x30, 
+0x54, 0x47, 0x88, 0x32, 0x53, 0xba, 0x3a, 0x32, 
+0x42, 0x47, 0x6a, 0x30, 0x41, 0x02, 0x45, 0x30, 
+0x0b, 0x00, 0xec, 0x30, 0x24, 0x80, 0x16, 0x37, 
+0x28, 0xb8, 0xe1, 0xc8, 0xb3, 0x59, 0x07, 0xc4, 
+0x89, 0x4a, 0x85, 0xee, 0x93, 0x66, 0x58, 0xa9, 
+0xc8, 0x0c, 0x07, 0xc0, 0x0a, 0xcc, 0x0d, 0xd0, 
+0x06, 0x4c, 0x16, 0xe0, 0x21, 0x8c, 0x29, 0x30, 
+0x4f, 0xcc, 0x5d, 0xe0, 0xf9, 0x0e, 0x64, 0x37, 
+0x66, 0x8e, 0x55, 0x41, 0x02, 0x8c, 0x5d, 0x50, 
+0x71, 0xce, 0x7e, 0x67, 0x0d, 0x12, 0x5f, 0x0c, 
+0xb5, 0x5f, 0x4c, 0x8c, 0xa6, 0x0c, 0x4a, 0x34, 
+0x8c, 0x03, 0x05, 0xd2, 0xd1, 0xb9, 0xbe, 0x92, 
+0xb9, 0x7d, 0x8b, 0xff, 0x4f, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xc6, 0x78, 0x25, 0x1a, 0x0e, 
+0xff, 0x82, 0xa9, 0xb2, 0x2c, 0x21, 0x81, 0xf6, 
+0x89, 0xb8, 0x5e, 0xfa, 0x3a, 0x51, 0x51, 0xe4, 
+0xaa, 0x8e, 0xa5, 0x29, 0x20, 0x30, 0x71, 0x3f, 
+0xff, 0xff, 0xff, 0x7f, 0xff, 0xd5, 0xff, 0xef, 
+0xff, 0xfa, 0x93, 0x10, 0x53, 0x51, 0x4c, 0xcb, 
+0x8e, 0x4d, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x31, 0x70, 0x81, 
+0x31, 0x34, 0xc2, 0x31, 0x39, 0x43, 0x31, 0xee, 
+0x78, 0x30, 0x49, 0x07, 0x97, 0x32, 0x0f, 0x7a, 
+0xa3, 0x31, 0xff, 0x07, 0x79, 0x30, 0x35, 0xc2, 
+0x4c, 0x30, 0x10, 0xc0, 0xf7, 0x30, 0x26, 0x40, 
+0x25, 0x37, 0x40, 0x84, 0xe2, 0x27, 0x63, 0x5a, 
+0x86, 0x05, 0x89, 0x2a, 0xb9, 0xed, 0x93, 0xd8, 
+0x22, 0x60, 0x67, 0x80, 0xb4, 0x60, 0xac, 0x00, 
+0x2c, 0x61, 0x18, 0x81, 0x66, 0x61, 0xf1, 0x03, 
+0x50, 0x64, 0x64, 0x8a, 0x36, 0x7c, 0x75, 0x4c, 
+0xc2, 0x7b, 0xc4, 0x8a, 0xb2, 0x64, 0x5a, 0x04, 
+0xf8, 0x61, 0xdc, 0x84, 0xc2, 0x60, 0xcc, 0x84, 
+0x7e, 0x60, 0x82, 0x04, 0x84, 0x60, 0x61, 0x87, 
+0xd6, 0x66, 0x9a, 0x49, 0x83, 0x05, 0xc2, 0x30, 
+0x2a, 0xc0, 0x34, 0xb8, 0x02, 0x31, 0x3f, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0x46, 0x78, 0x25, 
+0x1a, 0x0e, 0xff, 0x82, 0xa9, 0x5a, 0x0c, 0xa2, 
+0x9d, 0xfe, 0x88, 0xe0, 0x7b, 0xa0, 0x1a, 0x99, 
+0xeb, 0x2f, 0xdc, 0x37, 0xad, 0x28, 0xbf, 0xfe, 
+0xff, 0xef, 0xff, 0x3b, 0xfe, 0xea, 0xbe, 0xb7, 
+0x7d, 0x3b, 0xbe, 0xfd, 0xdd, 0x0b, 0x4c, 0x41, 
+0x4d, 0x45, 0x33, 0x2e, 0x39, 0x37, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0x16, 0xc0, 0x80, 0x30, 0x11, 0x80, 0xc3, 0x30, 
+0x11, 0x41, 0x44, 0x30, 0x19, 0x02, 0x7d, 0x30, 
+0x3d, 0xc7, 0xa2, 0x31, 0xc6, 0xba, 0xfa, 0x36, 
+0xe1, 0x78, 0x63, 0x0a, 0x22, 0x55, 0x30, 0x58, 
+0x0f, 0xe3, 0x09, 0xe0, 0x30, 0x30, 0xeb, 0x01, 
+0x23, 0x11, 0x20, 0x63, 0x3b, 0x61, 0x11, 0xa4, 
+0xa5, 0x5a, 0xf7, 0x49, 0xad, 0xe6, 0xcf, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xd2, 0x60, 0x6a, 0x00, 0xd2, 0x18, 
+0x15, 0xf9, 0x84, 0x6c, 0x04, 0x71, 0x87, 0xce, 
+0x0b, 0x49, 0x91, 0xa4, 0x22, 0xf1, 0xf2, 0x6f, 
+0x05, 0x61, 0xef, 0xa0, 0x25, 0x11, 0x91, 0x7a, 
+0x12, 0x59, 0x87, 0x64, 0x12, 0x71, 0x83, 0x1c, 
+0x11, 0xd1, 0x81, 0xde, 0x12, 0x29, 0x81, 0x48, 
+0x1f, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 
+0x7c, 0x25, 0x1a, 0x0e, 0xff, 0x82, 0xa9, 0x60, 
+0x85, 0xa1, 0xc1, 0xff, 0xf0, 0x90, 0x71, 0x95, 
+0x29, 0x46, 0x07, 0x17, 0x8a, 0x01, 0x16, 0x0d, 
+0xb8, 0x40, 0x72, 0xf9, 0xce, 0xb9, 0x92, 0xbf, 
+0x21, 0xec, 0x66, 0x60, 0x87, 0xea, 0xf7, 0xfd, 
+0x3f, 0xbb, 0xff, 0x7e, 0x5a, 0xbf, 0xcb, 0xff, 
+0xa7, 0xef, 0x74, 0x4d, 0xf6, 0x50, 0x98, 0x82, 
+0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x6f, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x15, 0x80, 0x7f, 0x30, 0x10, 0x40, 
+0xc2, 0x30, 0x0e, 0x01, 0x47, 0x30, 0x14, 0x42, 
+0x80, 0x30, 0x31, 0x87, 0xad, 0x31, 0x7a, 0x7b, 
+0x41, 0x35, 0xb4, 0x79, 0x13, 0x06, 0xd2, 0x5a, 
+0x30, 0x6b, 0x10, 0x73, 0x0a, 0x50, 0x3d, 0x30, 
+0xee, 0x00, 0x53, 0x11, 0x50, 0x4c, 0x3b, 0x70, 
+0xa1, 0xe4, 0xd5, 0x5c, 0xf6, 0xc9, 0xec, 0x60, 
+0xde, 0xa3, 0x03, 0x74, 0x07, 0x43, 0x05, 0x88, 
+0x00, 0x33, 0x08, 0xec, 0x06, 0x93, 0x0f, 0xa8, 
+0x12, 0x43, 0x23, 0x6c, 0x39, 0x53, 0xe5, 0xc1, 
+0xa9, 0x33, 0xe0, 0x2c, 0x3e, 0x13, 0x23, 0x00, 
+0x21, 0x63, 0x0e, 0xbc, 0x23, 0xb3, 0x06, 0x0c, 
+0x23, 0x73, 0x03, 0x60, 0x24, 0x63, 0x02, 0x1c, 
+0x3f, 0x33, 0x1f, 0xd3, 0x40, 0x02, 0xe1, 0x90, 
+0x2a, 0xc8, 0x6e, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xc8, 0x7c, 0x27, 0x1a, 0x0f, 0xfb, 0x64, 
+0xa1, 0x58, 0x05, 0x61, 0xc1, 0xff, 0xf0, 0x90, 
+0x70, 0x44, 0xb2, 0x7e, 0xf6, 0x65, 0x5f, 0x60, 
+0xaf, 0x5b, 0xfd, 0x7d, 0x68, 0xfd, 0xbf, 0x6f, 
+0xff, 0xa3, 0x6b, 0xbf, 0xa9, 0xd4, 0xfd, 0x0e, 
+0xfa, 0xb7, 0x7d, 0xef, 0x8d, 0xbb, 0x5a, 0x62, 
+0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xba, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x00, 0x24, 0x40, 0x00, 0x62, 
+0xf2, 0x51, 0x87, 0x0f, 0x66, 0x15, 0x6a, 0x18, 
+0x73, 0x56, 0x60, 0x2c, 0x8a, 0x5c, 0x61, 0x8b, 
+0x50, 0x70, 0x61, 0x7c, 0x8a, 0x34, 0x60, 0x0a, 
+0x03, 0x26, 0x60, 0x26, 0x01, 0x58, 0x60, 0x35, 
+0x00, 0x4c, 0x36, 0x64, 0x76, 0x43, 0x60, 0xee, 
+0x52, 0x62, 0x26, 0xa3, 0x27, 0xbd, 0x98, 0x5b, 
+0xdb, 0xf7, 0x7f, 0xa8, 0xc0, 0xe4, 0x02, 0x0c, 
+0xc1, 0x67, 0x00, 0x80, 0xc2, 0x3c, 0x00, 0xf8, 
+0xc3, 0xef, 0x03, 0x74, 0xc8, 0xe0, 0x0a, 0xe8, 
+0xf9, 0x9d, 0x4f, 0xb0, 0xf8, 0x32, 0x0c, 0x40, 
+0xc8, 0xc3, 0x07, 0x7c, 0xc3, 0xa6, 0x08, 0xa0, 
+0xc1, 0x74, 0x08, 0xc8, 0xcc, 0x39, 0x1c, 0xc6, 
+0x6f, 0xd8, 0xc2, 0x65, 0x30, 0x1a, 0x18, 0x90, 
+0x00, 0x8b, 0x6d, 0xb8, 0x41, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xc7, 0x10, 0x27, 0x1a, 0x0f, 
+0xfb, 0x64, 0xa1, 0x60, 0x85, 0xa1, 0xc1, 0xff, 
+0xf0, 0x90, 0x72, 0xf9, 0xcb, 0xfc, 0xfd, 0x7f, 
+0x3f, 0xf1, 0xfd, 0xff, 0xdb, 0xff, 0x7f, 0x5b, 
+0x02, 0xdd, 0x66, 0xaf, 0xff, 0xf5, 0xb2, 0xcc, 
+0x9f, 0xf6, 0x16, 0xa9, 0x9f, 0x4f, 0xb1, 0xfa, 
+0x7f, 0x3b, 0x27, 0xf6, 0x50, 0x98, 0x82, 0x9a, 
+0x8a, 0x66, 0x5c, 0x72, 0x6f, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x20, 0x00, 0x03, 
+0x14, 0x07, 0xd3, 0x0c, 0xcc, 0x23, 0x08, 0x14, 
+0x73, 0x07, 0xe8, 0x43, 0x01, 0x58, 0x7b, 0x93, 
+0x0c, 0xb7, 0xb9, 0xb3, 0x0c, 0x20, 0x79, 0xf3, 
+0x00, 0x08, 0x26, 0x43, 0x02, 0x44, 0x11, 0x53, 
+0x02, 0xc4, 0x05, 0x31, 0x2f, 0x21, 0xc6, 0x43, 
+0x40, 0xeb, 0x91, 0x11, 0x35, 0x5a, 0x9f, 0x29, 
+0x3d, 0x80, 0x8f, 0xb3, 0xe2, 0x73, 0x03, 0xac, 
+0x08, 0xe3, 0x05, 0xa8, 0x03, 0xd3, 0x08, 0xfc, 
+0x00, 0xb3, 0x0f, 0xc0, 0x08, 0xa3, 0x23, 0x94, 
+0x1c, 0x53, 0xe6, 0xd8, 0xc6, 0x53, 0xe1, 0x34, 
+0x22, 0xd3, 0x23, 0x08, 0x1a, 0x43, 0x0e, 0x7c, 
+0x21, 0x53, 0x05, 0x9c, 0x22, 0xd3, 0x02, 0xa8, 
+0x24, 0x63, 0x01, 0x14, 0x3f, 0x93, 0x05, 0xd3, 
+0xc5, 0x06, 0x04, 0xa0, 0x55, 0xb0, 0xdc, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0x47, 0x18, 0x25, 
+0x20, 0xce, 0x7f, 0x62, 0xa1, 0x70, 0x8f, 0x61, 
+0xc1, 0xfe, 0x89, 0x28, 0xe4, 0x93, 0x93, 0xf7, 
+0x8d, 0x86, 0xff, 0xa7, 0xa2, 0xee, 0xd7, 0xbf, 
+0xd6, 0x8f, 0xff, 0xff, 0x52, 0xb6, 0x69, 0xa1, 
+0x1b, 0x7e, 0x8f, 0xd9, 0x46, 0xfd, 0x28, 0x6a, 
+0x19, 0xe4, 0xd3, 0x10, 0x53, 0x51, 0x4c, 0xcb, 
+0x8e, 0x4d, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 
+0x13, 0x40, 0x7a, 0x30, 0x0b, 0x00, 0xc3, 0x30, 
+0x04, 0xc1, 0x46, 0x30, 0x00, 0x02, 0x85, 0x30, 
+0x03, 0x47, 0xbc, 0x30, 0x5e, 0xbb, 0xac, 0x31, 
+0x5b, 0x7a, 0x23, 0x04, 0xf2, 0x69, 0x30, 0xa0, 
+0x11, 0xc3, 0x0b, 0x40, 0x5c, 0x30, 0xf5, 0x00, 
+0x30, 0x51, 0x18, 0x8b, 0xb8, 0x93, 0x27, 0x28, 
+0xc3, 0xe7, 0x20, 0xb7, 0x9b, 0x3a, 0xc8, 0x24, 
+0x80, 0xc0, 0x5e, 0x00, 0xdc, 0xc0, 0x99, 0x00, 
+0x58, 0x30, 0x1f, 0x13, 0x06, 0xfc, 0x00, 0x33, 
+0x10, 0x10, 0x03, 0x63, 0x69, 0xac, 0x11, 0x43, 
+0x67, 0x10, 0x07, 0x43, 0x0f, 0xcc, 0x09, 0x53, 
+0xca, 0x36, 0x8d, 0x1c, 0xec, 0x31, 0x9b, 0xec, 
+0x09, 0xc2, 0x2a, 0xa2, 0x0b, 0x00, 0x76, 0xa9, 
+0x06, 0xcc, 0x5d, 0xb7, 0x7b, 0xbf, 0xff, 0xff, 
+0x8c, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0x47, 
+0x10, 0x25, 0x1a, 0x4e, 0xff, 0x82, 0xa1, 0x5f, 
+0x05, 0x61, 0xc1, 0xff, 0xf0, 0x90, 0x43, 0x22, 
+0x97, 0xe8, 0x11, 0x5c, 0xaf, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xa5, 0x31, 0x05, 0x35, 0x14, 
+0xcc, 0xb8, 0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x12, 0x00, 0x79, 0x30, 0x09, 0x40, 
+0xc0, 0x30, 0x01, 0x01, 0x47, 0x0b, 0x05, 0x0c, 
+0x60, 0x12, 0x8f, 0x7a, 0x60, 0x83, 0x77, 0x5e, 
+0x62, 0x2e, 0xf4, 0xa6, 0x11, 0x04, 0xd8, 0x61, 
+0x62, 0x24, 0x66, 0x17, 0x20, 0xce, 0x61, 0xec, 
+0x02, 0x40, 0x62, 0x33, 0x27, 0x73, 0x2b, 0x26, 
+0x51, 0x97, 0xb2, 0x47, 0x63, 0x06, 0xf5, 0x30, 
+0xc0, 0xd5, 0x02, 0x30, 0xc1, 0x40, 0x01, 0x64, 
+0xc1, 0xf9, 0x00, 0xc8, 0xc3, 0x72, 0x00, 0xac, 
+0xc7, 0xcb, 0x03, 0x38, 0xf2, 0xac, 0x23, 0x08, 
+0xf1, 0x6f, 0x01, 0x08, 0xc7, 0xa4, 0x04, 0x00, 
+0xf1, 0x96, 0xa4, 0xd1, 0xf7, 0x6c, 0xc6, 0x47, 
+0xe0, 0x93, 0x79, 0x30, 0x19, 0x23, 0x15, 0x09, 
+0x89, 0x00, 0x15, 0x3a, 0x7a, 0xe4, 0x94, 0x97, 
+0xef, 0x76, 0x5f, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x82, 0x46, 0xe8, 0x27, 0x1a, 0x0f, 0xfb, 0x64, 
+0xa1, 0x22, 0x0a, 0x63, 0x5d, 0xfe, 0x08, 0xe0, 
+0x7f, 0xfe, 0x3b, 0x77, 0x3b, 0xae, 0x9f, 0xdd, 
+0xee, 0xff, 0xff, 0xfd, 0xfb, 0xaa, 0xfd, 0xdf, 
+0x46, 0xef, 0xbf, 0xfa, 0xd3, 0x10, 0x53, 0x51, 
+0x4c, 0xcb, 0x8e, 0x4d, 0xd5, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x30, 0x11, 0x40, 0x76, 0x30, 
+0x07, 0x00, 0xc1, 0x11, 0x82, 0x8c, 0x60, 0x0b, 
+0x85, 0x0a, 0x60, 0x34, 0x0f, 0x78, 0x61, 0x6a, 
+0xf7, 0x40, 0x65, 0xa8, 0xf4, 0x86, 0x17, 0xa4, 
+0xde, 0x61, 0x80, 0x25, 0x06, 0x17, 0x80, 0xdc, 
+0x61, 0xee, 0x04, 0x26, 0x23, 0x00, 0x34, 0x1e, 
+0xe0, 0x4c, 0x9e, 0xad, 0x0f, 0x7c, 0x82, 0xde, 
+0x67, 0x3a, 0xcc, 0x0f, 0xc0, 0x2c, 0x4c, 0x17, 
+0x50, 0x1f, 0x8c, 0x24, 0x20, 0x1a, 0x4c, 0x3e, 
+0xf0, 0x25, 0x0c, 0x8e, 0x00, 0x81, 0xcf, 0x9a, 
+0x34, 0x7a, 0x4f, 0x83, 0x60, 0x64, 0x4c, 0x8b, 
+0x10, 0x38, 0xcc, 0x38, 0x00, 0x74, 0x0c, 0x13, 
+0xa0, 0x86, 0x8c, 0x05, 0x90, 0x90, 0x4c, 0x01, 
+0xf0, 0xfd, 0x8c, 0x53, 0x4e, 0x06, 0x0c, 0x47, 
+0x40, 0xca, 0x3a, 0xf4, 0x49, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0x46, 0xc4, 0x27, 0x1a, 0x0f, 
+0xfb, 0x64, 0xa1, 0x40, 0x8a, 0xa2, 0x05, 0xfe, 
+0x88, 0xe0, 0x65, 0xf4, 0x57, 0xdc, 0xf9, 0x47, 
+0xfa, 0x19, 0xa6, 0xdd, 0xe8, 0xba, 0x9d, 0x7e, 
+0xff, 0xf2, 0x9a, 0x7f, 0xfa, 0x34, 0xed, 0x6d, 
+0x9f, 0xdf, 0xd3, 0xf9, 0xeb, 0x7e, 0x7a, 0x94, 
+0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x75, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 0x10, 0x00, 
+0x73, 0x30, 0x05, 0x40, 0xbe, 0x11, 0x82, 0x8e, 
+0x60, 0x18, 0x05, 0x08, 0x60, 0x50, 0x8f, 0x72, 
+0x62, 0x27, 0x77, 0x02, 0x68, 0x86, 0xf4, 0x26, 
+0x1d, 0xc4, 0xe0, 0x61, 0xa2, 0x25, 0xe6, 0x18, 
+0x20, 0xf2, 0x61, 0xf0, 0x05, 0x86, 0x23, 0x20, 
+0x6a, 0x07, 0x73, 0x22, 0x4c, 0x56, 0xb7, 0xb2, 
+0x47, 0x39, 0x81, 0xfe, 0xaf, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 
+0x06, 0x08, 0x18, 0x17, 0x46, 0x0b, 0xb0, 0x12, 
+0x66, 0x12, 0x18, 0x11, 0xc6, 0x1f, 0x60, 0x1c, 
+0xa6, 0x46, 0xc8, 0x5e, 0x87, 0xcb, 0xe3, 0x18, 
+0x47, 0xc0, 0x88, 0x51, 0x06, 0x45, 0x30, 0x12, 
+0x86, 0x1b, 0xa8, 0x37, 0x26, 0x09, 0x58, 0x42, 
+0x66, 0x01, 0xc0, 0x47, 0xc6, 0x02, 0x30, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc6, 0xe8, 0x27, 
+0x1a, 0x0f, 0xfb, 0x64, 0xa1, 0x61, 0x05, 0x61, 
+0xc1, 0xff, 0xf0, 0x90, 0x7e, 0x66, 0x3e, 0xa6, 
+0x98, 0x04, 0x60, 0x30, 0x05, 0x5b, 0x4f, 0x5c, 
+0x7a, 0x92, 0x8e, 0xf3, 0xdd, 0x2e, 0xaf, 0x49, 
+0xde, 0x96, 0x73, 0xab, 0xfa, 0x91, 0xff, 0xff, 
+0xf2, 0xaa, 0xfd, 0xa8, 0xff, 0x31, 0xfb, 0xa8, 
+0xf4, 0xa7, 0x5b, 0x7c, 0x36, 0x98, 0x82, 0x9a, 
+0x8a, 0x66, 0x5c, 0x72, 0x6e, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0xf4, 0x70, 0x30, 0x30, 0xbd, 0x30, 0x09, 0x44, 
+0x31, 0x26, 0x83, 0x30, 0x35, 0x07, 0xb2, 0x31, 
+0x68, 0x7b, 0x50, 0x31, 0x62, 0x87, 0x9c, 0x30, 
+0x46, 0xc2, 0x71, 0x30, 0x37, 0x81, 0x34, 0x30, 
+0x31, 0x00, 0x80, 0x37, 0xc8, 0xec, 0xe3, 0x04, 
+0xc3, 0x5b, 0x01, 0x08, 0x89, 0xea, 0xb1, 0xef, 
+0x90, 0x4f, 0x83, 0x9e, 0xdf, 0xff, 0xd4, 0x60, 
+0x83, 0x01, 0x8a, 0x60, 0xbb, 0x81, 0x48, 0x61, 
+0x20, 0x01, 0x66, 0x61, 0xf4, 0x82, 0x58, 0x64, 
+0x68, 0x07, 0x92, 0x7c, 0xa2, 0xbd, 0xfe, 0x7b, 
+0xec, 0x06, 0xc6, 0x64, 0x4c, 0x80, 0x72, 0x61, 
+0xb3, 0x03, 0x40, 0x60, 0x8d, 0x04, 0x10, 0x60, 
+0x0a, 0x84, 0x76, 0x60, 0x34, 0x87, 0xdc, 0x65, 
+0x5a, 0x51, 0x81, 0x85, 0xe2, 0xa0, 0x45, 0x92, 
+0xf4, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc8, 
+0x6c, 0x27, 0x1a, 0x0f, 0xfb, 0x64, 0xa1, 0x5e, 
+0x05, 0x61, 0xc1, 0xff, 0xf0, 0x90, 0x47, 0x67, 
+0xe8, 0xaf, 0xf1, 0x38, 0x65, 0xbd, 0x63, 0x3d, 
+0x7c, 0xb7, 0xf6, 0xfd, 0xdf, 0xff, 0xef, 0xfd, 
+0x4d, 0xff, 0x59, 0xbe, 0x8f, 0x7f, 0xef, 0x77, 
+0xcb, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 
+0x9b, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x00, 0x82, 0x60, 0x00, 0x61, 0xc2, 0x08, 
+0x34, 0xe8, 0x60, 0x36, 0x89, 0x8d, 0xb5, 0x06, 
+0x05, 0x38, 0xa4, 0xe6, 0x24, 0xd4, 0xfe, 0xa6, 
+0x24, 0x28, 0xa3, 0x26, 0x06, 0x90, 0x33, 0xc6, 
+0x04, 0xb8, 0x19, 0x66, 0x03, 0xf8, 0x0a, 0xa7, 
+0x3c, 0x48, 0x76, 0x67, 0x20, 0x2e, 0x72, 0x22, 
+0x06, 0xa7, 0x20, 0x9f, 0xb0, 0x09, 0xff, 0xee, 
+0xff, 0x5a, 0x10, 0x60, 0x85, 0x81, 0x9c, 0x60, 
+0xbc, 0x01, 0x6e, 0x61, 0x1f, 0x81, 0xa8, 0x61, 
+0xf2, 0x02, 0xe2, 0x64, 0x62, 0x89, 0x20, 0x7c, 
+0x7e, 0x49, 0x98, 0x7b, 0xc9, 0x88, 0x58, 0x64, 
+0x44, 0x00, 0x3e, 0x61, 0xac, 0x83, 0x0e, 0x60, 
+0x85, 0x84, 0x02, 0x42, 0x11, 0xb1, 0x81, 0x10, 
+0x1f, 0x59, 0x9a, 0xa9, 0x66, 0x0d, 0x17, 0x08, 
+0x80, 0xab, 0x29, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xc6, 0xfc, 0x25, 0x1a, 0x0e, 0xff, 0x82, 
+0x81, 0x55, 0x05, 0xa1, 0xc1, 0xff, 0xf0, 0x90, 
+0xf1, 0x8f, 0x58, 0xa3, 0xbc, 0xf7, 0x4b, 0xa3, 
+0xe7, 0x7d, 0x9c, 0x9d, 0xc9, 0xea, 0xff, 0xfa, 
+0x7e, 0x77, 0x47, 0xf6, 0x23, 0x6f, 0xd1, 0xf7, 
+0x68, 0xfd, 0x1a, 0x3c, 0xcd, 0x29, 0x88, 0x29, 
+0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xea, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x30, 0xcc, 0x6a, 0x04, 0x17, 0x26, 
+0x10, 0x28, 0x06, 0x39, 0xcf, 0xa6, 0x09, 0x80, 
+0xf4, 0x06, 0x3f, 0xff, 0x57, 0x86, 0x3e, 0xc0, 
+0xf1, 0x86, 0x0b, 0x78, 0x4e, 0x66, 0x07, 0xc0, 
+0x27, 0xc6, 0x06, 0x60, 0x12, 0x46, 0xf9, 0x28, 
+0x9c, 0x50, 0xec, 0x6b, 0x40, 0xa0, 0xd1, 0x2d, 
+0x56, 0x3c, 0xf2, 0x09, 0x78, 0x61, 0x82, 0x1c, 
+0x06, 0xb9, 0x82, 0xf2, 0x06, 0x41, 0x84, 0x78, 
+0x07, 0x99, 0x87, 0xbe, 0x0d, 0x71, 0x91, 0x6c, 
+0x2a, 0x59, 0xf1, 0x4b, 0x52, 0x49, 0xee, 0x74, 
+0x27, 0x59, 0x90, 0xee, 0x04, 0x01, 0x86, 0x90, 
+0x0b, 0x51, 0x81, 0xf0, 0x0f, 0xb1, 0x80, 0x30, 
+0x11, 0x89, 0x81, 0x4e, 0x1f, 0x11, 0x80, 0xfa, 
+0x0a, 0x41, 0x80, 0x24, 0x01, 0x78, 0x84, 0x00, 
+0x40, 0x6e, 0x8b, 0x22, 0x69, 0xff, 0xfb, 0x90, 
+0xc4, 0xff, 0x82, 0x47, 0x3c, 0x25, 0x20, 0xce, 
+0x7f, 0x62, 0xa1, 0x56, 0x05, 0x61, 0xc1, 0xff, 
+0xf0, 0x90, 0xf2, 0xc3, 0xed, 0x7f, 0x39, 0x3f, 
+0xff, 0x5b, 0xf5, 0x53, 0xf7, 0x75, 0xff, 0xdd, 
+0x67, 0xef, 0xfe, 0xc6, 0x7f, 0x9b, 0xf4, 0xf7, 
+0xfa, 0x97, 0xaf, 0xcb, 0x26, 0x20, 0xa6, 0xa2, 
+0x99, 0x97, 0x1c, 0x9b, 0xd5, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x30, 0x0b, 0x80, 0x69, 
+0x15, 0x02, 0xd8, 0xc0, 0x2d, 0x04, 0xfc, 0xc0, 
+0x86, 0x09, 0xe0, 0xc1, 0x5d, 0x1e, 0x4c, 0xc9, 
+0x14, 0xe9, 0x64, 0xe3, 0x9d, 0xe0, 0x4c, 0x65, 
+0x09, 0xc0, 0xc4, 0x1c, 0x50, 0xcc, 0x33, 0xc2, 
+0x6c, 0xc3, 0xe0, 0x16, 0x8c, 0x44, 0xc2, 0x2c, 
+0xec, 0xc6, 0xc5, 0x92, 0x15, 0x1b, 0xc9, 0x17, 
+0x96, 0x60, 0x7e, 0xdf, 0xe8, 0x30, 0x44, 0xc0, 
+0xe0, 0x30, 0x5e, 0x00, 0xd9, 0x30, 0x8e, 0xc1, 
+0x10, 0x30, 0xf5, 0x81, 0xeb, 0x32, 0x29, 0x45, 
+0xfa, 0x3e, 0x0e, 0xaf, 0x7c, 0x3d, 0xb5, 0x45, 
+0x9c, 0x32, 0x18, 0x80, 0xd1, 0x30, 0xce, 0x41, 
+0x4f, 0x30, 0x39, 0xc1, 0xed, 0x30, 0x0f, 0x42, 
+0x2a, 0x30, 0x30, 0x83, 0xdd, 0x30, 0x24, 0x01, 
+0x45, 0x30, 0x06, 0x40, 0x2e, 0x0b, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc6, 0x74, 0x25, 0x1a, 
+0x0e, 0xff, 0x82, 0xa9, 0x66, 0x07, 0xa1, 0xc1, 
+0xff, 0xb4, 0x98, 0x00, 0x0a, 0x0d, 0xe1, 0xa4, 
+0x9c, 0x78, 0xb4, 0xf3, 0xdb, 0xce, 0xdd, 0xe8, 
+0xee, 0x57, 0x5d, 0x1f, 0xfd, 0xff, 0xd3, 0x63, 
+0xff, 0xfb, 0xf7, 0x7a, 0xed, 0xff, 0xcc, 0x7e, 
+0xfd, 0xfd, 0x09, 0x88, 0x29, 0xa8, 0xa6, 0x65, 
+0xc7, 0x26, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x0a, 
+0x40, 0x64, 0x1d, 0x02, 0xcc, 0xc0, 0x38, 0x04, 
+0xe8, 0xc0, 0x99, 0x09, 0xcc, 0xc1, 0x84, 0x1e, 
+0x10, 0xca, 0x1d, 0xe7, 0x90, 0xe7, 0x99, 0xdc, 
+0x8c, 0x6e, 0xc9, 0xbc, 0xc4, 0x48, 0x51, 0x8c, 
+0x34, 0x82, 0x80, 0xc3, 0xe4, 0x19, 0x4c, 0x44, 
+0x02, 0x70, 0xec, 0x88, 0x84, 0x92, 0xd5, 0x03, 
+0xcf, 0x14, 0x97, 0xd7, 0x39, 0x66, 0x83, 0x05, 
+0x08, 0x10, 0xd3, 0x06, 0xcc, 0x10, 0xc3, 0x0a, 
+0x20, 0x15, 0xd3, 0x11, 0x64, 0x27, 0x23, 0x27, 
+0x10, 0x79, 0x53, 0xfe, 0x0f, 0xbc, 0x13, 0xf7, 
+0xb0, 0x72, 0xb3, 0x25, 0xd4, 0x14, 0x23, 0x0e, 
+0x68, 0x16, 0x03, 0x03, 0xc8, 0x22, 0x63, 0x01, 
+0xb0, 0x27, 0x53, 0x04, 0x04, 0x45, 0xe3, 0x02, 
+0xf4, 0x17, 0x23, 0x00, 0x98, 0x03, 0x90, 0x68, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc7, 0x20, 
+0x27, 0x1a, 0x0f, 0xfb, 0x64, 0x81, 0x61, 0x87, 
+0xa1, 0xc1, 0xff, 0xb4, 0x98, 0x01, 0x00, 0x64, 
+0x89, 0xb1, 0x34, 0xa6, 0x51, 0x3e, 0xce, 0xed, 
+0xce, 0x27, 0xd3, 0xd3, 0x4f, 0x65, 0xf4, 0xea, 
+0x21, 0xde, 0xdf, 0x5e, 0x53, 0x7f, 0xaf, 0xee, 
+0x44, 0x5c, 0xb6, 0xd7, 0x58, 0xaa, 0x5f, 0xf7, 
+0xd3, 0xf6, 0x58, 0xa4, 0x7b, 0xe8, 0x4c, 0x41, 
+0x4d, 0x45, 0x33, 0x2e, 0x39, 0x37, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0x30, 0x07, 0x00, 0x53, 0x0b, 0x01, 0x2c, 0x60, 
+0x1c, 0x82, 0x1e, 0x60, 0x49, 0x04, 0x3c, 0x60, 
+0xba, 0x8d, 0x0e, 0x64, 0xdd, 0x64, 0xbe, 0x73, 
+0x0e, 0xcf, 0x26, 0x34, 0x04, 0x38, 0x61, 0xf2, 
+0x23, 0xa6, 0x16, 0xe1, 0x22, 0x61, 0xa8, 0x0b, 
+0x86, 0x1d, 0x61, 0x2e, 0x72, 0xe3, 0xe2, 0xc6, 
+0x8b, 0x3e, 0x04, 0x97, 0xce, 0x60, 0x7f, 0xfe, 
+0x83, 0x04, 0x6c, 0x0f, 0x03, 0x05, 0xe0, 0x0f, 
+0x93, 0x08, 0xcc, 0x14, 0xa3, 0x0f, 0x10, 0x25, 
+0xb3, 0x21, 0xec, 0x74, 0x63, 0xdc, 0xe3, 0x93, 
+0x83, 0xd7, 0x5c, 0x6e, 0xa3, 0x20, 0xc0, 0x15, 
+0x93, 0x0c, 0x4c, 0x11, 0x53, 0x02, 0xfc, 0x1d, 
+0x53, 0x01, 0xe4, 0x21, 0xc3, 0x03, 0xd8, 0x3c, 
+0x93, 0x02, 0xc8, 0x13, 0xf3, 0x00, 0x94, 0x02, 
+0xc0, 0x60, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc7, 0x10, 0x27, 0x1a, 0x0f, 0xfb, 0x64, 0xa1, 
+0x8a, 0x07, 0x61, 0x81, 0xff, 0xb4, 0x98, 0x00, 
+0xa0, 0xea, 0x18, 0xa4, 0xe3, 0xc6, 0xc7, 0x9d, 
+0xd9, 0xf9, 0xd2, 0x9e, 0x87, 0x7f, 0xd4, 0xea, 
+0x75, 0xfb, 0x99, 0xfc, 0xb6, 0x8d, 0xdf, 0xec, 
+0xb7, 0xdd, 0xff, 0xf4, 0x3b, 0xed, 0xff, 0xa1, 
+0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xde, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x30, 0x07, 0xc0, 0x5e, 0x30, 0x00, 
+0xc0, 0xad, 0x30, 0x13, 0x81, 0x34, 0x30, 0x2f, 
+0x42, 0x67, 0x30, 0x74, 0x07, 0x60, 0x33, 0x03, 
+0x78, 0xca, 0x3b, 0xca, 0x75, 0x23, 0x20, 0x12, 
+0x69, 0x31, 0x2a, 0x14, 0xc3, 0x0d, 0x60, 0xae, 
+0x30, 0xf5, 0x07, 0x73, 0x10, 0xc0, 0xc0, 0x3a, 
+0xe2, 0xe0, 0xe4, 0x75, 0x20, 0xf3, 0xc5, 0x25, 
+0xf5, 0xf0, 0xa8, 0x27, 0x12, 0xd6, 0x60, 0x43, 
+0x00, 0xea, 0x60, 0x5b, 0x80, 0xf4, 0x60, 0x8a, 
+0x01, 0x5a, 0x60, 0xf2, 0x82, 0x8c, 0x62, 0x29, 
+0x08, 0x1e, 0x6e, 0x3b, 0xc0, 0x6e, 0x6d, 0xe0, 
+0x07, 0xc2, 0x62, 0x15, 0x81, 0x8c, 0x78, 0x23, 
+0x81, 0x92, 0x9c, 0x06, 0x3e, 0x84, 0x9a, 0x07, 
+0xcc, 0x65, 0x74, 0xb1, 0x82, 0x01, 0x2a, 0xdc, 
+0xfa, 0xcd, 0x6e, 0xdd, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc7, 0x10, 0x27, 0x1c, 0x0f, 0xfb, 
+0x64, 0xb1, 0x69, 0x07, 0x61, 0xc1, 0xff, 0xb4, 
+0x98, 0x9e, 0xfe, 0xdc, 0x14, 0xff, 0xbe, 0x39, 
+0x08, 0xe2, 0x29, 0x32, 0x50, 0x9a, 0x03, 0x83, 
+0xc0, 0xc4, 0xb4, 0xa9, 0x9f, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xe9, 0x4c, 0x41, 0x4d, 0x45, 0x33, 
+0x2e, 0x39, 0x37, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x08, 0x00, 0x6b, 
+0x30, 0x04, 0x00, 0xc6, 0x30, 0x1a, 0xc1, 0x5f, 
+0x30, 0x3b, 0x02, 0xb8, 0x30, 0x8f, 0xc8, 0x53, 
+0x33, 0xb1, 0x3f, 0xf3, 0x3e, 0x73, 0x84, 0x33, 
+0x27, 0x22, 0xbe, 0x31, 0x65, 0x18, 0x13, 0x0f, 
+0xb0, 0xd3, 0x31, 0x1a, 0x09, 0x63, 0x13, 0x30, 
+0xf3, 0x3c, 0x73, 0xf0, 0x85, 0x44, 0xcf, 0x75, 
+0x22, 0xf1, 0x4a, 0x43, 0xf6, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xdb, 0xa0, 0xc0, 0xf9, 0x03, 0x70, 0xc1, 0x44, 
+0x03, 0xc4, 0xc1, 0xe1, 0x05, 0x30, 0xc3, 0x36, 
+0x09, 0x9c, 0xc7, 0x41, 0x1d, 0xa8, 0xef, 0x5e, 
+0xe8, 0x68, 0xee, 0x2d, 0x1c, 0x68, 0xc6, 0xfa, 
+0x06, 0x54, 0xc2, 0x8d, 0x02, 0xd4, 0xc0, 0x7f, 
+0x06, 0x0c, 0xc0, 0x95, 0x07, 0x28, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x82, 0x47, 0x18, 0x29, 0x1a, 
+0x0f, 0xfb, 0x64, 0xa1, 0x4d, 0x0a, 0x63, 0x29, 
+0xfe, 0x08, 0xe0, 0xc1, 0x00, 0x0c, 0xec, 0xd6, 
+0x90, 0xf3, 0x12, 0x88, 0x8b, 0x52, 0xb9, 0xa1, 
+0x9a, 0xd7, 0xad, 0x71, 0xe9, 0xad, 0x1e, 0x8f, 
+0xf8, 0x6f, 0xf5, 0xff, 0xff, 0xf4, 0xe8, 0xff, 
+0x5e, 0xd7, 0x79, 0x0f, 0x77, 0x47, 0xe8, 0x4c, 
+0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x37, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x06, 
+0xc0, 0x66, 0x30, 0x06, 0xc0, 0xc3, 0x30, 0x1d, 
+0x01, 0x58, 0x30, 0x3f, 0xc2, 0xb1, 0x30, 0x99, 
+0x88, 0x36, 0x33, 0xf1, 0x7f, 0x22, 0x3f, 0x6c, 
+0x82, 0x83, 0x29, 0x72, 0xb9, 0x31, 0x70, 0x18, 
+0x43, 0x0f, 0xc0, 0xda, 0x31, 0x19, 0x09, 0xf3, 
+0x12, 0xe1, 0x04, 0x3c, 0x44, 0x40, 0x85, 0x74, 
+0xb8, 0x75, 0xe2, 0x91, 0x7a, 0xf8, 0x3d, 0x5b, 
+0x3f, 0xff, 0x51, 0x81, 0xf4, 0x07, 0x19, 0x82, 
+0x86, 0x07, 0xe1, 0x83, 0xb4, 0x0b, 0x19, 0x86, 
+0x5a, 0x14, 0x81, 0x8e, 0x4c, 0x3f, 0x49, 0xdd, 
+0x77, 0xee, 0x99, 0xdb, 0x18, 0x3c, 0xd9, 0x8d, 
+0xba, 0x0e, 0x31, 0x84, 0xf0, 0x04, 0xb1, 0x80, 
+0xd4, 0x0b, 0xa1, 0x81, 0x50, 0x0e, 0x19, 0x82, 
+0x2a, 0x19, 0x81, 0xb0, 0xe1, 0x46, 0x28, 0x11, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc8, 0xb8, 
+0x27, 0x18, 0x0f, 0xfb, 0x64, 0x81, 0x41, 0x05, 
+0x62, 0x01, 0xff, 0xf0, 0x90, 0x96, 0x79, 0x72, 
+0xc3, 0x55, 0x6f, 0xd9, 0x34, 0x9d, 0x87, 0xfc, 
+0x77, 0x7a, 0x9f, 0x96, 0xff, 0xff, 0xfb, 0xbf, 
+0xdf, 0xff, 0xab, 0xf7, 0xff, 0xbf, 0xfd, 0x69, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xf5, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x30, 0x04, 0x80, 0x63, 0x30, 0x08, 0x80, 0xbc, 
+0x30, 0x20, 0x41, 0x53, 0x30, 0x44, 0x02, 0xa6, 
+0x30, 0xa3, 0x48, 0x1b, 0x34, 0x2e, 0xbe, 0x3f, 
+0x34, 0x16, 0xc8, 0x0d, 0x30, 0xae, 0x82, 0xb2, 
+0x30, 0x5e, 0xc1, 0x87, 0x30, 0x3f, 0xc0, 0xe1, 
+0x30, 0x45, 0x00, 0xa8, 0x30, 0x4a, 0xc1, 0x15, 
+0x3c, 0x14, 0xb0, 0x72, 0x82, 0x5d, 0xba, 0x91, 
+0x78, 0xa5, 0x26, 0x6c, 0x5e, 0xdf, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xd6, 0x60, 0x6d, 0x81, 0x90, 0x60, 0x8b, 0x01, 
+0xc6, 0x60, 0xcc, 0x82, 0x88, 0x61, 0x5d, 0x04, 
+0xc2, 0x63, 0x16, 0x8e, 0xb0, 0x74, 0x34, 0x72, 
+0xd0, 0x73, 0xb2, 0x8e, 0x28, 0x62, 0xf4, 0x03, 
+0x6a, 0x61, 0x0b, 0x80, 0xca, 0x60, 0x23, 0x82, 
+0x72, 0x60, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc7, 0x94, 0x29, 0x18, 0x0f, 0xfb, 0x64, 0x81, 
+0x3f, 0x05, 0x22, 0x01, 0xff, 0xf0, 0x90, 0x51, 
+0x83, 0x00, 0x60, 0x7f, 0x05, 0x7a, 0x76, 0x5c, 
+0x66, 0x4a, 0x30, 0x5d, 0xd6, 0x1d, 0x0c, 0xe5, 
+0xcb, 0x4e, 0xed, 0x77, 0x8d, 0xf5, 0xf5, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0x77, 0xfb, 0xbd, 0x1d, 
+0xdf, 0xff, 0xff, 0xad, 0x31, 0x05, 0x35, 0x14, 
+0xcc, 0xb8, 0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x30, 0x02, 0xc0, 0x5c, 0x30, 0x0b, 
+0x40, 0xb9, 0x30, 0x22, 0x81, 0x4c, 0x30, 0x48, 
+0x42, 0x9b, 0x30, 0xac, 0x07, 0xfa, 0x34, 0x69, 
+0xfd, 0x48, 0x34, 0x50, 0x07, 0xee, 0x30, 0xb7, 
+0x42, 0xad, 0x30, 0x61, 0x81, 0x86, 0x30, 0x3f, 
+0x80, 0xe8, 0x30, 0x44, 0xc0, 0xb3, 0x30, 0x49, 
+0x01, 0x24, 0x3b, 0xc5, 0x00, 0x52, 0x9a, 0x5c, 
+0x3a, 0xf0, 0xe4, 0x5e, 0xb8, 0x46, 0xca, 0xbf, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x49, 0x81, 
+0xb4, 0x06, 0x79, 0x82, 0x2a, 0x07, 0x61, 0x83, 
+0x24, 0x0a, 0xb9, 0x85, 0x5e, 0x14, 0x21, 0x8c, 
+0x20, 0x3d, 0xf9, 0xcf, 0x83, 0xe3, 0x69, 0xcd, 
+0x80, 0x3b, 0xd9, 0x8b, 0x96, 0x0e, 0xd1, 0x84, 
+0x08, 0x02, 0x21, 0x80, 0x64, 0x09, 0x71, 0x81, 
+0x64, 0x0b, 0xc9, 0x82, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc9, 0x1c, 0x29, 0x18, 0x0f, 0xff, 
+0x64, 0x81, 0x37, 0x85, 0x22, 0x41, 0xff, 0xec, 
+0x90, 0x1e, 0x15, 0x81, 0xde, 0xef, 0x19, 0x30, 
+0xc9, 0x72, 0x98, 0x6c, 0x6b, 0x79, 0x59, 0xef, 
+0x52, 0x7d, 0x3f, 0x67, 0xdd, 0xff, 0xff, 0xff, 
+0xff, 0x47, 0xff, 0xff, 0xa5, 0x31, 0x05, 0x35, 
+0x14, 0xcc, 0xb8, 0xe4, 0xdd, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x30, 0x00, 0x80, 0x59, 
+0x30, 0x0d, 0x00, 0xb4, 0x30, 0x25, 0x41, 0x47, 
+0x30, 0x4c, 0x02, 0x90, 0x30, 0xb4, 0xc7, 0xd9, 
+0x34, 0xa2, 0xbc, 0x3f, 0x34, 0x87, 0xc7, 0xcf, 
+0x30, 0xbf, 0x02, 0xa4, 0x30, 0x64, 0x41, 0x89, 
+0x30, 0x40, 0x40, 0xef, 0x30, 0x43, 0x80, 0xba, 
+0x30, 0x48, 0x41, 0x35, 0x3b, 0xb5, 0x70, 0x52, 
+0x62, 0x6b, 0xb8, 0x90, 0xfc, 0x52, 0x93, 0x37, 
+0x2f, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xeb, 0x30, 0x37, 0x40, 
+0xd2, 0x30, 0x44, 0x00, 0xf7, 0x30, 0x62, 0xc1, 
+0x68, 0x30, 0xa8, 0x82, 0xa5, 0x31, 0x7d, 0x48, 
+0x20, 0x39, 0xc3, 0x3f, 0x54, 0x39, 0x83, 0xc7, 
+0xde, 0x31, 0x6b, 0x02, 0x01, 0x30, 0x7c, 0x40, 
+0x21, 0x30, 0x06, 0xc1, 0x21, 0x30, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc8, 0x94, 0x27, 0x18, 
+0x0f, 0xff, 0x64, 0x81, 0x24, 0x85, 0x62, 0x41, 
+0xff, 0xec, 0x90, 0x31, 0x41, 0x6e, 0x30, 0x47, 
+0x82, 0xa5, 0x3c, 0x6d, 0x93, 0x2b, 0x16, 0x2e, 
+0x4b, 0x0e, 0x8c, 0xeb, 0x1b, 0x47, 0x7b, 0x9d, 
+0xe3, 0x7f, 0xf4, 0xfd, 0x9d, 0x1f, 0xff, 0xff, 
+0xf5, 0xfe, 0xbe, 0xef, 0xf7, 0x7f, 0xff, 0xfe, 
+0xb4, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 
+0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x04, 0x80, 
+0xa4, 0x60, 0x1e, 0x81, 0x5e, 0x60, 0x4f, 0x02, 
+0x80, 0x60, 0xa0, 0x85, 0x06, 0x61, 0x7a, 0x0f, 
+0x64, 0x69, 0xb2, 0xf6, 0x44, 0x69, 0x79, 0x0f, 
+0x54, 0x61, 0x8d, 0x85, 0x3a, 0x60, 0xcc, 0x03, 
+0x10, 0x60, 0x80, 0x01, 0xe4, 0x60, 0x86, 0x81, 
+0x86, 0x60, 0x8d, 0x02, 0x88, 0x76, 0xcb, 0x80, 
+0x64, 0xb4, 0xd4, 0x71, 0xe1, 0xc8, 0xbd, 0x38, 
+0x66, 0xca, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0x4f, 0xff, 0xff, 0xff, 0xff, 0x49, 0x97, 
+0xc5, 0xc9, 0x9d, 0x66, 0xe1, 0xaa, 0x4a, 0x39, 
+0xc8, 0x33, 0x51, 0x8a, 0x38, 0x3b, 0x99, 0xc3, 
+0x3f, 0xd0, 0x69, 0xc1, 0x84, 0x39, 0xc9, 0x89, 
+0xb6, 0x0e, 0xf0, 0x90, 0x67, 0x80, 0x00, 0x3b, 
+0x8c, 0xb6, 0x4d, 0xcd, 0x07, 0x90, 0x8c, 0xb5, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc9, 0x20, 
+0x29, 0x18, 0x0f, 0xff, 0x64, 0x81, 0x3a, 0x05, 
+0x22, 0x41, 0xff, 0xec, 0x90, 0x2d, 0x8c, 0x24, 
+0x04, 0x50, 0x79, 0x9c, 0xc6, 0x84, 0xc1, 0xbf, 
+0x4f, 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0x4a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 
+0x71, 0xc9, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0x11, 0x00, 0x9a, 0x60, 0x22, 0x01, 0x50, 0x60, 
+0x53, 0x82, 0x72, 0x60, 0xa7, 0x04, 0xec, 0x61, 
+0x8a, 0x8f, 0x1a, 0x6a, 0x1b, 0x73, 0xe6, 0x69, 
+0xe0, 0x8f, 0x0a, 0x61, 0x9c, 0x05, 0x24, 0x60, 
+0xd1, 0x83, 0x12, 0x60, 0x80, 0x81, 0xf2, 0x60, 
+0x84, 0x01, 0x94, 0x60, 0x8a, 0x82, 0xaa, 0x76, 
+0x2c, 0x20, 0x64, 0x84, 0xd7, 0x71, 0x21, 0xf8, 
+0xa5, 0x26, 0x75, 0xed, 0xfb, 0xff, 0xd7, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 
+0x66, 0x5f, 0x97, 0x86, 0x73, 0x1c, 0xa6, 0xa5, 
+0xaa, 0x87, 0x1a, 0x50, 0xe6, 0x28, 0x08, 0xf8, 
+0x47, 0x07, 0x57, 0x8c, 0xc7, 0x00, 0x98, 0xf1, 
+0x06, 0x25, 0xd0, 0x3f, 0xe6, 0x0c, 0x68, 0x01, 
+0x43, 0x00, 0x72, 0x99, 0x86, 0x97, 0x1a, 0x25, 
+0x1b, 0x99, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc9, 0x14, 0x27, 0x18, 0x0f, 0xff, 0x64, 0x80, 
+0xfc, 0x04, 0x62, 0x81, 0xdf, 0xf4, 0x50, 0x78, 
+0x59, 0x98, 0x4e, 0x07, 0x20, 0x05, 0x9d, 0x46, 
+0x7c, 0x16, 0x77, 0xbb, 0xff, 0xff, 0xec, 0xff, 
+0xff, 0xfd, 0xdf, 0xff, 0xff, 0xfb, 0xbe, 0x9f, 
+0xff, 0xf5, 0xa6, 0x20, 0xa6, 0xa2, 0x99, 0x97, 
+0x1c, 0x9b, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x24, 0x01, 0x18, 0xc0, 0x4b, 0x02, 
+0x8c, 0xc0, 0xb0, 0x04, 0xc0, 0xc1, 0x5d, 0x09, 
+0xa4, 0xc3, 0x34, 0x1d, 0x88, 0xd5, 0x01, 0xe2, 
+0xc8, 0xd4, 0x84, 0x1d, 0x70, 0xc3, 0x57, 0x0a, 
+0x24, 0xc1, 0xaa, 0x06, 0x20, 0xc1, 0x00, 0x03, 
+0xf8, 0xc1, 0x05, 0x03, 0x4c, 0xc1, 0x0e, 0x05, 
+0x88, 0xeb, 0x19, 0x80, 0x48, 0xe9, 0xa8, 0xe3, 
+0xc3, 0x92, 0xfa, 0x73, 0x96, 0x55, 0xf4, 0x7f, 
+0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xa4, 0xcb, 0xe2, 0xfc, 0xce, 0x53, 
+0xa8, 0xd4, 0x45, 0x84, 0xe2, 0x7a, 0x80, 0xc4, 
+0xe2, 0x20, 0x3c, 0xe0, 0x2b, 0xfa, 0x9c, 0xdf, 
+0x58, 0x1f, 0x54, 0xc4, 0x9b, 0x08, 0x68, 0xc1, 
+0x78, 0x00, 0xb4, 0xc0, 0x09, 0x03, 0x60, 0xcd, 
+0x04, 0x9c, 0xd1, 0xf8, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc9, 0x0c, 0x29, 0x18, 0x0f, 0xff, 
+0x64, 0x81, 0x13, 0x04, 0xa2, 0x81, 0xdf, 0xf4, 
+0x50, 0xa0, 0xcc, 0x52, 0xb8, 0xc2, 0xa0, 0x3d, 
+0x00, 0x4d, 0x76, 0x34, 0xa0, 0xdf, 0xa7, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xd5, 0xff, 0xd9, 0xf4, 
+0xff, 0xa5, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 
+0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x0b, 0x80, 0x9e, 0x60, 
+0x31, 0x01, 0x6c, 0x60, 0x6b, 0x82, 0xaa, 0x60, 
+0xd0, 0x05, 0x60, 0x61, 0xe6, 0x90, 0x76, 0x6c, 
+0x65, 0x7e, 0x22, 0x6c, 0x1b, 0x90, 0x6e, 0x61, 
+0xf7, 0x05, 0xb4, 0x60, 0xf9, 0x83, 0x86, 0x60, 
+0x94, 0x82, 0x56, 0x60, 0x93, 0x01, 0xf8, 0x60, 
+0x98, 0x83, 0x4e, 0x78, 0x6f, 0xe6, 0x54, 0x04, 
+0x8e, 0x6d, 0x71, 0xff, 0x87, 0x29, 0x33, 0x38, 
+0xbd, 0xbf, 0x7f, 0xfa, 0xe8, 0xff, 0xff, 0xff, 
+0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xac, 0xca, 
+0x32, 0x98, 0xcc, 0x23, 0x44, 0xd1, 0x34, 0xf8, 
+0xdd, 0x49, 0x84, 0xc4, 0x2b, 0x1d, 0x40, 0xdb, 
+0x8a, 0xe3, 0x98, 0xda, 0xd5, 0x1c, 0x78, 0xc3, 
+0xea, 0x07, 0xbc, 0xc1, 0x37, 0x00, 0xf0, 0xc0, 
+0x16, 0x02, 0xbc, 0xd7, 0xef, 0x63, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc9, 0x18, 0x27, 0x18, 
+0x0f, 0xff, 0x64, 0x81, 0x08, 0x04, 0x62, 0x81, 
+0xdf, 0xf4, 0x50, 0x81, 0x75, 0x4d, 0x60, 0x91, 
+0x31, 0x18, 0x21, 0x1f, 0x5a, 0xf4, 0xb4, 0xa8, 
+0x33, 0xe8, 0xff, 0xfd, 0xbf, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xe8, 0x4c, 0x41, 0x4d, 0x45, 
+0x33, 0x2e, 0x39, 0x37, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 0x00, 
+0x00, 0x48, 0x30, 0x1a, 0x40, 0xb1, 0x30, 0x38, 
+0x01, 0x4c, 0x30, 0x6b, 0xc2, 0x9f, 0x30, 0xfb, 
+0x08, 0x06, 0x36, 0x67, 0x7d, 0x78, 0x36, 0x41, 
+0x08, 0x02, 0x31, 0x03, 0x42, 0xcd, 0x30, 0x7f, 
+0x01, 0xc0, 0x30, 0x49, 0x81, 0x30, 0x30, 0x48, 
+0x41, 0x05, 0x30, 0x4a, 0x01, 0xb4, 0x3b, 0xe8, 
+0x23, 0x29, 0x05, 0x43, 0x46, 0xbe, 0xfe, 0x43, 
+0xf4, 0xe1, 0x9b, 0x2a, 0xfa, 0x3f, 0xec, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0xff, 
+0xec, 0xd2, 0x65, 0x11, 0x52, 0x65, 0xf9, 0xac, 
+0x68, 0x62, 0x92, 0x6e, 0x3c, 0xe8, 0x62, 0x06, 
+0x0f, 0x1e, 0x6d, 0x68, 0xf5, 0x6e, 0x6d, 0x0f, 
+0x0e, 0xba, 0x61, 0xe5, 0x84, 0x0c, 0x60, 0x92, 
+0x00, 0xaa, 0x60, 0x13, 0x81, 0x48, 0x6c, 0x87, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc9, 0x58, 
+0x29, 0x16, 0x0f, 0xff, 0x64, 0x81, 0x01, 0x04, 
+0x62, 0xc1, 0xdf, 0xf0, 0x50, 0x79, 0xc3, 0x79, 
+0x06, 0xb7, 0x46, 0x18, 0x90, 0x0e, 0x8f, 0xce, 
+0x2c, 0xba, 0x1b, 0xeb, 0x4f, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xa6, 0x20, 
+0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9b, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0x30, 0x02, 0xc0, 0x41, 0x30, 0x1c, 0x00, 0xa8, 
+0x30, 0x3a, 0x41, 0x41, 0x30, 0x6f, 0x82, 0x8c, 
+0x31, 0x02, 0xc7, 0xcf, 0x36, 0x99, 0xbb, 0xcb, 
+0x36, 0x72, 0x47, 0xcd, 0x31, 0x0a, 0x02, 0xbe, 
+0x30, 0x81, 0x41, 0xbf, 0x30, 0x49, 0xc1, 0x35, 
+0x30, 0x46, 0x81, 0x0a, 0x30, 0x48, 0x41, 0xc3, 
+0x3b, 0x98, 0x93, 0x26, 0x06, 0x47, 0xf6, 0xb8, 
+0xff, 0xc3, 0x94, 0x96, 0xf9, 0x6d, 0x7f, 0x4f, 
+0xff, 0xff, 0xff, 0xff, 0xf4, 0x7f, 0xa3, 0xff, 
+0xfe, 0x8f, 0xff, 0xdb, 0xa0, 0xca, 0x32, 0xa8, 
+0xcb, 0xa3, 0x74, 0xd0, 0x55, 0x48, 0xdb, 0x8a, 
+0x24, 0xc3, 0xef, 0x1f, 0x20, 0xda, 0x0c, 0xf1, 
+0xc8, 0xd9, 0x61, 0x1e, 0x60, 0xc3, 0xaa, 0x08, 
+0x7c, 0xc1, 0x11, 0x01, 0xa8, 0xc0, 0x34, 0x02, 
+0x64, 0xda, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc9, 0x7c, 0x27, 0x16, 0x0f, 0xff, 0x64, 0x80, 
+0xfd, 0x04, 0x62, 0xc1, 0xdf, 0xf0, 0x50, 0x6e, 
+0x43, 0x8a, 0x6e, 0xcd, 0x78, 0x89, 0x31, 0x38, 
+0x19, 0x0d, 0x5c, 0x69, 0x6a, 0xc3, 0x9d, 0x48, 
+0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xd1, 0xfe, 0x84, 0xc4, 0x14, 0xd4, 0x53, 0x32, 
+0xe3, 0x93, 0x7a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x30, 0x04, 0x80, 0x38, 0x30, 0x1e, 
+0x40, 0xa1, 0x30, 0x3c, 0x01, 0x36, 0x30, 0x72, 
+0xc2, 0x79, 0x31, 0x0a, 0x07, 0x92, 0x36, 0xc9, 
+0x7a, 0x06, 0x36, 0xa0, 0x87, 0x94, 0x31, 0x11, 
+0x42, 0xaf, 0x30, 0x82, 0x81, 0xbc, 0x30, 0x49, 
+0x01, 0x38, 0x30, 0x45, 0x41, 0x13, 0x30, 0x46, 
+0x01, 0xd0, 0x3b, 0x08, 0xc3, 0x25, 0x07, 0x47, 
+0xc6, 0xbe, 0xfe, 0x43, 0xf4, 0xf8, 0x3d, 0x5b, 
+0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 
+0xff, 0xfd, 0xff, 0xff, 0x51, 0x94, 0x05, 0x69, 
+0x96, 0xe7, 0x01, 0x9f, 0x8a, 0xe9, 0xb5, 0x74, 
+0xd1, 0x87, 0x98, 0x40, 0x09, 0xb2, 0x83, 0xf0, 
+0xb9, 0xb1, 0x30, 0x3e, 0x89, 0x87, 0x12, 0x11, 
+0xa1, 0x81, 0xf8, 0x03, 0xf9, 0x80, 0x8a, 0x04, 
+0x51, 0xb6, 0x9b, 0xa7, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc9, 0x98, 0x2b, 0x16, 0x0f, 0xff, 
+0x64, 0x81, 0x03, 0x04, 0x62, 0xc1, 0xdf, 0xf0, 
+0x50, 0x1f, 0xd5, 0x1b, 0x0d, 0x04, 0x62, 0x80, 
+0x2a, 0x1b, 0x38, 0xb1, 0x65, 0x06, 0xfa, 0xd3, 
+0xe8, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xfd, 0x29, 0x88, 0x29, 0xa8, 0xa6, 0x65, 
+0xc7, 0x26, 0xf5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x30, 0x06, 0xc0, 0x31, 
+0x30, 0x1f, 0x80, 0x98, 0x30, 0x3e, 0x41, 0x2b, 
+0x30, 0x76, 0x02, 0x64, 0x31, 0x11, 0x47, 0x57, 
+0x36, 0xf6, 0xb8, 0x2f, 0x36, 0xcc, 0xc7, 0x59, 
+0x31, 0x17, 0x02, 0x9e, 0x30, 0x84, 0x41, 0xb9, 
+0x30, 0x48, 0xc1, 0x3d, 0x30, 0x43, 0x81, 0x18, 
+0x30, 0x43, 0xc1, 0xdd, 0x3a, 0xb9, 0x33, 0x22, 
+0x08, 0x47, 0xf6, 0xb8, 0xff, 0xc6, 0x29, 0x01, 
+0xcf, 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xf4, 0x19, 0x42, 0x57, 0x19, 0x64, 
+0x72, 0x99, 0xea, 0xb2, 0x1b, 0x39, 0x56, 0x98, 
+0x75, 0xa4, 0x1b, 0x1b, 0x0d, 0x1f, 0xd4, 0x1a, 
+0xf8, 0xe4, 0x03, 0x18, 0x6c, 0x81, 0x25, 0x98, 
+0x1d, 0x20, 0x48, 0x18, 0x0a, 0x00, 0x3f, 0x9b, 
+0x95, 0xa4, 0x72, 0x6c, 0xe9, 0xb1, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc9, 0x54, 0x29, 0x16, 
+0x0f, 0xff, 0x64, 0x81, 0x03, 0x04, 0x62, 0xc1, 
+0xdf, 0xf0, 0x50, 0x8f, 0xe6, 0x2b, 0x02, 0x23, 
+0x8b, 0x8d, 0x15, 0x58, 0x33, 0xd4, 0x8f, 0x4f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x1f, 
+0xe8, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 
+0x37, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 0x0b, 
+0x00, 0x32, 0x30, 0x27, 0x40, 0xa9, 0x30, 0x4a, 
+0x01, 0x4a, 0x30, 0x8a, 0xc2, 0xa5, 0x31, 0x3f, 
+0x88, 0x14, 0x38, 0x20, 0xfd, 0xcc, 0x37, 0xef, 
+0x08, 0x1c, 0x31, 0x45, 0xc2, 0xed, 0x30, 0x99, 
+0x81, 0xf6, 0x30, 0x53, 0x01, 0x70, 0x30, 0x4b, 
+0xc1, 0x4b, 0x30, 0x4b, 0x02, 0x32, 0x3b, 0xea, 
+0xe3, 0x29, 0x0f, 0x40, 0x03, 0x3b, 0x76, 0x1f, 
+0xfa, 0x7b, 0x07, 0xd5, 0xff, 0xff, 0x57, 0xff, 
+0xff, 0xfe, 0xaf, 0xff, 0x7f, 0xff, 0xfd, 0xff, 
+0xef, 0xf5, 0x19, 0x10, 0x4b, 0x99, 0x2e, 0x65, 
+0x19, 0x98, 0x9e, 0x9a, 0xb3, 0x32, 0x18, 0x62, 
+0xc3, 0xaf, 0x9a, 0x94, 0xfc, 0x97, 0x9a, 0x83, 
+0x83, 0x9a, 0x98, 0x5a, 0xe1, 0x08, 0x18, 0x16, 
+0xc0, 0x46, 0x98, 0x09, 0xe0, 0x30, 0x1b, 0x31, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc8, 0xe4, 
+0x27, 0x16, 0x0f, 0xff, 0x64, 0x81, 0x03, 0x84, 
+0x62, 0xc1, 0xdf, 0xf0, 0x50, 0x5a, 0x70, 0x7a, 
+0xc1, 0xac, 0x4c, 0xc0, 0x22, 0x2a, 0x6b, 0x3a, 
+0xb3, 0xca, 0x0d, 0xf5, 0xa7, 0xd1, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x31, 
+0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xdd, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x30, 0x0d, 0x40, 0x29, 0x30, 0x28, 0x80, 0x9e, 
+0x30, 0x4c, 0xc1, 0x3d, 0x30, 0x8e, 0x02, 0x8c, 
+0x31, 0x46, 0xc7, 0xc9, 0x38, 0x4f, 0x3b, 0x83, 
+0x38, 0x1c, 0xc7, 0xd3, 0x31, 0x4c, 0x02, 0xd8, 
+0x30, 0x9a, 0xc1, 0xf1, 0x30, 0x52, 0x41, 0x75, 
+0x30, 0x49, 0x81, 0x52, 0x30, 0x48, 0xc2, 0x3f, 
+0x3b, 0x7b, 0x33, 0x24, 0x0e, 0x41, 0xf6, 0x70, 
+0xff, 0xbf, 0x94, 0x96, 0xf9, 0x6d, 0x1f, 0xff, 
+0xdb, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xe8, 0xff, 0xfd, 0xba, 0x0c, 0x87, 0x26, 0x0c, 
+0x92, 0x33, 0x4c, 0xc5, 0x51, 0x0d, 0x4a, 0x9c, 
+0xcc, 0x2f, 0x71, 0xe2, 0x0d, 0x3d, 0xae, 0x9a, 
+0x8d, 0x35, 0x51, 0xd7, 0x8c, 0x2b, 0x40, 0x88, 
+0x4c, 0x0a, 0x30, 0x26, 0x8c, 0x05, 0xa0, 0x14, 
+0xcd, 0xaa, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc9, 0x84, 0x29, 0x14, 0x0f, 0xff, 0x64, 0x80, 
+0xfe, 0x84, 0x63, 0x01, 0xdf, 0xf0, 0x50, 0xa2, 
+0x38, 0x65, 0x2c, 0xd6, 0x86, 0x10, 0x11, 0x29, 
+0x35, 0x5d, 0x69, 0xd0, 0xbb, 0x3a, 0xbf, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 
+0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x6e, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x30, 0x0f, 0x00, 0x1e, 0x30, 0x2a, 
+0xc0, 0x93, 0x30, 0x4e, 0x81, 0x2e, 0x30, 0x91, 
+0x42, 0x71, 0x31, 0x4d, 0x87, 0x78, 0x38, 0x7a, 
+0xf9, 0x1e, 0x38, 0x47, 0x07, 0x84, 0x31, 0x52, 
+0x42, 0xc3, 0x30, 0x9c, 0x01, 0xec, 0x30, 0x51, 
+0x81, 0x76, 0x30, 0x47, 0xc1, 0x59, 0x30, 0x45, 
+0x82, 0x4a, 0x3a, 0xeb, 0x83, 0x23, 0x11, 0x41, 
+0xc6, 0x76, 0xec, 0x43, 0x74, 0xf6, 0x1e, 0xaf, 
+0xf7, 0xff, 0xaa, 0x8f, 0xff, 0xff, 0xff, 0xff, 
+0xbf, 0xff, 0xfe, 0xff, 0xf7, 0xfa, 0x8c, 0x84, 
+0x26, 0x4c, 0x8d, 0x34, 0x0c, 0xbc, 0x52, 0xcd, 
+0x3b, 0xa0, 0x0c, 0x2d, 0x41, 0xec, 0x4d, 0x30, 
+0x5e, 0xe4, 0x4d, 0x28, 0x21, 0xe1, 0xcc, 0x29, 
+0x10, 0x8c, 0x8c, 0x08, 0xe0, 0x2a, 0xcc, 0x06, 
+0x50, 0x11, 0x8d, 0xb4, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc9, 0x88, 0x2b, 0x14, 0x0f, 0xff, 
+0x64, 0x80, 0xfa, 0x84, 0x63, 0x01, 0xdf, 0xf0, 
+0x50, 0x99, 0x38, 0x9c, 0xe8, 0xd7, 0x25, 0xc0, 
+0x31, 0x35, 0x35, 0x9d, 0x59, 0xe0, 0x83, 0x7a, 
+0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xfd, 0x3f, 0xff, 0xf4, 0x26, 0x20, 0xa6, 
+0xa2, 0x99, 0x97, 0x1c, 0x9b, 0xd5, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x30, 0x14, 0xc0, 0x19, 
+0x30, 0x33, 0x00, 0xa0, 0x30, 0x5c, 0xc1, 0x4b, 
+0x30, 0xa9, 0x82, 0xac, 0x31, 0x84, 0x48, 0x29, 
+0x39, 0xd7, 0xbe, 0x3b, 0x39, 0x9b, 0xc8, 0x39, 
+0x31, 0x88, 0x03, 0x0e, 0x30, 0xb4, 0x42, 0x2d, 
+0x30, 0x5c, 0xc1, 0xb3, 0x30, 0x4f, 0x81, 0x92, 
+0x30, 0x4c, 0xc2, 0xad, 0x3c, 0x1d, 0xb3, 0x28, 
+0x16, 0x2e, 0x5b, 0x0c, 0x72, 0xdf, 0xca, 0x4b, 
+0x67, 0x17, 0xbb, 0xee, 0xff, 0x5d, 0x3f, 0x6f, 
+0xff, 0xff, 0xee, 0xfb, 0xf7, 0x7f, 0x5f, 0xa3, 
+0xdd, 0xfe, 0xef, 0x2a, 0x64, 0x19, 0x34, 0x64, 
+0x41, 0xaa, 0x65, 0x9a, 0xa0, 0x69, 0x55, 0x1a, 
+0x61, 0x59, 0x8f, 0xa8, 0x69, 0x13, 0x79, 0x4c, 
+0x68, 0xd4, 0x8f, 0x58, 0x61, 0x36, 0x04, 0x82, 
+0x60, 0x3c, 0x81, 0x70, 0x60, 0x37, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc9, 0x88, 0x29, 0x14, 
+0x0f, 0xff, 0x64, 0x81, 0x07, 0x84, 0x63, 0x01, 
+0xdf, 0xf0, 0x50, 0x00, 0x72, 0x6e, 0x34, 0x71, 
+0xc6, 0x25, 0x66, 0xbc, 0x2b, 0x82, 0x89, 0xc9, 
+0x22, 0xeb, 0x48, 0x42, 0xec, 0xb2, 0xa4, 0x7f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0x42, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 
+0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x02, 
+0xc0, 0x49, 0x00, 0x00, 0x06, 0xf0, 0xbb, 0x66, 
+0x71, 0x07, 0x9d, 0xa6, 0x12, 0x41, 0x80, 0x68, 
+0x96, 0xcd, 0x06, 0x86, 0x01, 0x84, 0x61, 0x2a, 
+0x07, 0x26, 0x06, 0x80, 0x44, 0x60, 0x1c, 0x02, 
+0xc6, 0x4a, 0x66, 0x36, 0x45, 0x9c, 0x87, 0xf0, 
+0xa7, 0xa9, 0x98, 0x38, 0xff, 0xf5, 0x9b, 0xda, 
+0xf1, 0xbd, 0x54, 0x20, 0xc8, 0x02, 0x6c, 0xc8, 
+0x53, 0x58, 0xca, 0xa5, 0x5c, 0xd1, 0xba, 0x60, 
+0xc2, 0x8c, 0x1f, 0xe4, 0xd1, 0x3f, 0xf6, 0xa4, 
+0xd0, 0xc6, 0x1f, 0x44, 0xc2, 0x47, 0x09, 0x40, 
+0xc0, 0x62, 0x03, 0x1c, 0xc0, 0x77, 0x00, 0xa8, 
+0xdd, 0x08, 0x53, 0x8f, 0xc6, 0x8d, 0x82, 0x50, 
+0x05, 0x14, 0x52, 0xe9, 0xd5, 0x91, 0x04, 0x1b, 
+0xd6, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc9, 0xfc, 
+0x29, 0x12, 0x0f, 0xff, 0x64, 0x80, 0xff, 0x04, 
+0x63, 0x01, 0xdf, 0xf0, 0x50, 0xff, 0xd3, 0xfe, 
+0x9f, 0xff, 0xfa, 0x13, 0x10, 0x53, 0x51, 0x4c, 
+0xcb, 0x8e, 0x4d, 0xea, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0x03, 0x01, 0x96, 0x60, 0x6d, 0x01, 0x0c, 0x60, 
+0xc1, 0x82, 0x4e, 0x61, 0x5f, 0x04, 0xd0, 0x63, 
+0x22, 0x8e, 0xc2, 0x74, 0x58, 0x70, 0x72, 0x73, 
+0xdb, 0x8e, 0xee, 0x63, 0x27, 0x05, 0xb0, 0x61, 
+0x6c, 0x84, 0x3e, 0x60, 0xb4, 0x83, 0x6e, 0x60, 
+0x94, 0x03, 0x3c, 0x60, 0x8a, 0x85, 0x8a, 0x75, 
+0x7c, 0x66, 0x40, 0x30, 0x5f, 0xf6, 0x18, 0xed, 
+0xc3, 0x14, 0x96, 0xdc, 0xbd, 0x9f, 0x77, 0x77, 
+0x4f, 0xff, 0xa3, 0xff, 0xfe, 0xbf, 0xfb, 0xbf, 
+0xfd, 0x3e, 0xef, 0xaf, 0x77, 0xa0, 0xc7, 0xf2, 
+0x68, 0xc7, 0xe3, 0x64, 0xca, 0x15, 0x70, 0xd0, 
+0xaa, 0x8c, 0xc2, 0x67, 0x20, 0x60, 0xd0, 0x4e, 
+0xfa, 0x60, 0xcf, 0xdd, 0x1f, 0xc0, 0xc2, 0x1e, 
+0x09, 0x7c, 0xc0, 0x49, 0x03, 0x48, 0xc0, 0x80, 
+0x00, 0x6c, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x82, 
+0xc6, 0xb8, 0x25, 0x35, 0x4c, 0xfb, 0x22, 0xb1, 
+0x0a, 0x04, 0x63, 0x01, 0xdf, 0xf0, 0x50, 0xdd, 
+0xe7, 0xa3, 0x92, 0x42, 0x4d, 0x84, 0x4b, 0x07, 
+0x15, 0x92, 0xe5, 0xd6, 0x90, 0x83, 0xec, 0xb2, 
+0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xf4, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 
+0x1c, 0x9b, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x26, 0x03, 0xf0, 0xc1, 0x05, 0x02, 0x34, 
+0xc1, 0xc2, 0x04, 0xf0, 0xc3, 0x31, 0x0a, 0x6c, 
+0xc7, 0x40, 0x1f, 0xc8, 0xef, 0x05, 0xf1, 0xa0, 
+0xed, 0xe4, 0x20, 0x30, 0xc7, 0x49, 0x0c, 0x84, 
+0xc3, 0x44, 0x09, 0x88, 0xc1, 0x98, 0x07, 0xe0, 
+0xc1, 0x47, 0x07, 0x8c, 0xc1, 0x2c, 0x0c, 0xe0, 
+0xd7, 0x10, 0xa3, 0x13, 0x88, 0x4b, 0x50, 0xb9, 
+0xda, 0xc3, 0xef, 0x2f, 0xb0, 0xf1, 0x9b, 0x5b, 
+0xe6, 0xfd, 0x7d, 0x5f, 0xff, 0xff, 0xff, 0xbf, 
+0xfb, 0x9f, 0x5f, 0xd1, 0xfa, 0x73, 0xfd, 0x37, 
+0x63, 0xfa, 0x14, 0x63, 0xe1, 0x36, 0x63, 0xd9, 
+0xb4, 0x64, 0xc2, 0xc2, 0x67, 0xcd, 0x58, 0x61, 
+0x20, 0x10, 0x6a, 0x67, 0xaa, 0xfe, 0xea, 0x67, 
+0x74, 0x10, 0x1e, 0x60, 0xfa, 0x84, 0xd4, 0x60, 
+0x17, 0x01, 0xc2, 0x60, 0xff, 0xfb, 0x90, 0xc4, 
+0xff, 0x83, 0xc9, 0xb8, 0x29, 0x12, 0x0f, 0xff, 
+0x64, 0x80, 0xfd, 0x84, 0x63, 0x01, 0xdf, 0xf0, 
+0x50, 0x44, 0x80, 0x14, 0x6f, 0x43, 0x79, 0xca, 
+0x5e, 0xc6, 0xc7, 0x22, 0x03, 0x8a, 0xa9, 0x74, 
+0xf2, 0xc8, 0x81, 0x06, 0xdb, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0x31, 
+0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xdd, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x00, 0x01, 0xd4, 0x48, 0xc0, 
+0x00, 0x01, 0x60, 0x17, 0x8c, 0x06, 0xa0, 0x0a, 
+0x0c, 0x0c, 0x30, 0x1d, 0xcc, 0x16, 0xa0, 0x43, 
+0x8c, 0x34, 0xf0, 0xd6, 0xcd, 0x5c, 0x66, 0x7a, 
+0x4d, 0x54, 0x10, 0xda, 0x4c, 0x35, 0x00, 0x53, 
+0x8e, 0xe3, 0x03, 0x35, 0x4b, 0x64, 0xcf, 0xcc, 
+0xe3, 0x38, 0xdb, 0xcc, 0x7e, 0x6d, 0x00, 0x00, 
+0x19, 0x5b, 0xb1, 0x0d, 0xca, 0x25, 0x96, 0xec, 
+0x76, 0xbe, 0x9f, 0xfc, 0x62, 0x62, 0xda, 0x1f, 
+0x51, 0xb2, 0x66, 0x34, 0x90, 0x86, 0x31, 0x17, 
+0xe6, 0x3c, 0xa6, 0xc6, 0x63, 0x4b, 0xe6, 0x0e, 
+0x98, 0xe9, 0x06, 0x64, 0x77, 0x0c, 0xc6, 0x61, 
+0xa8, 0xe5, 0x06, 0x0c, 0x70, 0x44, 0xe6, 0x00, 
+0x58, 0x19, 0x81, 0xc0, 0x7c, 0x9b, 0x5c, 0xa4, 
+0x70, 0x46, 0x29, 0xab, 0x06, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xca, 0x3c, 0x29, 0x10, 0x0f, 
+0xff, 0x84, 0x80, 0xfb, 0x84, 0x63, 0x01, 0xdf, 
+0xf0, 0x50, 0x61, 0x84, 0x65, 0x22, 0xf3, 0x4e, 
+0xe6, 0x59, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 
+0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x81, 0xc8, 
+0x00, 0x00, 0x01, 0x80, 0x95, 0x30, 0x25, 0xc0, 
+0x33, 0x30, 0x42, 0x00, 0x94, 0x30, 0x79, 0xc1, 
+0x4d, 0x31, 0x17, 0x84, 0x14, 0x37, 0x27, 0x5f, 
+0x4e, 0x36, 0xfa, 0x84, 0x2a, 0x31, 0x17, 0xc1, 
+0xa7, 0x30, 0x79, 0x81, 0x52, 0x30, 0x37, 0x81, 
+0x20, 0x03, 0x52, 0xc6, 0x40, 0xd2, 0x1e, 0xa0, 
+0x32, 0x82, 0x58, 0x0c, 0x0a, 0x09, 0x0f, 0x40, 
+0x72, 0xc8, 0x01, 0x36, 0x5f, 0x34, 0x7f, 0xeb, 
+0xff, 0xd1, 0xcd, 0xeb, 0xce, 0xdb, 0xf8, 0x25, 
+0x73, 0xcd, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xfd, 0x26, 0x33, 0x10, 0x66, 0x2f, 0x98, 0x06, 
+0x38, 0x27, 0x66, 0x5b, 0xcc, 0xc6, 0x0d, 0x60, 
+0xeb, 0xe6, 0x5d, 0x0f, 0x20, 0xe6, 0x5a, 0x60, 
+0xe7, 0xe6, 0x0b, 0x48, 0x46, 0x05, 0x40, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0xc8, 0xec, 0x53, 
+0x1d, 0x4f, 0xf0, 0x47, 0x20, 0xc9, 0x84, 0xa3, 
+0x41, 0xdf, 0xf0, 0x55, 0x35, 0xc5, 0x81, 0x07, 
+0x36, 0xd1, 0x24, 0xe1, 0x2b, 0x43, 0x57, 0x8b, 
+0x03, 0x88, 0xaa, 0x49, 0xe5, 0x9e, 0xc0, 0x23, 
+0x5a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 
+0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0x33, 0xc0, 0x30, 0x30, 0x5d, 0x00, 0x7a, 0x30, 
+0x9b, 0x41, 0x47, 0x31, 0x14, 0x82, 0xbe, 0x32, 
+0x71, 0x48, 0x5b, 0x3f, 0xcb, 0xbf, 0x1f, 0x3f, 
+0x6a, 0x48, 0x8d, 0x32, 0x6f, 0x83, 0x8a, 0x31, 
+0x12, 0x42, 0xf5, 0x30, 0x7f, 0xc2, 0x99, 0x31, 
+0x76, 0x28, 0xc3, 0x14, 0x14, 0x5b, 0x30, 0xc3, 
+0x17, 0x13, 0x02, 0x80, 0x36, 0x04, 0x80, 0x4a, 
+0x54, 0x30, 0x37, 0x02, 0x1c, 0x9f, 0xbd, 0xdd, 
+0xef, 0xbd, 0xff, 0xb9, 0xff, 0x7d, 0x7a, 0xb2, 
+0xd3, 0xfb, 0xfa, 0x5c, 0x1e, 0xe6, 0x0d, 0xd5, 
+0xd8, 0x79, 0xbe, 0x86, 0xd3, 0xdd, 0xd2, 0x8f, 
+0xf4, 0x6d, 0x65, 0xb9, 0x45, 0x76, 0xbb, 0x47, 
+0xec, 0x6a, 0x3e, 0x1b, 0xa4, 0xc6, 0x32, 0x08, 
+0xc5, 0x83, 0x04, 0xc6, 0x74, 0xf0, 0xca, 0x49, 
+0xb4, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x82, 0xca, 
+0x8c, 0x7b, 0x18, 0xef, 0xd4, 0x49, 0x40, 0xc9, 
+0x04, 0xa3, 0x41, 0xdf, 0xf0, 0x54, 0xc1, 0x87, 
+0x1d, 0xc8, 0xca, 0xaa, 0xe6, 0x50, 0xca, 0x5b, 
+0x1d, 0x48, 0xc1, 0x3e, 0x08, 0xec, 0xc0, 0x08, 
+0x03, 0x80, 0xc0, 0x8a, 0x00, 0x08, 0xdb, 0xe3, 
+0xc3, 0x85, 0x28, 0xcd, 0x60, 0x27, 0x12, 0x25, 
+0x2a, 0x17, 0x9a, 0x8b, 0x32, 0xc9, 0x88, 0x29, 
+0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xf5, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x36, 0x00, 0x43, 0x30, 0x5f, 0x40, 
+0x63, 0x30, 0x9d, 0x01, 0x24, 0x31, 0x17, 0x42, 
+0x81, 0x32, 0x76, 0x87, 0xa2, 0x3f, 0xf0, 0xf9, 
+0x9c, 0x3f, 0x8e, 0x07, 0xda, 0x32, 0x74, 0x43, 
+0x57, 0x31, 0x12, 0x02, 0xe4, 0x30, 0x7c, 0x82, 
+0x98, 0x30, 0x58, 0x42, 0x91, 0x30, 0x49, 0x84, 
+0x66, 0x30, 0x2b, 0x01, 0x72, 0x30, 0x08, 0xc0, 
+0x39, 0x06, 0x00, 0x10, 0x03, 0xbc, 0x26, 0x82, 
+0x4e, 0x3d, 0xca, 0x07, 0xda, 0xa6, 0xe7, 0x6a, 
+0xea, 0x07, 0xbb, 0xc6, 0x75, 0x31, 0x3d, 0x16, 
+0xbb, 0xdb, 0xff, 0xfd, 0x3f, 0x99, 0xdf, 0x2d, 
+0xf6, 0x3f, 0xd2, 0xad, 0xfd, 0x33, 0xaf, 0x8e, 
+0xbb, 0x51, 0x8c, 0x04, 0x19, 0x8a, 0x66, 0x11, 
+0x8b, 0x89, 0xf9, 0x92, 0x73, 0x91, 0x82, 0xb8, 
+0x3c, 0x19, 0x93, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xcc, 0xb8, 0x7b, 0x0c, 0x0f, 0xf8, 0x49, 
+0x40, 0xce, 0x84, 0xa3, 0x41, 0xdf, 0xf0, 0x55, 
+0x53, 0xd0, 0xa9, 0x92, 0xbc, 0x3b, 0x29, 0x82, 
+0x26, 0x12, 0x11, 0x80, 0x4a, 0x07, 0x59, 0x81, 
+0x22, 0x00, 0x89, 0xb8, 0x86, 0x67, 0x0f, 0x48, 
+0x1a, 0xcc, 0x40, 0x24, 0x49, 0x54, 0x4f, 0x6c, 
+0x9f, 0x00, 0x8d, 0x7f, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xa6, 
+0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9b, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x00, 0x00, 0xd4, 0x49, 0x00, 
+0x00, 0x03, 0x01, 0x24, 0x01, 0x03, 0x02, 0x28, 
+0x00, 0xa3, 0x03, 0xbc, 0x05, 0x73, 0x06, 0xd0, 
+0x0d, 0x63, 0x0f, 0xbc, 0x2b, 0x53, 0x67, 0x39, 
+0x4c, 0xf3, 0x64, 0xbc, 0x2c, 0xd3, 0x0f, 0xa0, 
+0x13, 0x23, 0xd3, 0xc4, 0x4d, 0x66, 0xf9, 0x33, 
+0xa3, 0xe0, 0xcb, 0x3b, 0x73, 0x16, 0xa1, 0x41, 
+0x00, 0x46, 0x47, 0x00, 0x4a, 0xea, 0x46, 0x27, 
+0xef, 0x76, 0xbe, 0x9f, 0xe8, 0xea, 0x80, 0xd9, 
+0xfc, 0xd1, 0x76, 0xff, 0xa6, 0xef, 0x83, 0x46, 
+0x2f, 0x90, 0x06, 0x27, 0x18, 0x66, 0x29, 0xa8, 
+0x46, 0x40, 0x4e, 0xe6, 0x09, 0x98, 0xf2, 0x46, 
+0x44, 0xd7, 0x50, 0x46, 0x42, 0xb8, 0xee, 0x86, 
+0x07, 0x20, 0x49, 0x66, 0x01, 0xd0, 0x1e, 0x46, 
+0x04, 0xb0, 0x03, 0xc6, 0xe7, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xcc, 0x14, 0x3d, 0x0c, 0x0f, 
+0xfd, 0xa4, 0xc1, 0x02, 0x04, 0xa3, 0x41, 0xdf, 
+0xf0, 0x50, 0x12, 0x1c, 0x40, 0xfe, 0x6b, 0x40, 
+0xd8, 0xb1, 0x29, 0x50, 0xbd, 0xd2, 0x60, 0x7d, 
+0x9f, 0xf4, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 
+0x1c, 0x9b, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 0x32, 0x80, 
+0x57, 0x30, 0x55, 0xc0, 0x21, 0x30, 0x8c, 0x00, 
+0xbe, 0x30, 0xf8, 0x41, 0xbd, 0x32, 0x30, 0x85, 
+0x58, 0x3e, 0x33, 0x68, 0x36, 0x3d, 0xdb, 0x05, 
+0x94, 0x32, 0x2c, 0xc2, 0x8d, 0x30, 0xee, 0x02, 
+0x66, 0x30, 0x67, 0x02, 0x3e, 0x30, 0x42, 0xc2, 
+0x43, 0x30, 0x32, 0x83, 0xe8, 0x33, 0x75, 0x20, 
+0xc1, 0xe2, 0xf1, 0x00, 0x11, 0x60, 0xda, 0x44, 
+0x07, 0x1b, 0x9c, 0xbf, 0xc5, 0x3a, 0x4d, 0xbe, 
+0x2d, 0xde, 0xae, 0xa6, 0xa7, 0xf7, 0x7b, 0xbf, 
+0xbb, 0xd5, 0xb4, 0xf3, 0x7f, 0xbe, 0xbf, 0xdf, 
+0xfe, 0xfe, 0x87, 0x1d, 0x75, 0xfe, 0xa3, 0x16, 
+0x88, 0x13, 0x12, 0x4c, 0x23, 0x12, 0x14, 0x53, 
+0x1b, 0x67, 0xa3, 0x04, 0x18, 0x79, 0xf3, 0x1d, 
+0xff, 0xad, 0xf3, 0x1d, 0x00, 0x78, 0x33, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0x49, 0x8c, 0x55, 
+0x1b, 0x4f, 0xf0, 0x47, 0x28, 0xd7, 0x04, 0x63, 
+0x41, 0xdf, 0xf0, 0x50, 0x02, 0xd4, 0x25, 0x23, 
+0x01, 0x44, 0x0f, 0xb3, 0x02, 0x74, 0x02, 0xd3, 
+0x75, 0x06, 0x4e, 0x26, 0x68, 0x35, 0xb8, 0x50, 
+0x68, 0x92, 0xab, 0x9e, 0xd9, 0x3d, 0x80, 0x8f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0x5a, 0x62, 0x0a, 0x6a, 0x29, 
+0x99, 0x71, 0xc9, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0x34, 0xc0, 0x64, 0x30, 0x57, 0x00, 0x00, 0x30, 
+0x8d, 0x40, 0x9b, 0x30, 0xf9, 0x01, 0x7e, 0x32, 
+0x33, 0xc4, 0x9f, 0x3e, 0x47, 0xa2, 0x9d, 0x3d, 
+0xee, 0xc4, 0xe1, 0x32, 0x2e, 0x82, 0x5c, 0x30, 
+0xed, 0x42, 0x55, 0x30, 0x64, 0xc2, 0x3d, 0x30, 
+0x3d, 0x82, 0x44, 0x30, 0x2b, 0xc3, 0xed, 0x32, 
+0xdd, 0x2c, 0xc1, 0x02, 0xe1, 0x50, 0x2a, 0xc0, 
+0x34, 0xb8, 0x02, 0x59, 0x3f, 0x79, 0xed, 0x96, 
+0x19, 0xe9, 0xfb, 0x79, 0x3f, 0xd7, 0xed, 0xff, 
+0x4f, 0xff, 0xfb, 0x4a, 0xec, 0xfb, 0x7d, 0xcf, 
+0xc9, 0x7e, 0x76, 0x8f, 0x93, 0xa0, 0xc5, 0x91, 
+0xf8, 0xc4, 0x23, 0x0c, 0xc3, 0xd5, 0x10, 0xc5, 
+0x69, 0xfc, 0xc0, 0xd7, 0x1e, 0xa0, 0xc6, 0x50, 
+0xec, 0xa8, 0xc6, 0x1b, 0x1e, 0x30, 0xc0, 0x7e, 
+0x09, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xcb, 
+0x30, 0x2d, 0x0e, 0x0f, 0xff, 0x84, 0x81, 0x00, 
+0x84, 0xa3, 0x41, 0xdf, 0xf0, 0x50, 0x64, 0xc0, 
+0x64, 0x04, 0x10, 0xc0, 0xa2, 0x00, 0xe0, 0xdd, 
+0xa0, 0x83, 0x8a, 0x15, 0x4d, 0x6c, 0x0d, 0x1a, 
+0x27, 0x2a, 0xd7, 0xba, 0x4d, 0x6c, 0xb2, 0x62, 
+0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xbd, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x36, 0x80, 0x71, 0x08, 0x0b, 0x08, 
+0xc2, 0x38, 0x01, 0xd8, 0xc3, 0xeb, 0x04, 0xf4, 
+0xc8, 0xd8, 0x0f, 0x60, 0xf9, 0x5f, 0x72, 0x98, 
+0xf7, 0xf8, 0x10, 0x88, 0xc8, 0xbf, 0x08, 0xa4, 
+0xc3, 0xb0, 0x09, 0x08, 0xc1, 0x86, 0x08, 0xe0, 
+0xc0, 0xe1, 0x09, 0x1c, 0xc0, 0x92, 0x0f, 0xc8, 
+0xc8, 0xd4, 0xc3, 0x01, 0x8b, 0xc6, 0x00, 0x8b, 
+0x2d, 0xb8, 0x40, 0x72, 0xf9, 0xcb, 0xfc, 0x53, 
+0xa4, 0xfe, 0x12, 0xf5, 0x75, 0x31, 0xbf, 0x14, 
+0xfb, 0xbf, 0xff, 0xde, 0xdf, 0xef, 0xfe, 0x97, 
+0xfa, 0x91, 0xbf, 0xa7, 0x5d, 0xee, 0xea, 0x31, 
+0x50, 0x7f, 0x30, 0xf4, 0xc2, 0x30, 0xc1, 0x47, 
+0x31, 0x06, 0x82, 0x30, 0x28, 0x87, 0xb3, 0x31, 
+0x43, 0xfb, 0x65, 0x31, 0x37, 0x87, 0x97, 0x30, 
+0x10, 0xc2, 0x5e, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xca, 0xd8, 0x2b, 0x0e, 0x0f, 0xff, 0x84, 
+0x80, 0xcf, 0x84, 0xa3, 0x41, 0xdf, 0xf0, 0x55, 
+0x30, 0x1e, 0x41, 0x0d, 0x30, 0x2a, 0x40, 0x45, 
+0x07, 0x77, 0x4e, 0x2e, 0x3c, 0x35, 0xb8, 0x10, 
+0x78, 0x9a, 0xab, 0x9f, 0x29, 0x3d, 0x80, 0x8f, 
+0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0x5a, 0x62, 0x0a, 0x6a, 
+0x29, 0x99, 0x71, 0xc9, 0xba, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x30, 0x38, 0x40, 0x7e, 0x30, 
+0x59, 0x00, 0x19, 0x30, 0x8f, 0x40, 0x4d, 0x30, 
+0xfb, 0x00, 0xf4, 0x32, 0x38, 0x43, 0x05, 0x3e, 
+0x63, 0x96, 0x37, 0x3e, 0x09, 0xc3, 0x59, 0x32, 
+0x30, 0x81, 0xf0, 0x30, 0xea, 0x42, 0x2f, 0x30, 
+0x5e, 0x42, 0x35, 0x33, 0x2a, 0x46, 0x31, 0xcf, 
+0xf5, 0x30, 0xbd, 0x4d, 0x04, 0x06, 0x03, 0xa0, 
+0x2a, 0xc8, 0x6e, 0x71, 0xc9, 0x64, 0xfd, 0xee, 
+0xfe, 0xff, 0xff, 0xf2, 0xe7, 0xff, 0xdf, 0xff, 
+0x57, 0xfc, 0x1e, 0xfa, 0x75, 0xfb, 0x3f, 0xff, 
+0x76, 0x8f, 0xf4, 0x7d, 0xbf, 0xde, 0xdd, 0x0e, 
+0xf6, 0xe8, 0x4f, 0x93, 0xa0, 0x12, 0x28, 0x0c, 
+0x3c, 0x80, 0xc1, 0x0f, 0x40, 0xae, 0x40, 0x0f, 
+0x33, 0x00, 0x64, 0x30, 0xa3, 0x05, 0xa1, 0x7e, 
+0x83, 0x05, 0x64, 0x2f, 0xe2, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xca, 0xc0, 0x2d, 0x0e, 0x0f, 
+0xff, 0x84, 0x81, 0x02, 0x84, 0xa3, 0x41, 0xdf, 
+0xf0, 0x50, 0x00, 0x39, 0x4c, 0x02, 0x60, 0x17, 
+0x0c, 0x03, 0x40, 0x03, 0x8a, 0x51, 0x81, 0xde, 
+0x8d, 0x71, 0x46, 0x28, 0x3a, 0xf9, 0x91, 0x6f, 
+0x6b, 0xbd, 0xde, 0xa4, 0xc4, 0x14, 0xd4, 0x53, 
+0x32, 0xe3, 0x93, 0x7a, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x3a, 0x00, 
+0x8b, 0x30, 0x5a, 0x40, 0x32, 0x30, 0x8f, 0x80, 
+0x1e, 0x30, 0xfc, 0x40, 0xa7, 0x32, 0x39, 0x02, 
+0x1a, 0x3e, 0x6b, 0xcf, 0x0a, 0x3e, 0x11, 0x82, 
+0x7c, 0x32, 0x30, 0xc1, 0xb9, 0x30, 0xe8, 0x82, 
+0x1a, 0x30, 0x5b, 0x02, 0x2e, 0x30, 0x2c, 0xc2, 
+0x47, 0x30, 0x14, 0x03, 0xf6, 0x30, 0xa5, 0x38, 
+0x42, 0x31, 0x20, 0x02, 0x2d, 0xb7, 0x42, 0x0b, 
+0x97, 0xce, 0x5f, 0x30, 0xc9, 0x57, 0xf9, 0x5f, 
+0xa3, 0x90, 0xba, 0x9d, 0x5f, 0x6f, 0xf4, 0x68, 
+0xd9, 0xfe, 0x8b, 0x4b, 0x6c, 0xd9, 0xa7, 0xec, 
+0x75, 0x3e, 0xee, 0x96, 0x7b, 0x28, 0x31, 0x30, 
+0x7b, 0x30, 0xbc, 0xc2, 0x30, 0x61, 0x47, 0x30, 
+0x36, 0x84, 0x30, 0x0a, 0x07, 0xbb, 0x30, 0x85, 
+0xfb, 0xa9, 0x30, 0x7d, 0x87, 0xa3, 0x30, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0x4b, 0x38, 0x7b, 
+0x0e, 0x0f, 0xf4, 0x49, 0x40, 0xc7, 0x04, 0x25, 
+0x25, 0xbf, 0xe8, 0x56, 0x0d, 0x82, 0x66, 0x30, 
+0x26, 0xc1, 0x1b, 0x30, 0x2c, 0xc0, 0x59, 0x01, 
+0x79, 0x0e, 0x32, 0x06, 0x0e, 0xb9, 0x13, 0x13, 
+0x55, 0xa9, 0xf2, 0x93, 0xd8, 0x08, 0xfb, 0x3f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0x5a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 
+0x71, 0xc9, 0xbd, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 
+0x3b, 0xc0, 0x96, 0x30, 0x5b, 0x00, 0x4d, 0x0e, 
+0x12, 0x08, 0xc3, 0xf0, 0x01, 0x30, 0xc8, 0xe7, 
+0x04, 0x24, 0xf9, 0xbe, 0x19, 0x74, 0xf8, 0x55, 
+0x06, 0x0c, 0xc8, 0xc0, 0x05, 0xf0, 0xc3, 0x99, 
+0x08, 0x1c, 0xc1, 0x5f, 0x08, 0xa4, 0xc0, 0x98, 
+0x09, 0x10, 0xc0, 0x2b, 0x0f, 0xe4, 0x43, 0x4f, 
+0x20, 0x18, 0x16, 0x00, 0xaa, 0x38, 0xdd, 0xe3, 
+0x92, 0xca, 0x3b, 0xcf, 0x6d, 0x27, 0x7d, 0x2d, 
+0xd1, 0x4f, 0x6d, 0xff, 0xf7, 0x23, 0xfa, 0xaa, 
+0xe9, 0xff, 0x4d, 0x88, 0xaf, 0xb7, 0x47, 0xdd, 
+0xa3, 0xed, 0x4d, 0x1f, 0x26, 0x60, 0x25, 0x80, 
+0xf0, 0x60, 0x13, 0x01, 0x82, 0x60, 0x04, 0x82, 
+0x8c, 0x58, 0x0a, 0x1c, 0xc0, 0x08, 0x1e, 0xf0, 
+0xc0, 0x27, 0xee, 0xc0, 0xc1, 0x21, 0xe9, 0x0c, 
+0x1d, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xcb, 
+0x20, 0x2b, 0x0e, 0x0f, 0xff, 0x84, 0x80, 0xfe, 
+0x84, 0xa3, 0x41, 0xdf, 0xf0, 0x50, 0xc9, 0xac, 
+0xc2, 0xb0, 0x48, 0x0c, 0x2e, 0x01, 0x88, 0xc3, 
+0xd4, 0x03, 0xc5, 0x88, 0xc0, 0xa5, 0xc4, 0xa1, 
+0x39, 0x46, 0x1e, 0xf9, 0x05, 0xba, 0xec, 0xb2, 
+0xb4, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 
+0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x3d, 0x00, 0xa1, 0x30, 0x5c, 0x40, 
+0x62, 0x30, 0x90, 0x00, 0x2f, 0x30, 0xfc, 0x40, 
+0x0c, 0x32, 0x39, 0x00, 0x7b, 0x3e, 0x6f, 0xc6, 
+0xe1, 0x3e, 0x14, 0x80, 0x38, 0x32, 0x2e, 0xc1, 
+0x3d, 0x30, 0xe3, 0x81, 0xf0, 0x30, 0x53, 0x82, 
+0x22, 0x30, 0x1f, 0xc2, 0x45, 0x04, 0x07, 0xf0, 
+0x60, 0x1a, 0x70, 0xc0, 0xc4, 0x94, 0x08, 0xa3, 
+0x6f, 0x04, 0x96, 0x5f, 0x45, 0x7d, 0xcc, 0xa0, 
+0x7f, 0xa3, 0xa6, 0x8e, 0xcb, 0xbf, 0xef, 0x4f, 
+0xf5, 0x54, 0x9d, 0x1f, 0xe8, 0x8a, 0x16, 0xdb, 
+0xf2, 0x3f, 0x7e, 0x9f, 0xd1, 0x4f, 0xc8, 0x18, 
+0x8c, 0x3b, 0x98, 0x42, 0x60, 0x03, 0x14, 0x73, 
+0x03, 0x28, 0x63, 0x01, 0x4c, 0x7b, 0xd3, 0x09, 
+0x23, 0xba, 0x93, 0x09, 0x34, 0x7a, 0x53, 0x02, 
+0xb0, 0x26, 0xe3, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xca, 0xbc, 0x2b, 0x0e, 0x0f, 0xff, 0x84, 
+0x80, 0xda, 0x84, 0xe3, 0x41, 0xff, 0x6c, 0x94, 
+0x02, 0xec, 0x12, 0x73, 0x02, 0xf4, 0x06, 0xd3, 
+0x7b, 0x07, 0x0e, 0x32, 0x13, 0x12, 0xb9, 0x94, 
+0x13, 0x15, 0xad, 0xec, 0x91, 0xd8, 0x04, 0xfd, 
+0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xad, 0x31, 0x05, 0x35, 0x14, 
+0xcc, 0xb8, 0xe4, 0xdd, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x30, 0x3e, 0xc0, 0xac, 0x30, 
+0x5c, 0x80, 0x77, 0x30, 0x90, 0xc0, 0x5a, 0x30, 
+0xfc, 0x00, 0x77, 0x32, 0x38, 0xc1, 0xb0, 0x3e, 
+0x6b, 0x0f, 0x6e, 0x3e, 0x10, 0x41, 0x32, 0x32, 
+0x2d, 0x00, 0xfa, 0x30, 0xe1, 0x41, 0xd9, 0x30, 
+0x50, 0x42, 0x1d, 0x30, 0x18, 0x82, 0x42, 0x30, 
+0x03, 0x83, 0xf7, 0x30, 0xf5, 0x3c, 0x2e, 0x30, 
+0x20, 0x02, 0xa8, 0xf3, 0xd7, 0x24, 0x96, 0x51, 
+0xde, 0x37, 0x97, 0x09, 0x79, 0x76, 0xfa, 0x78, 
+0x9e, 0xfa, 0x35, 0x7f, 0xfd, 0x3a, 0x7e, 0xbf, 
+0xa6, 0x2e, 0x8d, 0x9f, 0x47, 0xef, 0xa3, 0xde, 
+0xde, 0xcf, 0x27, 0x49, 0x10, 0x61, 0xb1, 0xc1, 
+0x80, 0x8c, 0xa4, 0x8b, 0x63, 0x06, 0xdc, 0xcc, 
+0x04, 0x81, 0x23, 0x0c, 0x23, 0xd8, 0xd7, 0x0c, 
+0x23, 0x61, 0x1f, 0x8c, 0x07, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xca, 0xc4, 0x2b, 0x0e, 0x0f, 
+0xff, 0x84, 0x80, 0xfe, 0x84, 0xa3, 0x41, 0xdf, 
+0xf0, 0x50, 0x90, 0x59, 0xcc, 0x06, 0xc0, 0x29, 
+0x8c, 0x06, 0x60, 0x0e, 0x8e, 0x1c, 0x34, 0xe6, 
+0x83, 0x84, 0xb0, 0x0a, 0x05, 0xdc, 0xc9, 0x1d, 
+0x80, 0x7c, 0xe7, 0xfd, 0x29, 0x88, 0x29, 0xa8, 
+0xa6, 0x65, 0xc7, 0x26, 0xea, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x40, 0x00, 
+0xb7, 0x30, 0x5d, 0x40, 0x8a, 0x30, 0x90, 0x80, 
+0x83, 0x30, 0xfb, 0xc0, 0xca, 0x32, 0x37, 0x02, 
+0xa9, 0x3e, 0x62, 0xd6, 0x8f, 0x3e, 0x07, 0x82, 
+0x39, 0x32, 0x2a, 0xc0, 0xaf, 0x30, 0xde, 0x01, 
+0xc0, 0x30, 0x4c, 0x02, 0x14, 0x30, 0x11, 0x42, 
+0x3f, 0x30, 0x0e, 0xc3, 0xf4, 0x31, 0xcd, 0x30, 
+0x00, 0x31, 0x1d, 0x02, 0x2d, 0x97, 0xa2, 0x4b, 
+0x2f, 0xa2, 0xbe, 0xec, 0xa3, 0xfd, 0x0c, 0xf6, 
+0xfa, 0xb4, 0x5a, 0xbf, 0x67, 0xff, 0xef, 0xd3, 
+0xfe, 0x9f, 0xf6, 0x7b, 0xba, 0x5f, 0xfe, 0x8f, 
+0x21, 0x49, 0x87, 0xc3, 0x89, 0x82, 0x25, 0xe0, 
+0x15, 0x45, 0x31, 0x02, 0x82, 0x30, 0x31, 0x47, 
+0xb5, 0x31, 0x4d, 0x3b, 0x63, 0x31, 0x48, 0x47, 
+0x9f, 0x30, 0x43, 0x02, 0x70, 0x30, 0x36, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0x4b, 0x14, 0x2b, 
+0x0e, 0x0f, 0xff, 0x84, 0x80, 0xcf, 0x04, 0x64, 
+0x55, 0xcf, 0xec, 0x56, 0x41, 0x33, 0x30, 0x31, 
+0x40, 0x7f, 0x37, 0xc0, 0xd8, 0xe3, 0x24, 0x53, 
+0x5b, 0x80, 0xc8, 0x89, 0x8a, 0xbd, 0xec, 0x91, 
+0xce, 0x02, 0x7e, 0xcf, 0xff, 0xd7, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xf5, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x30, 
+0x41, 0x40, 0xc0, 0x30, 0x5d, 0x80, 0x9f, 0x30, 
+0x90, 0x40, 0xa6, 0x30, 0xfa, 0x81, 0x17, 0x32, 
+0x34, 0xc3, 0x84, 0x3e, 0x56, 0x1c, 0xf8, 0x3d, 
+0xfb, 0x43, 0x1c, 0x32, 0x27, 0x00, 0x5a, 0x30, 
+0xda, 0xc1, 0xa9, 0x30, 0x48, 0x42, 0x0d, 0x30, 
+0x08, 0x82, 0x3a, 0x30, 0x17, 0x83, 0xf1, 0x32, 
+0x75, 0x34, 0xc0, 0xa2, 0xe1, 0x40, 0x2a, 0xda, 
+0x7c, 0x66, 0xa7, 0x28, 0xef, 0x65, 0x7c, 0x4a, 
+0x73, 0xcf, 0xfa, 0xba, 0xed, 0xfb, 0x3e, 0xff, 
+0xfa, 0x35, 0xf7, 0x37, 0xfb, 0xbf, 0xa1, 0xdf, 
+0x4e, 0xee, 0x85, 0xbd, 0x7b, 0xfa, 0xcc, 0x39, 
+0x1b, 0x8c, 0x06, 0x2e, 0xcc, 0x0c, 0x50, 0x8c, 
+0x57, 0xa0, 0x4c, 0x0f, 0x41, 0xeb, 0x0c, 0x67, 
+0x5e, 0xc9, 0x8c, 0x65, 0x81, 0xe6, 0x0c, 0x13, 
+0x90, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xca, 
+0x94, 0x2b, 0x0e, 0x0f, 0xff, 0x84, 0x81, 0x03, 
+0x04, 0xa3, 0x41, 0xdf, 0xf0, 0x50, 0x9c, 0xcc, 
+0x0e, 0x60, 0x4e, 0x0c, 0x0c, 0x80, 0x21, 0x8d, 
+0xf2, 0x41, 0x38, 0xb1, 0x70, 0xd6, 0xc0, 0xa1, 
+0xe2, 0x5a, 0xac, 0x7b, 0xe4, 0x13, 0xe1, 0x89, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xea, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0x30, 0x42, 0x80, 0xcb, 0x30, 0x5e, 0x40, 
+0xb0, 0x30, 0x90, 0x00, 0xc9, 0x30, 0xf9, 0x41, 
+0x5a, 0x32, 0x32, 0x04, 0x4f, 0x3e, 0x45, 0xe2, 
+0xe9, 0x3d, 0xeb, 0x03, 0xed, 0x12, 0x44, 0x78, 
+0xc3, 0x5c, 0x06, 0x38, 0xc1, 0x10, 0x08, 0x08, 
+0x2a, 0x11, 0xb9, 0x80, 0xfe, 0x1f, 0x51, 0x98, 
+0xe9, 0x46, 0x0a, 0x17, 0x88, 0xc0, 0x8b, 0x25, 
+0xf0, 0x99, 0x9f, 0xa2, 0xbe, 0xe4, 0x4a, 0x1e, 
+0xf2, 0x4c, 0xd3, 0x6f, 0x0e, 0x6d, 0xeb, 0xf6, 
+0xff, 0xa3, 0xb3, 0xff, 0xda, 0x9a, 0xd9, 0xb3, 
+0xfb, 0xfa, 0x7f, 0x3f, 0x6f, 0xc8, 0x18, 0x68, 
+0x36, 0x81, 0x4b, 0x83, 0x06, 0xd4, 0x13, 0x1b, 
+0x27, 0xc3, 0x04, 0x8c, 0x7a, 0x33, 0x1e, 0x7b, 
+0xad, 0xb3, 0x1d, 0xec, 0x79, 0x13, 0x05, 0x80, 
+0x27, 0x23, 0x03, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xca, 0xe8, 0x2d, 0x0e, 0x0f, 0xff, 0x84, 
+0x80, 0xd0, 0x84, 0xa3, 0x41, 0xdf, 0xf0, 0x55, 
+0xd4, 0x13, 0xd3, 0x03, 0x2c, 0x08, 0xf3, 0x7c, 
+0x13, 0x0e, 0x2e, 0x71, 0x35, 0xa8, 0x4c, 0x68, 
+0x90, 0xab, 0xde, 0x49, 0x1c, 0xe0, 0x27, 0x5f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xfd, 0x69, 0x88, 0x29, 0xa8, 0xa6, 
+0x65, 0xc7, 0x26, 0xf5, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x30, 0x43, 0xc0, 0xd4, 0x30, 
+0x5e, 0x00, 0xc3, 0x30, 0x8f, 0xc0, 0xe8, 0x30, 
+0xf8, 0x01, 0x9b, 0x32, 0x2e, 0xc5, 0x0c, 0x3e, 
+0x30, 0xa8, 0x7c, 0x3d, 0xd6, 0xc4, 0xac, 0x32, 
+0x1f, 0x00, 0x63, 0x30, 0xd3, 0xc1, 0x75, 0x30, 
+0x3f, 0xc1, 0xfb, 0x30, 0x03, 0x42, 0x32, 0x30, 
+0x27, 0x03, 0xe5, 0x33, 0xb5, 0x24, 0xc2, 0x22, 
+0xe1, 0x00, 0x15, 0x60, 0x9e, 0x99, 0xab, 0xd4, 
+0x77, 0x9e, 0x9a, 0xc3, 0x5e, 0xbe, 0x8b, 0x38, 
+0x4e, 0xe4, 0xfa, 0x7d, 0x3f, 0xd3, 0xfd, 0x65, 
+0x17, 0xfc, 0xae, 0xdd, 0xba, 0x3f, 0xd1, 0xe6, 
+0xc4, 0xe9, 0xac, 0x86, 0x01, 0x38, 0x0b, 0x02, 
+0x20, 0x27, 0x4c, 0x02, 0x00, 0x45, 0x0c, 0x06, 
+0xd0, 0x8a, 0x4c, 0x12, 0x01, 0xa9, 0x8c, 0x7a, 
+0x5c, 0xd6, 0x0d, 0xdf, 0x9a, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xca, 0xa4, 0x2b, 0x0e, 0x0f, 
+0xff, 0x84, 0x81, 0x01, 0x04, 0xa3, 0x41, 0xdf, 
+0xf0, 0x50, 0x58, 0xc5, 0x54, 0x88, 0x4c, 0x37, 
+0x84, 0x58, 0xc2, 0xc0, 0x20, 0x0c, 0x35, 0xc1, 
+0x24, 0xc3, 0xb8, 0x1c, 0x0e, 0x68, 0x48, 0x68, 
+0xed, 0x6e, 0x40, 0xf3, 0x93, 0xf5, 0xce, 0x7f, 
+0xd2, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 
+0x6e, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 0x44, 0x80, 
+0xdd, 0x30, 0x5e, 0x40, 0xd2, 0x30, 0x8e, 0x81, 
+0x09, 0x30, 0xf6, 0x41, 0xd6, 0x32, 0x2a, 0x85, 
+0xc1, 0x3e, 0x18, 0x6d, 0xc7, 0x3d, 0xbe, 0x05, 
+0x63, 0x32, 0x1a, 0x40, 0xb6, 0x30, 0xcf, 0x81, 
+0x58, 0x30, 0x3b, 0x01, 0xee, 0x30, 0x0c, 0x82, 
+0x2d, 0x30, 0x2e, 0xc3, 0xde, 0x30, 0x22, 0xc1, 
+0x46, 0x30, 0x05, 0x80, 0x2f, 0x0b, 0x80, 0x08, 
+0x0d, 0xd1, 0x64, 0x4d, 0x29, 0x94, 0x4f, 0xb6, 
+0x8f, 0x38, 0x1d, 0xf6, 0xf4, 0xdb, 0xbd, 0x97, 
+0xd9, 0xa3, 0xde, 0x8f, 0x56, 0xaa, 0xbf, 0xfc, 
+0xd5, 0x9e, 0xcb, 0x32, 0x7e, 0x73, 0xa7, 0xb3, 
+0xa1, 0xbf, 0x0e, 0x56, 0x60, 0x15, 0x00, 0xce, 
+0x54, 0x02, 0xd0, 0xc0, 0x35, 0x04, 0xf4, 0xc0, 
+0x92, 0x09, 0xd0, 0xc1, 0x77, 0x1e, 0x2c, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x82, 0xca, 0xf8, 0x2b, 
+0x0e, 0x0f, 0xff, 0x84, 0x80, 0xe4, 0x84, 0xe3, 
+0x95, 0xff, 0x6c, 0x94, 0xc9, 0xc4, 0xe8, 0x3c, 
+0xe6, 0x4d, 0xde, 0x4c, 0x6b, 0x89, 0xc0, 0xc4, 
+0x3c, 0x51, 0x4c, 0x34, 0x42, 0x7c, 0xc3, 0xe0, 
+0x18, 0x0c, 0x44, 0xc2, 0x5c, 0xec, 0xc8, 0x45, 
+0x92, 0x15, 0x1b, 0xc9, 0x17, 0x96, 0x54, 0xce, 
+0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xfa, 0xd3, 0x10, 0x53, 0x51, 
+0x4c, 0xcb, 0x8e, 0x4d, 0xea, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0x50, 0x41, 0x0a, 0x30, 0x6c, 0x81, 0x07, 0x30, 
+0xa2, 0xc1, 0x50, 0x31, 0x17, 0x02, 0x5f, 0x32, 
+0x73, 0x47, 0x54, 0x3f, 0xec, 0xb9, 0xe4, 0x3f, 
+0x87, 0x46, 0xea, 0x32, 0x5f, 0x81, 0x29, 0x30, 
+0xe8, 0x41, 0x6d, 0x30, 0x3e, 0xc2, 0x2d, 0x30, 
+0x18, 0x42, 0x76, 0x30, 0x3d, 0x84, 0x63, 0x30, 
+0x2d, 0x01, 0x75, 0x30, 0x09, 0x40, 0x38, 0x06, 
+0x00, 0x12, 0x07, 0x61, 0x35, 0x27, 0x1e, 0x29, 
+0x1e, 0x7d, 0xf9, 0xd5, 0xa0, 0xdf, 0xd4, 0x8b, 
+0x3f, 0xda, 0xea, 0xfe, 0xb4, 0x9a, 0xdf, 0xdf, 
+0x5b, 0xff, 0xd7, 0xff, 0xff, 0xff, 0x55, 0xe8, 
+0xdf, 0xfe, 0xff, 0x2f, 0x93, 0xff, 0x4b, 0x7f, 
+0xed, 0x4f, 0x1b, 0xd0, 0xb3, 0xee, 0xaa, 0xfd, 
+0x06, 0x01, 0x38, 0x0c, 0x42, 0x10, 0x2c, 0xcc, 
+0x04, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xcb, 
+0xdc, 0x3b, 0x0e, 0x0f, 0xfd, 0xa4, 0xc1, 0x0d, 
+0x85, 0x23, 0x41, 0xff, 0x6c, 0x90, 0x00, 0x4e, 
+0x0c, 0x0a, 0x50, 0x9b, 0xcc, 0x19, 0xe1, 0xde, 
+0x0c, 0xac, 0x7e, 0x63, 0x8e, 0xa3, 0x1d, 0xa0, 
+0xc7, 0x4c, 0x9b, 0x4c, 0x46, 0x85, 0x20, 0xc3, 
+0x48, 0x29, 0x8c, 0x3d, 0xc1, 0xac, 0xc4, 0x40, 
+0x2a, 0x0e, 0xc0, 0x98, 0x49, 0x2d, 0x50, 0x3c, 
+0xf1, 0x49, 0x7d, 0x7c, 0x2a, 0x4c, 0x41, 0x4d, 
+0x45, 0x33, 0x2e, 0x39, 0x37, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0x30, 0x51, 0x01, 0x13, 0x30, 0x6c, 0x41, 
+0x18, 0x30, 0xa1, 0x01, 0x71, 0x31, 0x14, 0xc2, 
+0x9c, 0x32, 0x6d, 0x08, 0x11, 0x3f, 0xc7, 0x7f, 
+0x65, 0x3f, 0x62, 0x07, 0xa7, 0x32, 0x58, 0xc1, 
+0x74, 0x30, 0xe3, 0x01, 0x4a, 0x30, 0x39, 0x02, 
+0x1e, 0x30, 0x20, 0x82, 0x6f, 0x30, 0x45, 0x44, 
+0x58, 0x30, 0x32, 0x41, 0x70, 0x30, 0x0a, 0x80, 
+0x37, 0x04, 0x80, 0x10, 0x06, 0x48, 0x93, 0x13, 
+0x4b, 0x4b, 0x0f, 0xb6, 0xcd, 0x9c, 0x52, 0x76, 
+0xed, 0xad, 0xf5, 0x7f, 0x6f, 0x55, 0xbd, 0xfd, 
+0x7e, 0x9f, 0xed, 0x5f, 0xfc, 0xfd, 0xed, 0xf9, 
+0xff, 0xd9, 0x5f, 0xf4, 0xff, 0xd3, 0xaa, 0xd3, 
+0xff, 0x7a, 0x7e, 0xb7, 0xfc, 0x7f, 0xb1, 0x96, 
+0xfc, 0x39, 0x41, 0x80, 0x40, 0x02, 0xf8, 0x00, 
+0x0a, 0xe3, 0x01, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xcd, 0x2d, 0x61, 0x0c, 0x0f, 0xb4, 0x4d, 
+0xc0, 0xde, 0x85, 0x23, 0x41, 0xff, 0x6c, 0x94, 
+0x2c, 0x13, 0x53, 0x02, 0xd8, 0x26, 0x83, 0x07, 
+0x14, 0x76, 0x73, 0x2e, 0xf3, 0x8f, 0xf3, 0xb7, 
+0xd7, 0x59, 0x31, 0xf6, 0x26, 0xa3, 0x12, 0x71, 
+0x4b, 0x30, 0xd7, 0x0a, 0xd3, 0x0f, 0x60, 0x74, 
+0x31, 0x0d, 0x0b, 0xb3, 0xaf, 0x2d, 0x0e, 0x44, 
+0x52, 0x6f, 0x24, 0x5e, 0x59, 0x53, 0x3a, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xeb, 0x4c, 0x41, 0x4d, 0x45, 0x33, 
+0x2e, 0x39, 0x37, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0x30, 0x47, 0x40, 0xf6, 0x30, 
+0x5e, 0x01, 0x03, 0x30, 0x8b, 0xc1, 0x5c, 0x30, 
+0xef, 0x02, 0x7d, 0x32, 0x1a, 0xc7, 0xae, 0x3d, 
+0xb5, 0x3c, 0x4a, 0x3d, 0x5d, 0x47, 0x52, 0x32, 
+0x07, 0x81, 0x83, 0x30, 0xc1, 0xc0, 0xff, 0x30, 
+0x2c, 0x41, 0xcd, 0x30, 0x22, 0xc2, 0x18, 0x30, 
+0x42, 0x03, 0xc3, 0x35, 0xe4, 0xf4, 0xc5, 0x22, 
+0xc0, 0x40, 0x15, 0x5b, 0xa0, 0x1a, 0xd6, 0x2d, 
+0x19, 0xed, 0x08, 0xf5, 0x18, 0xf4, 0xf5, 0xb5, 
+0x17, 0xdb, 0x6b, 0xfd, 0xdf, 0xff, 0xed, 0xf5, 
+0x6e, 0x3b, 0x4f, 0xd0, 0xef, 0xa3, 0x75, 0x14, 
+0xad, 0xff, 0xa1, 0x06, 0x00, 0xd8, 0x0b, 0x46, 
+0x00, 0x48, 0x15, 0x66, 0x02, 0xb0, 0x26, 0x06, 
+0x06, 0x38, 0x4c, 0x66, 0x0f, 0x40, 0xea, 0x46, 
+0x65, 0x4f, 0x0b, 0x87, 0x8c, 0xff, 0xfb, 0x92, 
+0xc4, 0xff, 0x83, 0xcd, 0x35, 0x5f, 0x0c, 0x0f, 
+0xb4, 0x4d, 0xc1, 0x0d, 0x85, 0x23, 0x41, 0xff, 
+0x6c, 0x90, 0x4e, 0x88, 0x64, 0x32, 0x4c, 0xe6, 
+0x26, 0x02, 0x9c, 0x61, 0xb0, 0x16, 0x86, 0x1e, 
+0xa0, 0xfa, 0x62, 0x14, 0x19, 0x47, 0x58, 0x64, 
+0x1c, 0x8e, 0xa4, 0x1e, 0x78, 0xa4, 0xbe, 0xbe, 
+0x15, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xd4, 0x98, 0x82, 0x9a, 
+0x8a, 0x66, 0x5c, 0x72, 0x6f, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x01, 0xc9, 
+0xd9, 0x00, 0x00, 0x03, 0x01, 0x48, 0x04, 0x73, 
+0x01, 0xc4, 0x04, 0xc3, 0x02, 0xc0, 0x07, 0x13, 
+0x04, 0xec, 0x0e, 0x03, 0x0b, 0x70, 0x2d, 0x93, 
+0x4c, 0x55, 0x6d, 0x13, 0x4a, 0x68, 0x2b, 0x93, 
+0x0b, 0x04, 0x08, 0xa3, 0x7c, 0x0e, 0x8c, 0x48, 
+0x8a, 0x31, 0x32, 0xa4, 0xca, 0x73, 0xc3, 0x1a, 
+0x96, 0x8b, 0x4a, 0xe1, 0x43, 0x35, 0xb7, 0xdb, 
+0x3d, 0xff, 0xd2, 0xfe, 0xb4, 0xc7, 0x71, 0xa7, 
+0x33, 0x59, 0x01, 0x8e, 0xac, 0xc0, 0x1c, 0x01, 
+0xa4, 0xc0, 0x16, 0x03, 0x08, 0xc0, 0x71, 0x05, 
+0x6c, 0xc0, 0xf8, 0x0a, 0xc8, 0xc2, 0x59, 0x21, 
+0x04, 0xcf, 0x70, 0xfd, 0xa4, 0xfc, 0x6e, 0x0c, 
+0xcc, 0xa2, 0x8a, 0xe8, 0xc5, 0xb4, 0x60, 0xcc, 
+0x3f, 0x43, 0x64, 0xc4, 0x60, 0x27, 0x0c, 0xff, 
+0xfb, 0x92, 0xc4, 0xff, 0x83, 0xcb, 0x0c, 0x29, 
+0x0e, 0x0f, 0xff, 0x84, 0x81, 0x12, 0x05, 0x23, 
+0x41, 0xff, 0x6c, 0x90, 0x4b, 0xc3, 0xfc, 0xf1, 
+0x50, 0xc2, 0x15, 0x12, 0xed, 0xd4, 0x8b, 0xc5, 
+0x2a, 0x67, 0x5f, 0xff, 0xfd, 0x7f, 0xff, 0xff, 
+0xff, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xfd, 0x69, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xea, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x30, 
+0x3e, 0xc0, 0xe0, 0x30, 0x51, 0x00, 0xf9, 0x30, 
+0x77, 0x41, 0x5a, 0x30, 0xcc, 0x02, 0x83, 0x31, 
+0xcc, 0x47, 0xbe, 0x3b, 0xbc, 0xbc, 0x98, 0x3b, 
+0x71, 0x47, 0x70, 0x31, 0xb9, 0x81, 0xb7, 0x30, 
+0xa0, 0x40, 0xa1, 0x30, 0x1c, 0x41, 0x7b, 0x30, 
+0x28, 0xc1, 0xc4, 0x30, 0x43, 0x03, 0x35, 0x35, 
+0xf4, 0x2c, 0xc5, 0x22, 0x22, 0xce, 0xae, 0x68, 
+0x67, 0x2b, 0x16, 0x9c, 0xfd, 0xae, 0xf3, 0x1e, 
+0xbe, 0xbf, 0xff, 0xff, 0xbf, 0xfd, 0xdf, 0xdf, 
+0xaf, 0xf7, 0x7d, 0x1b, 0xba, 0x2f, 0xd7, 0xd2, 
+0x83, 0x00, 0x54, 0x06, 0x23, 0x00, 0x84, 0x0b, 
+0xf3, 0x01, 0xf0, 0x15, 0x43, 0x04, 0x2c, 0x2a, 
+0x93, 0x09, 0xf8, 0x82, 0x43, 0x41, 0xaf, 0xe8, 
+0xc3, 0x40, 0x30, 0x81, 0x63, 0x0a, 0xbc, 0x2b, 
+0x53, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x82, 0x48, 
+0xf8, 0x55, 0x1f, 0x4f, 0xf0, 0x47, 0x21, 0x16, 
+0x85, 0x23, 0x01, 0xff, 0x6c, 0x90, 0x05, 0xd8, 
+0x18, 0x43, 0x03, 0xf0, 0x0d, 0xe3, 0x04, 0x5c, 
+0x0a, 0x73, 0x04, 0xa8, 0x10, 0xe3, 0xc2, 0x48, 
+0x07, 0x29, 0xa5, 0xc3, 0xaf, 0x0e, 0x45, 0xeb, 
+0x9c, 0xb2, 0xaf, 0xff, 0xec, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcd, 0x29, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xf5, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x30, 0x36, 0x00, 0xc7, 0x30, 0x45, 0xc0, 
+0xe0, 0x30, 0x66, 0x81, 0x3f, 0x30, 0xaf, 0xc2, 
+0x56, 0x31, 0x8d, 0x07, 0x35, 0x3a, 0x27, 0xf8, 
+0x61, 0x39, 0xe6, 0x06, 0xf1, 0x31, 0x7c, 0x41, 
+0xa6, 0x30, 0x87, 0x00, 0x6c, 0x30, 0x13, 0x01, 
+0x3c, 0x30, 0x27, 0x01, 0x83, 0x30, 0x3e, 0xc2, 
+0xc0, 0x3a, 0xfe, 0x23, 0x22, 0x19, 0x2e, 0xf3, 
+0x29, 0x8d, 0x63, 0xdb, 0x2f, 0xec, 0x7f, 0x8e, 
+0xef, 0xe8, 0x57, 0xff, 0x4f, 0xff, 0xfd, 0x7f, 
+0xf7, 0xfa, 0xbf, 0xa3, 0xdf, 0xf5, 0xff, 0x49, 
+0x80, 0x1c, 0x02, 0xf9, 0x80, 0x50, 0x05, 0xd1, 
+0x81, 0x0e, 0x0a, 0x79, 0x82, 0x34, 0x14, 0xf1, 
+0x85, 0x4a, 0x40, 0x29, 0xa2, 0xb1, 0xec, 0xe9, 
+0xa1, 0xea, 0x3f, 0xc9, 0x85, 0xa0, 0x15, 0x71, 
+0x83, 0x06, 0x0c, 0xff, 0xfb, 0x92, 0xc4, 0xff, 
+0x83, 0xca, 0x30, 0x29, 0x10, 0x0f, 0xff, 0x84, 
+0x81, 0x27, 0x84, 0xe3, 0x01, 0xff, 0xec, 0x90, 
+0x39, 0x81, 0xfe, 0x07, 0x29, 0x82, 0x24, 0x05, 
+0x71, 0x82, 0x4e, 0x09, 0x09, 0xdf, 0xa7, 0x83, 
+0x94, 0x12, 0xed, 0xd4, 0x8b, 0xc5, 0x2a, 0x67, 
+0x5e, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xdd, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x88, 0x29, 
+0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xea, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x30, 0x36, 0xc0, 0xcc, 0x30, 0x45, 
+0x00, 0xeb, 0x30, 0x65, 0x41, 0x50, 0x30, 0xac, 
+0x82, 0x79, 0x31, 0x86, 0xc7, 0x9c, 0x39, 0xfe, 
+0xbb, 0x6e, 0x39, 0xbe, 0x47, 0x58, 0x31, 0x75, 
+0x01, 0xcf, 0x30, 0x82, 0xc0, 0x4f, 0x30, 0x0e, 
+0x41, 0x31, 0x30, 0x2b, 0xc1, 0x7a, 0x30, 0x42, 
+0x82, 0xb7, 0x3b, 0x8d, 0xf3, 0x27, 0x18, 0x2e, 
+0xeb, 0x0e, 0x8c, 0xe5, 0xcb, 0x5c, 0xeb, 0x47, 
+0xa3, 0xa2, 0xdf, 0xbf, 0xff, 0xff, 0xff, 0xfe, 
+0x9f, 0xfe, 0x8f, 0xdb, 0x47, 0xd2, 0x60, 0x03, 
+0x80, 0xb0, 0x60, 0x19, 0x81, 0x6a, 0x60, 0x48, 
+0x02, 0x90, 0x60, 0x95, 0x85, 0x2a, 0x61, 0x64, 
+0x0f, 0xc8, 0x69, 0x1f, 0xf9, 0x30, 0x68, 0xeb, 
+0x0f, 0xb0, 0x61, 0x79, 0x85, 0x4e, 0x60, 0xc6, 
+0x03, 0x10, 0x60, 0x80, 0x01, 0xff, 0xfb, 0x90, 
+0xc4, 0xff, 0x83, 0xc9, 0xd4, 0x29, 0x12, 0x0f, 
+0xff, 0x64, 0x81, 0x23, 0x05, 0x23, 0x01, 0xff, 
+0xec, 0x90, 0xd8, 0x60, 0x88, 0x81, 0x72, 0x60, 
+0x91, 0x02, 0x60, 0x77, 0x4a, 0x80, 0xa4, 0xf4, 
+0xf8, 0x71, 0xe1, 0xc8, 0xbd, 0x70, 0x4e, 0xca, 
+0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xb3, 0x4a, 0x62, 0x0a, 0x6a, 
+0x29, 0x99, 0x71, 0xc9, 0xbd, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x30, 0x36, 0x80, 0xd1, 
+0x30, 0x44, 0xc0, 0xf2, 0x30, 0x63, 0x81, 0x63, 
+0x30, 0xa9, 0xc2, 0x9a, 0x31, 0x7f, 0x88, 0x01, 
+0x39, 0xd2, 0xfe, 0x61, 0x39, 0x92, 0x87, 0xbd, 
+0x31, 0x6d, 0xc1, 0xf4, 0x30, 0x7d, 0x80, 0x2c, 
+0x30, 0x08, 0x81, 0x26, 0x30, 0x2f, 0x81, 0x73, 
+0x30, 0x46, 0xc2, 0xa8, 0x3c, 0x5d, 0xa3, 0x2a, 
+0x19, 0x2e, 0x53, 0x0d, 0x8d, 0x63, 0x95, 0x9c, 
+0xba, 0x53, 0xe9, 0x67, 0xfe, 0xef, 0x5f, 0xff, 
+0xff, 0xe9, 0xfa, 0x3f, 0xf9, 0x3f, 0x7b, 0xf4, 
+0xff, 0xfe, 0xfa, 0x40, 0x80, 0x2a, 0x98, 0x07, 
+0x40, 0x58, 0x18, 0x13, 0x60, 0xa1, 0x98, 0x27, 
+0x41, 0x44, 0x18, 0x5d, 0x63, 0xe0, 0x9a, 0x63, 
+0x9d, 0xc1, 0x9a, 0x55, 0xa3, 0xdb, 0x98, 0x62, 
+0x01, 0x4f, 0x18, 0x32, 0xe0, 0xc4, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc9, 0x7c, 0x2b, 0x12, 
+0x0f, 0xff, 0x64, 0x81, 0x27, 0x04, 0xe3, 0x01, 
+0xff, 0xec, 0x90, 0x98, 0x20, 0x20, 0x79, 0x98, 
+0x21, 0x80, 0x60, 0x18, 0x23, 0xa0, 0xa0, 0x9d, 
+0xba, 0xd8, 0x19, 0x31, 0x35, 0xdc, 0x48, 0x7e, 
+0x1c, 0xa4, 0xce, 0xbd, 0xbf, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 
+0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xdd, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 0xfc, 
+0xb6, 0x33, 0xa8, 0xdb, 0x35, 0x55, 0x42, 0x39, 
+0x12, 0x63, 0x31, 0x49, 0xc7, 0x58, 0x38, 0x75, 
+0xb9, 0x3e, 0x38, 0x3e, 0xc7, 0x1c, 0x31, 0x39, 
+0x01, 0xd5, 0x30, 0x69, 0x40, 0x01, 0x30, 0x01, 
+0xc0, 0xf3, 0x32, 0xc5, 0x3a, 0x34, 0x02, 0x47, 
+0x32, 0xc0, 0xb9, 0x30, 0x94, 0x10, 0x41, 0xd6, 
+0x75, 0x19, 0x10, 0x87, 0x3d, 0x1e, 0x8f, 0xfe, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 
+0x21, 0x01, 0x38, 0xc0, 0x41, 0x02, 0xac, 0xc0, 
+0xa4, 0x04, 0xe8, 0xc1, 0x4b, 0x09, 0xec, 0xc3, 
+0x0a, 0x1e, 0x60, 0xd3, 0xf3, 0xe9, 0x68, 0xd3, 
+0x7c, 0x1e, 0x48, 0xc3, 0x2f, 0x0a, 0x5c, 0xc1, 
+0x9e, 0x06, 0x20, 0xc1, 0x00, 0x03, 0xd8, 0xc1, 
+0x09, 0x03, 0x24, 0xc1, 0x16, 0x05, 0x38, 0xec, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc9, 0xe8, 
+0x2b, 0x12, 0x0f, 0xff, 0x64, 0x81, 0x1e, 0x05, 
+0x23, 0x01, 0xff, 0xec, 0x90, 0x98, 0x00, 0xc9, 
+0x69, 0xa8, 0xe3, 0xc3, 0x91, 0xba, 0xf8, 0x55, 
+0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 
+0xff, 0xff, 0xff, 0xff, 0x52, 0x62, 0x0a, 0x6a, 
+0x29, 0x99, 0x71, 0xc9, 0xba, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0x32, 0xf8, 0xbb, 0x33, 0xa4, 0xe2, 0x35, 0x31, 
+0x51, 0x38, 0xe6, 0x7c, 0x31, 0x42, 0x87, 0xa9, 
+0x38, 0x49, 0xfb, 0xa1, 0x38, 0x13, 0x87, 0x6f, 
+0x31, 0x31, 0xc1, 0xf4, 0x01, 0x06, 0x4a, 0x40, 
+0x07, 0x41, 0x97, 0xc9, 0x89, 0xa1, 0xf1, 0xd1, 
+0x97, 0x65, 0xa1, 0x84, 0xc0, 0x7a, 0x0f, 0x33, 
+0x98, 0xd6, 0xc1, 0x97, 0xfb, 0xff, 0xff, 0x77, 
+0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfb, 
+0xff, 0xfe, 0x92, 0x40, 0x12, 0x4c, 0x04, 0x80, 
+0x29, 0x0c, 0x0a, 0xd0, 0x4c, 0xcc, 0x15, 0x80, 
+0x9b, 0x0c, 0x32, 0xb1, 0xdc, 0x4d, 0x4b, 0xee, 
+0x47, 0xcd, 0x44, 0x51, 0xda, 0xcc, 0x34, 0xc0, 
+0xa3, 0x0c, 0x1a, 0x90, 0x62, 0x4c, 0x10, 0x10, 
+0x3f, 0x4c, 0x10, 0x40, 0x34, 0x0c, 0x11, 0x10, 
+0x57, 0x4e, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc8, 0x3c, 0x23, 0x14, 0x0e, 0xff, 0xa2, 0x81, 
+0x1f, 0x05, 0x23, 0x01, 0xff, 0xec, 0x90, 0xbd, 
+0x94, 0x04, 0x88, 0x9a, 0xee, 0x24, 0x3f, 0x0e, 
+0x52, 0x66, 0xe5, 0xed, 0xfb, 0xff, 0xd7, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 
+0x69, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 
+0xf5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x32, 0xfc, 0xbe, 0x33, 0x90, 0xe9, 
+0x35, 0x1d, 0x5c, 0x38, 0xaa, 0x97, 0x31, 0x3b, 
+0x47, 0xf6, 0x38, 0x1b, 0x3d, 0xea, 0x37, 0xe5, 
+0xc7, 0xbc, 0x31, 0x29, 0x82, 0x13, 0x30, 0x60, 
+0x40, 0x22, 0x30, 0x00, 0x00, 0xdd, 0x33, 0x35, 
+0x28, 0x34, 0x6a, 0x2d, 0x33, 0x08, 0xb1, 0x30, 
+0xa4, 0x0e, 0x40, 0x0b, 0x3a, 0x8c, 0xac, 0x39, 
+0x4e, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 
+0xff, 0x6f, 0xff, 0xe8, 0xff, 0xff, 0xa4, 0x44, 
+0x02, 0x81, 0x80, 0xbe, 0x05, 0xc9, 0x81, 0xa4, 
+0x0a, 0xc1, 0x83, 0x3a, 0x15, 0xb9, 0x87, 0x80, 
+0x42, 0x61, 0xb1, 0x07, 0xfc, 0xa1, 0xaf, 0xe0, 
+0x42, 0x31, 0x87, 0xca, 0x16, 0xf9, 0x83, 0xe0, 
+0x0e, 0x11, 0x82, 0x50, 0x09, 0x41, 0x82, 0x52, 
+0x07, 0xc9, 0x82, 0x64, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc8, 0x50, 0x25, 0x14, 0x0e, 0xff, 
+0xa2, 0x81, 0x23, 0x85, 0x23, 0x01, 0xff, 0xec, 
+0x90, 0x0d, 0x01, 0xe2, 0x3e, 0x19, 0x58, 0x1a, 
+0x38, 0x35, 0xf8, 0x72, 0x1f, 0xa7, 0xc0, 0xfa, 
+0xb6, 0x7d, 0xdf, 0xea, 0xff, 0xff, 0xff, 0xff, 
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xea, 0x4c, 0x41, 
+0x4d, 0x45, 0x33, 0x2e, 0x39, 0x37, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x32, 0x88, 0xa7, 0x33, 
+0x0c, 0xce, 0x34, 0x51, 0x3b, 0x37, 0x66, 0x58, 
+0x31, 0x0c, 0x87, 0x3d, 0x36, 0xf1, 0xf8, 0x47, 
+0x36, 0xc4, 0x07, 0x09, 0x30, 0xfd, 0x41, 0xe6, 
+0x30, 0x4f, 0x00, 0x35, 0x30, 0x04, 0x40, 0xb2, 
+0x35, 0xd3, 0xe4, 0xdf, 0xfd, 0x83, 0x56, 0xa4, 
+0x8c, 0x44, 0x09, 0x47, 0xe7, 0x26, 0x5d, 0x0d, 
+0xfa, 0x7f, 0xff, 0x67, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xf4, 0xff, 0xa4, 0x0a, 0x02, 0x59, 0x80, 
+0xcc, 0x05, 0x91, 0x81, 0xba, 0x0a, 0x79, 0x83, 
+0x54, 0x15, 0x21, 0x87, 0xc6, 0x40, 0xb9, 0xb2, 
+0xb1, 0xf0, 0x19, 0xb1, 0x82, 0x40, 0xa9, 0x88, 
+0x04, 0x16, 0x81, 0x83, 0xf2, 0x0e, 0x09, 0x82, 
+0x4e, 0x09, 0x79, 0x82, 0x44, 0x08, 0x01, 0x82, 
+0x5a, 0x0d, 0x89, 0xe0, 0xc1, 0x99, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc8, 0x98, 0x23, 0x14, 
+0x0e, 0xff, 0xa2, 0x81, 0x29, 0x05, 0x22, 0xc1, 
+0xff, 0xec, 0x90, 0x40, 0x22, 0x1b, 0xb5, 0xc7, 
+0xfe, 0x1c, 0xa4, 0xb7, 0x85, 0xb5, 0xfd, 0x3f, 
+0xf6, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xe8, 0xff, 
+0xff, 0xff, 0xff, 0x6e, 0x84, 0xc4, 0x14, 0xd4, 
+0x53, 0x32, 0xe3, 0x93, 0x75, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 0x8c, 
+0xa8, 0x32, 0xf8, 0xd5, 0x34, 0x3d, 0x44, 0x37, 
+0x2a, 0x6f, 0x31, 0x05, 0xc7, 0x7a, 0x36, 0xc4, 
+0x3a, 0x1e, 0x36, 0x97, 0x47, 0x48, 0x30, 0xf5, 
+0x01, 0xff, 0x30, 0x4a, 0xc0, 0x4c, 0x30, 0x08, 
+0x00, 0xa7, 0x36, 0x2b, 0xc0, 0xe1, 0x1c, 0xd3, 
+0x5a, 0x23, 0xcc, 0x4a, 0x06, 0x47, 0xd7, 0x1a, 
+0x5b, 0x0e, 0x75, 0x23, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xfa, 0x0c, 0x00, 0x60, 
+0x10, 0x8c, 0x06, 0xf0, 0x2a, 0xcc, 0x0e, 0x60, 
+0x51, 0x0c, 0x1b, 0x90, 0xa4, 0xcc, 0x40, 0x01, 
+0xf8, 0x0d, 0xa2, 0x5f, 0x17, 0x0d, 0x98, 0x61, 
+0xf8, 0x0c, 0x42, 0x10, 0xb0, 0xcc, 0x20, 0x00, 
+0x6f, 0x8c, 0x12, 0x60, 0x4c, 0x8c, 0x11, 0xd0, 
+0x42, 0x4c, 0x12, 0x20, 0x6f, 0x8e, 0xea, 0x18, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc7, 0xf8, 
+0x23, 0x16, 0x0e, 0xff, 0x82, 0x81, 0x2f, 0x05, 
+0x62, 0xc1, 0xff, 0xec, 0x90, 0xc9, 0xc1, 0x51, 
+0xf1, 0xaf, 0xbf, 0x90, 0xfd, 0x3d, 0x87, 0xab, 
+0x67, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 
+0xff, 0xff, 0xff, 0xff, 0xea, 0x4c, 0x41, 0x4d, 
+0x45, 0x33, 0x2e, 0x39, 0x37, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x32, 0x88, 0xab, 0x32, 0xf4, 0xda, 0x34, 0x19, 
+0x4f, 0x36, 0xfe, 0x82, 0x30, 0xfe, 0x07, 0xb7, 
+0x36, 0x93, 0xfb, 0xe1, 0x36, 0x68, 0x07, 0x85, 
+0x30, 0xed, 0x42, 0x16, 0x30, 0x45, 0x80, 0x63, 
+0x30, 0x0c, 0x40, 0x9c, 0x36, 0x73, 0xa4, 0xe2, 
+0x7b, 0xe3, 0x5d, 0xa2, 0x0c, 0x4c, 0x07, 0x43, 
+0x67, 0x16, 0x5c, 0xa0, 0xdf, 0x5a, 0x7d, 0x1f, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 
+0x4c, 0x01, 0x10, 0x0e, 0xcc, 0x07, 0x60, 0x28, 
+0x8c, 0x0e, 0xf0, 0x4e, 0xcc, 0x1c, 0x60, 0xa0, 
+0x0c, 0x41, 0xf1, 0xe9, 0xcd, 0xae, 0x6e, 0xa8, 
+0x4d, 0xa4, 0x51, 0xea, 0x4c, 0x43, 0xa0, 0xad, 
+0x0c, 0x20, 0x90, 0x6f, 0x4c, 0x12, 0x50, 0x4d, 
+0xcc, 0x11, 0x60, 0x44, 0x0c, 0x11, 0xb0, 0x73, 
+0x4e, 0xce, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc7, 0xe8, 0x23, 0x16, 0x0e, 0xff, 0x82, 0x81, 
+0x2b, 0x05, 0x22, 0xc1, 0xff, 0xec, 0x90, 0x2c, 
+0xc9, 0x01, 0x91, 0xfd, 0xae, 0x3f, 0xf0, 0xe5, 
+0x26, 0x6e, 0x5f, 0xff, 0xfd, 0x7f, 0xff, 0xff, 
+0xff, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xfd, 0x69, 
+0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x26, 0xea, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x32, 0x84, 0xac, 0x32, 0xe0, 0xdf, 
+0x33, 0xfd, 0x58, 0x36, 0xba, 0x95, 0x30, 0xf6, 
+0x47, 0xee, 0x36, 0x61, 0x3d, 0x8c, 0x36, 0x36, 
+0xc7, 0xbe, 0x30, 0xe4, 0x82, 0x2d, 0x30, 0x41, 
+0x40, 0x76, 0x30, 0x0f, 0x80, 0x8f, 0x36, 0xcb, 
+0x78, 0xe3, 0x5b, 0x13, 0x60, 0x21, 0x4c, 0x52, 
+0x04, 0x43, 0x57, 0x1a, 0x5a, 0xb0, 0xe7, 0x52, 
+0x3d, 0x3f, 0xfd, 0xdf, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0x47, 0xfa, 0x0c, 0x01, 0x80, 0x0c, 0x8c, 
+0x07, 0xd0, 0x26, 0xcc, 0x0f, 0x60, 0x4b, 0x8c, 
+0x1d, 0x50, 0x9b, 0x4c, 0x43, 0xc1, 0xda, 0x8d, 
+0xba, 0x1e, 0x33, 0x8d, 0xaf, 0x81, 0xdb, 0x0c, 
+0x45, 0x50, 0xa9, 0x4c, 0x20, 0xe0, 0x6e, 0x8c, 
+0x12, 0x20, 0x4e, 0x8c, 0x11, 0x10, 0x45, 0xcc, 
+0x11, 0x20, 0x76, 0x0e, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc8, 0x08, 0x23, 0x16, 0x0e, 0xff, 
+0x82, 0x81, 0x28, 0x85, 0x22, 0xc1, 0xff, 0xec, 
+0x90, 0xb2, 0x40, 0xc8, 0xc1, 0xd1, 0xf1, 0xaf, 
+0xbf, 0x90, 0xfd, 0x3e, 0x07, 0xd5, 0xfe, 0xaf, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xf5, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 
+0x1c, 0x9b, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x32, 0x80, 0xaf, 0x32, 
+0xd4, 0xe4, 0x33, 0xd9, 0x63, 0x36, 0x86, 0xa6, 
+0x30, 0xed, 0x88, 0x25, 0x36, 0x2c, 0xff, 0x25, 
+0x36, 0x03, 0x07, 0xf5, 0x30, 0xdc, 0x42, 0x42, 
+0x30, 0x3c, 0x00, 0x8b, 0x30, 0x13, 0x40, 0x82, 
+0x37, 0x13, 0x54, 0xe4, 0xba, 0x03, 0x63, 0x9f, 
+0x8c, 0x54, 0x05, 0x47, 0x27, 0x16, 0x2d, 0xe2, 
+0x17, 0xf6, 0xbf, 0xdd, 0xff, 0xa7, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xee, 
+0xf5, 0x18, 0x05, 0x20, 0x1a, 0x98, 0x13, 0x00, 
+0x55, 0x18, 0x24, 0xe0, 0xa8, 0x98, 0x44, 0xc1, 
+0x57, 0x18, 0x9e, 0xa4, 0x17, 0x9c, 0x08, 0x1f, 
+0x45, 0x9b, 0xef, 0xe4, 0x1a, 0x98, 0xa1, 0xc1, 
+0x79, 0x18, 0x4c, 0x60, 0xfb, 0x98, 0x29, 0xa0, 
+0xb7, 0x98, 0x26, 0x40, 0xa4, 0x18, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc8, 0x28, 0x23, 0x16, 
+0x0e, 0xff, 0x82, 0x81, 0x27, 0x85, 0x22, 0xc1, 
+0xff, 0xec, 0x90, 0x26, 0x21, 0x16, 0x9e, 0x0d, 
+0x69, 0x94, 0x06, 0x20, 0x0d, 0x9c, 0x3f, 0xef, 
+0xe5, 0x25, 0xb7, 0x2f, 0xff, 0xfe, 0xbf, 0xff, 
+0xff, 0xff, 0xff, 0xee, 0xab, 0xff, 0xfb, 0xbf, 
+0xdd, 0xeb, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 
+0x39, 0x37, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x32, 0x24, 
+0x96, 0x32, 0x58, 0xc9, 0x33, 0x3d, 0x3a, 0x35, 
+0x72, 0x61, 0x30, 0xc8, 0x47, 0x50, 0x35, 0x3a, 
+0xb8, 0xc2, 0x35, 0x17, 0x47, 0x26, 0x30, 0xb8, 
+0x02, 0x0b, 0x30, 0x2f, 0x40, 0x86, 0x30, 0x12, 
+0x80, 0x65, 0x36, 0x5a, 0xb8, 0xe0, 0x95, 0xd3, 
+0x57, 0x1a, 0x40, 0x44, 0x64, 0xd5, 0x75, 0xa5, 
+0xab, 0x3d, 0xd4, 0x8f, 0x4f, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xfd, 0x1f, 0xe8, 0x30, 0x0c, 
+0x80, 0x2c, 0x30, 0x28, 0x40, 0xa1, 0x30, 0x4b, 
+0x81, 0x42, 0x30, 0x8d, 0x42, 0x95, 0x31, 0x44, 
+0x87, 0xe2, 0x38, 0x3f, 0xfc, 0x48, 0x38, 0x0d, 
+0x87, 0xea, 0x31, 0x4a, 0x42, 0xdf, 0x30, 0x9a, 
+0x81, 0xf2, 0x30, 0x52, 0x81, 0x72, 0x30, 0x4a, 
+0xc1, 0x51, 0x30, 0x49, 0x82, 0x3a, 0x3b, 0x8b, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0xc8, 0xa4, 
+0x25, 0x16, 0x0e, 0xff, 0x82, 0x81, 0x2f, 0x85, 
+0x22, 0x81, 0xff, 0xec, 0x90, 0x23, 0x27, 0x0f, 
+0x41, 0xc6, 0x76, 0xec, 0x3f, 0xf4, 0xf6, 0x1e, 
+0xaf, 0xff, 0xfa, 0xbf, 0xb3, 0xff, 0xff, 0xf7, 
+0xff, 0xbf, 0xff, 0xfe, 0xff, 0xa3, 0xfa, 0x93, 
+0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4d, 0xd5, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x32, 0x18, 0x99, 0x32, 0x4c, 0xcc, 0x33, 0x19, 
+0x43, 0x35, 0x3e, 0x6e, 0x30, 0xc0, 0x07, 0x7b, 
+0x35, 0x07, 0xfa, 0x03, 0x34, 0xe5, 0x87, 0x51, 
+0x30, 0xb0, 0x42, 0x1c, 0x30, 0x2a, 0x00, 0x97, 
+0x30, 0x15, 0xc0, 0x56, 0x36, 0x92, 0x9c, 0xe1, 
+0x74, 0xe3, 0x59, 0x98, 0x80, 0x44, 0x94, 0xd6, 
+0x75, 0x67, 0x94, 0x77, 0xad, 0x3e, 0x8f, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x26, 
+0x01, 0xd8, 0x04, 0x26, 0x05, 0x40, 0x12, 0xc6, 
+0x09, 0xb8, 0x26, 0xa6, 0x12, 0x00, 0x4f, 0x46, 
+0x29, 0x68, 0xf2, 0xa7, 0x0d, 0x97, 0x3d, 0xa7, 
+0x07, 0x28, 0xf3, 0xe6, 0x2a, 0x00, 0x59, 0x46, 
+0x13, 0x78, 0x3d, 0xe6, 0x0a, 0x38, 0x2e, 0xe6, 
+0x09, 0x00, 0x2a, 0xc6, 0x08, 0xd8, 0x48, 0xe7, 
+0x63, 0x6e, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 
+0xc8, 0x00, 0x23, 0x18, 0x0e, 0xff, 0x82, 0x81, 
+0x31, 0x05, 0x22, 0x81, 0xff, 0xec, 0x90, 0x64, 
+0x81, 0xc8, 0x3e, 0xce, 0x1d, 0xb7, 0xf2, 0x92, 
+0xdb, 0x97, 0xff, 0xff, 0x5d, 0x3f, 0xff, 0xff, 
+0xeb, 0xff, 0xf7, 0x7f, 0xff, 0xdd, 0xfe, 0xef, 
+0x5a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 
+0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0x32, 0x14, 0x98, 0x32, 0x38, 0xd1, 
+0x32, 0xfd, 0x48, 0x35, 0x02, 0x7d, 0x30, 0xb8, 
+0x47, 0xa2, 0x34, 0xd3, 0x3b, 0x30, 0x34, 0xb2, 
+0x47, 0x7a, 0x30, 0xa7, 0x02, 0x2d, 0x30, 0x25, 
+0x40, 0xa4, 0x30, 0x18, 0x00, 0x4b, 0x36, 0xca, 
+0x70, 0xe2, 0x14, 0x13, 0x5b, 0x17, 0x40, 0xc4, 
+0xe4, 0xd5, 0x75, 0xa7, 0x47, 0x90, 0xea, 0x47, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xf4, 0x18, 0x0a, 0x00, 0x0f, 0x18, 0x19, 0x60, 
+0x52, 0x98, 0x2d, 0xc0, 0xa8, 0x18, 0x54, 0x61, 
+0x5b, 0x98, 0xc0, 0xc4, 0x24, 0x1c, 0xe4, 0x7f, 
+0x97, 0x1c, 0xc6, 0x84, 0x2b, 0x18, 0xc3, 0x21, 
+0x8c, 0x98, 0x59, 0xc1, 0x18, 0x18, 0x2e, 0x80, 
+0xd8, 0x18, 0x28, 0x60, 0xc8, 0x98, 0x26, 0xc1, 
+0x54, 0x1e, 0x16, 0xc1, 0xff, 0xfb, 0x92, 0xc4, 
+0xff, 0x83, 0xc7, 0xec, 0x23, 0x18, 0x0e, 0xff, 
+0x82, 0x81, 0x31, 0x05, 0x22, 0x81, 0xff, 0xec, 
+0x90, 0x94, 0x8b, 0x97, 0x21, 0x77, 0xbb, 0x0f, 
+0xfc, 0xbe, 0xc1, 0xf5, 0x67, 0xfe, 0xff, 0x5f, 
+0x55, 0x1f, 0x67, 0x4f, 0xff, 0xff, 0xfd, 0x77, 
+0xff, 0xff, 0xdf, 0xfe, 0xff, 0x52, 0x62, 0x0a, 
+0x6a, 0x29, 0x99, 0x71, 0xc9, 0xbd, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x32, 0x10, 0x9b, 0x32, 
+0x2c, 0xd2, 0x32, 0xd9, 0x4f, 0x34, 0xc6, 0x88, 
+0x30, 0xaf, 0x07, 0xc9, 0x34, 0x9c, 0x7c, 0x4d, 
+0x34, 0x7c, 0x87, 0xa1, 0x30, 0x9e, 0x42, 0x3c, 
+0x30, 0x20, 0x00, 0xb5, 0x30, 0x1a, 0xc0, 0x3e, 
+0x37, 0x02, 0x4c, 0xe2, 0xf3, 0x03, 0x5d, 0x96, 
+0x00, 0xc4, 0xd4, 0xd6, 0x75, 0x67, 0x86, 0x37, 
+0xac, 0x60, 0x30, 0x0f, 0xc0, 0x05, 0x30, 0x26, 
+0x80, 0x6e, 0x30, 0x46, 0xc0, 0xef, 0x30, 0x82, 
+0x81, 0xf8, 0x31, 0x2d, 0x46, 0x13, 0x37, 0xac, 
+0x2e, 0x75, 0x37, 0x7d, 0x46, 0x1f, 0x31, 0x30, 
+0x02, 0x48, 0x30, 0x8a, 0x41, 0xa5, 0x30, 0x45, 
+0x41, 0x49, 0x30, 0x3a, 0x81, 0x32, 0x30, 0x37, 
+0xc2, 0x11, 0x38, 0x7a, 0x33, 0x16, 0x0a, 0x4c, 
+0x77, 0x21, 0xff, 0x8c, 0x52, 0x5b, 0xff, 0xfb, 
+0x92, 0xc4, 0xff, 0x83, 0xc7, 0xe4, 0x23, 0x18, 
+0x0e, 0xff, 0x82, 0x81, 0x3e, 0x05, 0x22, 0x41, 
+0xff, 0xec, 0x90, 0x04, 0xc5, 0x69, 0x38, 0xcf, 
+0x1b, 0x48, 0x0c, 0x68, 0xa2, 0x1d, 0x5d, 0x3f, 
+0xff, 0xff, 0xff, 0xff, 0x77, 0xff, 0xfd, 0xdf, 
+0xff, 0x5a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 
+0xc9, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 
+0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x40, 0x00, 
+0x64, 0xdb, 0x6d, 0xb5, 0xb2, 0x4a, 0xc1, 0xdb, 
+0xa3, 0xf9, 0x04, 0xa6, 0x38, 0xaf, 0x01, 0x21, 
+0xc3, 0xcc, 0xe2, 0x0f, 0x5c, 0x8f, 0x60, 0x85, 
+0x53, 0x5c, 0x72, 0xa0, 0x86, 0x38, 0x52, 0x42, 
+0x98, 0x90, 0xe2, 0xdd, 0x4d, 0x8c, 0x93, 0x72, 
+0x2c, 0xc7, 0x36, 0x37, 0x48, 0x08, 0x50, 0x9b, 
+0x75, 0xa6, 0x14, 0x51, 0xac, 0x54, 0x3d, 0x08, 
+0xcd, 0x2c, 0x34, 0x40, 0x0c, 0x1a, 0x13, 0xa6, 
+0xcc, 0x91, 0x91, 0xce, 0x84, 0x64, 0x0a, 0x9c, 
+0x38, 0x64, 0x5b, 0x4d, 0x6c, 0x53, 0x76, 0x3c, 
+0xc6, 0x36, 0x37, 0xc9, 0x88, 0x11, 0x9b, 0xb6, 
+0xa6, 0x34, 0x41, 0xb2, 0x64, 0x51, 0x6c, 0xcf, 
+0x36, 0x35, 0xc2, 0x8c, 0x1a, 0x93, 0x66, 0x7c, 
+0x64, 0xc1, 0xae, 0x54, 0x62, 0x00, 0x9a, 0x75, 
+0xff, 0xfb, 0x92, 0xc4, 0xff, 0x83, 0x46, 0x98, 
+0x23, 0x18, 0x0e, 0xff, 0x82, 0xa1, 0x4f, 0x85, 
+0x22, 0xc9, 0xff, 0xec, 0x90, 0x23, 0xd2, 0x0c, 
+0xaa, 0xb3, 0x4e, 0x24, 0x08, 0x78, 0xd4, 0x18, 
+0x14, 0x22, 0x69, 0xd1, 0x82, 0x87, 0x19, 0xe4, 
+0x03, 0x4f, 0xcc, 0x72, 0x23, 0x40, 0x18, 0x2a, 
+0x64, 0xe3, 0x54, 0x46, 0x41, 0xbc, 0xe0, 0x41, 
+0xa6, 0xbb, 0x62, 0x5a, 0x19, 0x2e, 0x9b, 0x62, 
+0x88, 0x12, 0x37, 0x12, 0x10, 0x0a, 0x6c, 0xb2, 
+0x1c, 0x51, 0xa0, 0xb0, 0x95, 0xe6, 0x12, 0xc6, 
+0xb0, 0x82, 0xa6, 0x9b, 0x28, 0x97, 0x38, 0xd4, 
+0x58, 0x58, 0x93, 0x35, 0x30, 0xea, 0x00, 0x29, 
+0x9a, 0xa2, 0x8e, 0x10, 0x6a, 0x1c, 0x5e, 0xd3, 
+0x45, 0x31, 0xe1, 0x8c, 0x83, 0x83, 0x23, 0x04, 
+0x1c, 0x68, 0x04, 0x4a, 0x29, 0xa2, 0x6a, 0x12, 
+0x8c, 0xc4, 0x09, 0x85, 0x31, 0x4d, 0x0c, 0x70, 
+0x1a, 0x59, 0x9e, 0x19, 0x54, 0x23, 0x38, 0xa4, 
+0x89, 0x32, 0xcf, 0x2b, 0x0c, 0xc2, 0x20, 0x21, 
+0xf0, 0xb1, 0x06, 0x60, 0x48, 0x7a, 0x66, 0x92, 
+0x8f, 0xc6, 0x31, 0x84, 0xc2, 0x00, 0x47, 0x08, 
+0x60, 0x42, 0x39, 0x96, 0x1a, 0x3b, 0x19, 0x44, 
+0x25, 0x69, 0x8a, 0x59, 0x10, 0xe0, 0x41, 0x02, 
+0x17, 0x11, 0x08, 0x64, 0x04, 0x96, 0xa6, 0x48, 
+0xe9, 0xf4, 0x61, 0x10, 0x3c, 0x00, 0x24, 0x30, 
+0x72, 0x83, 0x20, 0x99, 0x21, 0xa6, 0x91, 0x8c, 
+0x32, 0x66, 0x98, 0x23, 0x8d, 0x06, 0x0c, 0x00, 
+0x1c, 0x9a, 0x1c, 0x0c, 0x60, 0x14, 0xa4, 0xc5, 
+0x1d, 0x38, 0x80, 0x03, 0x0b, 0x00, 0x5b, 0xb0, 
+0x72, 0x09, 0x2e, 0x62, 0x82, 0xa6, 0x46, 0x10, 
+0x8a, 0x12, 0x05, 0x14, 0x48, 0x32, 0xe6, 0x02, 
+0x8f, 0x49, 0xc3, 0x10, 0x05, 0x4a, 0x60, 0x8a, 
+0xa2, 0x20, 0x81, 0x04, 0x80, 0x40, 0x58, 0x28, 
+0xc4, 0xdb, 0x30, 0xc1, 0x58, 0xc6, 0x00, 0x49, 
+0xe0, 0x0d, 0x0c, 0x38, 0x34, 0x6c, 0x05, 0x16, 
+0xaa, 0x46, 0x10, 0x0a, 0xe4, 0x02, 0x1a, 0x4d, 
+0x85, 0x02, 0x0e, 0x01, 0x23, 0xc1, 0x44, 0x2c, 
+0x93, 0x04, 0x15, 0xac, 0x04, 0x09, 0x20, 0x02, 
+0xa0, 0x86, 0x06, 0x9e, 0x80, 0xa1, 0xd7, 0x91, 
+0x82, 0x10, 0x99, 0x10, 0xb9, 0x0a, 0x11, 0xb7, 
+0x94, 0x1b, 0x65, 0xb9, 0xac, 0x3c, 0x1e, 0x9b, 
+0xd1, 0xa4, 0x51, 0x91, 0x70, 0x19, 0x51, 0x59, 
+0x95, 0x12, 0x8c, 0x13, 0x19, 0xa8, 0xd0, 0xa0, 
+0xd9, 0x93, 0x0c, 0x85, 0x04, 0x77, 0xb0, 0xd2, 
+0xcc, 0x6e, 0x0e, 0x90, 0x21, 0xa0, 0x6e, 0x8a, 
+0x98, 0xda, 0x44, 0xd3, 0x32, 0x15, 0x48, 0x02, 
+0x06, 0x81, 0xa1, 0x71, 0x04, 0x19, 0x1d, 0x40, 
+0xc5, 0x60, 0x05, 0x92, 0x62, 0xe5, 0xee, 0x4f, 
+0xa4, 0x26, 0x97, 0xc5, 0x45, 0x8b, 0x8c, 0xd2, 
+0xcb, 0xba, 0xd4, 0x11, 0xe5, 0x58, 0x53, 0x49, 
+0x0d, 0x98, 0x4a, 0x00, 0x5d, 0x84, 0x56, 0x6c, 
+0xea, 0xdc, 0xb5, 0x96, 0x8a, 0x74, 0xb4, 0x64, 
+0x8a, 0x7f, 0xd4, 0x05, 0xcd, 0x60, 0x2c, 0x95, 
+0x91, 0x29, 0xff, 0xfb, 0x92, 0xc4, 0xff, 0x80, 
+0x31, 0x95, 0xa3, 0x65, 0xac, 0xeb, 0x2d, 0xf4, 
+0xf1, 0x3a, 0xe6, 0xc1, 0xbc, 0x3d, 0xb8, 0xb1, 
+0xb2, 0x21, 0xa8, 0x60, 0xb7, 0x18, 0xc3, 0xe8, 
+0x93, 0x17, 0x51, 0xc2, 0x7c, 0x09, 0xb2, 0x8c, 
+0x5b, 0x4f, 0x12, 0x7a, 0x58, 0x4b, 0xb0, 0xe2, 
+0x49, 0x8b, 0x8a, 0xa0, 0x83, 0x1e, 0x45, 0xf8, 
+0xb1, 0x1d, 0xa4, 0x25, 0x20, 0x3d, 0x4a, 0xb2, 
+0x52, 0x70, 0x9b, 0xa5, 0x84, 0xf6, 0x21, 0x4a, 
+0x71, 0xe9, 0x58, 0x2d, 0xc7, 0x11, 0xbc, 0x65, 
+0x24, 0x49, 0x6a, 0x90, 0x9d, 0x2d, 0x96, 0xd3, 
+0x84, 0xfd, 0x32, 0x53, 0x05, 0xc9, 0x8c, 0x9c, 
+0xb4, 0x17, 0xe3, 0x89, 0x14, 0x65, 0x2f, 0x97, 
+0x16, 0x02, 0xdc, 0xd2, 0x5f, 0x4e, 0x14, 0x49, 
+0x92, 0xb8, 0x2e, 0x4a, 0xf2, 0xda, 0xb2, 0x73, 
+0x19, 0x4a, 0x63, 0x29, 0x76, 0x68, 0xb2, 0x1a, 
+0x4b, 0x47, 0xe9, 0xd2, 0xb9, 0x34, 0x5b, 0x0d, 
+0x26, 0x73, 0x45, 0x64, 0xfe, 0x3a, 0x97, 0x46, 
+0x93, 0x19, 0xa2, 0xc8, 0x73, 0x2a, 0x8f, 0xd3, 
+0xa5, 0x72, 0x68, 0xb0, 0x1a, 0x4e, 0x67, 0x2a, 
+0xa4, 0xfe, 0x3a, 0x97, 0x8d, 0x26, 0x33, 0x45, 
+0xc0, 0xe6, 0x55, 0x22, 0x4e, 0x96, 0xb3, 0x45, 
+0xe1, 0xcc, 0xe6, 0x72, 0xaa, 0x54, 0xc7, 0x53, 
+0x51, 0xa4, 0xfc, 0xe5, 0x74, 0x7f, 0x2a, 0x94, 
+0xa7, 0x4b, 0x59, 0xa2, 0xf0, 0xe6, 0x76, 0x7e, 
+0xaa, 0x54, 0xc7, 0x53, 0x61, 0xa4, 0xce, 0x72, 
+0xb8, 0xa7, 0x94, 0x4b, 0x93, 0xa5, 0xbc, 0xd1, 
+0x70, 0x43, 0x96, 0x93, 0xaa, 0x15, 0xd1, 0xd4, 
+0xd9, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 
+0x37, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 
+0x39, 0x37, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0xff, 0xfb, 0x92, 0xc4, 
+0x61, 0x83, 0xc0, 0x00, 0x01, 0xa4, 0x00, 0x00, 
+0x00, 0x20, 0x00, 0x00, 0x34, 0x80, 0x00, 0x00, 
+0x04, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 
+};
+
diff --git a/tests/check/generic/index.c b/tests/check/generic/index.c
new file mode 100644 (file)
index 0000000..e733c6d
--- /dev/null
@@ -0,0 +1,140 @@
+/* GStreamer
+ * unit test for index setting on all elements
+ * Copyright (C) 2005 Thomas Vander Stichele <thomas at apestaart dot org>
+ * Copyright (C) 2011 Tim-Philipp Müller <tim centricular net>
+ *
+ * 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 <gst/check/gstcheck.h>
+
+static GList *elements = NULL;
+
+static void
+setup (void)
+{
+  GList *features, *f;
+  GList *plugins, *p;
+  gchar **ignorelist = NULL;
+  const gchar *INDEX_IGNORE_ELEMENTS = NULL;
+
+  GST_DEBUG ("getting elements for package %s", PACKAGE);
+  INDEX_IGNORE_ELEMENTS = g_getenv ("GST_INDEX_IGNORE_ELEMENTS");
+  if (!g_getenv ("GST_NO_INDEX_IGNORE_ELEMENTS") && INDEX_IGNORE_ELEMENTS) {
+    GST_DEBUG ("Will ignore element factories: '%s'", INDEX_IGNORE_ELEMENTS);
+    ignorelist = g_strsplit (INDEX_IGNORE_ELEMENTS, " ", 0);
+  }
+
+  plugins = gst_registry_get_plugin_list (gst_registry_get_default ());
+
+  for (p = plugins; p; p = p->next) {
+    GstPlugin *plugin = p->data;
+
+    if (strcmp (gst_plugin_get_source (plugin), PACKAGE) != 0)
+      continue;
+
+    features =
+        gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
+        gst_plugin_get_name (plugin));
+
+    for (f = features; f; f = f->next) {
+      GstPluginFeature *feature = f->data;
+      const gchar *name = gst_plugin_feature_get_name (feature);
+      gboolean ignore = FALSE;
+
+      if (!GST_IS_ELEMENT_FACTORY (feature))
+        continue;
+
+      if (ignorelist) {
+        gchar **s;
+
+        for (s = ignorelist; s && *s; ++s) {
+          if (g_str_has_prefix (name, *s)) {
+            GST_DEBUG ("ignoring element %s", name);
+            ignore = TRUE;
+          }
+        }
+        if (ignore)
+          continue;
+      }
+
+      GST_DEBUG ("adding element %s", name);
+      elements = g_list_prepend (elements, (gpointer) g_strdup (name));
+    }
+    gst_plugin_feature_list_free (features);
+  }
+  gst_plugin_list_free (plugins);
+  g_strfreev (ignorelist);
+}
+
+static void
+teardown (void)
+{
+  GList *e;
+
+  for (e = elements; e; e = e->next) {
+    g_free (e->data);
+  }
+  g_list_free (elements);
+  elements = NULL;
+}
+
+GST_START_TEST (test_set_index)
+{
+  GstElement *element;
+  GstIndex *idx;
+  GList *e;
+
+  idx = gst_index_factory_make ("memindex");
+  if (idx == NULL)
+    return;
+
+  gst_object_ref_sink (idx);
+
+  for (e = elements; e; e = e->next) {
+    const gchar *name = e->data;
+
+    GST_INFO ("testing element %s", name);
+    element = gst_element_factory_make (name, name);
+    fail_if (element == NULL, "Could not make element from factory %s", name);
+
+    gst_element_set_index (element, idx);
+    gst_object_unref (element);
+  }
+
+  gst_object_unref (idx);
+}
+
+GST_END_TEST;
+
+static Suite *
+index_suite (void)
+{
+  Suite *s = suite_create ("index");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
+  tcase_add_test (tc_chain, test_set_index);
+
+  return s;
+}
+
+GST_CHECK_MAIN (index);
diff --git a/tests/check/generic/states.c b/tests/check/generic/states.c
new file mode 100644 (file)
index 0000000..4d80acc
--- /dev/null
@@ -0,0 +1,221 @@
+/* GStreamer
+ *
+ * unit test for state changes on all elements
+ *
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ *
+ * 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 <unistd.h>
+
+#include <gst/check/gstcheck.h>
+
+static GList *elements = NULL;
+
+static void
+setup ()
+{
+  GList *features, *f;
+  GList *plugins, *p;
+  gchar **ignorelist = NULL;
+  const gchar *STATE_IGNORE_ELEMENTS = NULL;
+
+  GST_DEBUG ("getting elements for package %s", PACKAGE);
+  STATE_IGNORE_ELEMENTS = g_getenv ("GST_STATE_IGNORE_ELEMENTS");
+  if (!g_getenv ("GST_NO_STATE_IGNORE_ELEMENTS") && STATE_IGNORE_ELEMENTS) {
+    GST_DEBUG ("Will ignore element factories: '%s'", STATE_IGNORE_ELEMENTS);
+    ignorelist = g_strsplit (STATE_IGNORE_ELEMENTS, " ", 0);
+  }
+
+  plugins = gst_registry_get_plugin_list (gst_registry_get_default ());
+
+  for (p = plugins; p; p = p->next) {
+    GstPlugin *plugin = p->data;
+
+    if (strcmp (gst_plugin_get_source (plugin), PACKAGE) != 0)
+      continue;
+
+    features =
+        gst_registry_get_feature_list_by_plugin (gst_registry_get_default (),
+        gst_plugin_get_name (plugin));
+
+    for (f = features; f; f = f->next) {
+      GstPluginFeature *feature = f->data;
+      const gchar *name = gst_plugin_feature_get_name (feature);
+      gboolean ignore = FALSE;
+
+      if (!GST_IS_ELEMENT_FACTORY (feature))
+        continue;
+
+      if (ignorelist) {
+        gchar **s;
+
+        for (s = ignorelist; s && *s; ++s) {
+          if (g_str_has_prefix (name, *s)) {
+            GST_DEBUG ("ignoring element %s", name);
+            ignore = TRUE;
+          }
+        }
+        if (ignore)
+          continue;
+      }
+
+      GST_DEBUG ("adding element %s", name);
+      elements = g_list_prepend (elements, (gpointer) g_strdup (name));
+    }
+    gst_plugin_feature_list_free (features);
+  }
+  gst_plugin_list_free (plugins);
+  g_strfreev (ignorelist);
+}
+
+static void
+teardown ()
+{
+  GList *e;
+
+  for (e = elements; e; e = e->next) {
+    g_free (e->data);
+  }
+  g_list_free (elements);
+  elements = NULL;
+}
+
+
+GST_START_TEST (test_state_changes_up_and_down_seq)
+{
+  GstElement *element;
+  GList *e;
+
+  for (e = elements; e; e = e->next) {
+    const gchar *name = e->data;
+
+    GST_INFO ("testing element %s", name);
+    element = gst_element_factory_make (name, name);
+    fail_if (element == NULL, "Could not make element from factory %s", name);
+
+    if (GST_IS_PIPELINE (element)) {
+      GST_DEBUG ("element %s is a pipeline", name);
+    }
+
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_NULL);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_NULL);
+    gst_object_unref (GST_OBJECT (element));
+  }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_state_changes_up_seq)
+{
+  GstElement *element;
+  GList *e;
+
+  for (e = elements; e; e = e->next) {
+    const gchar *name = e->data;
+
+    GST_INFO ("testing element %s", name);
+    element = gst_element_factory_make (name, name);
+    fail_if (element == NULL, "Could not make element from factory %s", name);
+
+    if (GST_IS_PIPELINE (element)) {
+      GST_DEBUG ("element %s is a pipeline", name);
+    }
+
+    gst_element_set_state (element, GST_STATE_READY);
+
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+
+    gst_element_set_state (element, GST_STATE_NULL);
+    gst_object_unref (GST_OBJECT (element));
+  }
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_state_changes_down_seq)
+{
+  GstElement *element;
+  GList *e;
+
+  for (e = elements; e; e = e->next) {
+    const gchar *name = e->data;
+
+    GST_INFO ("testing element %s", name);
+    element = gst_element_factory_make (name, name);
+    fail_if (element == NULL, "Could not make element from factory %s", name);
+
+    if (GST_IS_PIPELINE (element)) {
+      GST_DEBUG ("element %s is a pipeline", name);
+    }
+
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_PLAYING);
+
+    gst_element_set_state (element, GST_STATE_PAUSED);
+    gst_element_set_state (element, GST_STATE_READY);
+    gst_element_set_state (element, GST_STATE_NULL);
+    gst_object_unref (GST_OBJECT (element));
+  }
+}
+
+GST_END_TEST;
+
+Suite *
+states_suite (void)
+{
+  Suite *s = suite_create ("states");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
+  tcase_add_test (tc_chain, test_state_changes_up_and_down_seq);
+  tcase_add_test (tc_chain, test_state_changes_up_seq);
+  tcase_add_test (tc_chain, test_state_changes_down_seq);
+
+  return s;
+}
+
+GST_CHECK_MAIN (states);
diff --git a/tests/check/gst-plugins-ugly.supp b/tests/check/gst-plugins-ugly.supp
new file mode 100644 (file)
index 0000000..8e0cfa8
--- /dev/null
@@ -0,0 +1,203 @@
+### amrnb suppressions
+### these should/could be submitted to amrnb
+
+{
+   <amrnb>
+   Memcheck:Cond
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <amrnb>
+   Memcheck:Cond
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <amrnb>
+   Memcheck:Cond
+   obj:/usr/lib/libamrnb.so*
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <amrnb>
+   Memcheck:Cond
+   obj:/usr/lib/libamrnb.so*
+   obj:/usr/lib/libamrnb.so*
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <amrnb>
+   Memcheck:Cond
+   obj:/usr/lib/libamrnb.so*
+   obj:/usr/lib/libamrnb.so*
+   obj:/usr/lib/libamrnb.so*
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <amrnb acos>
+   Memcheck:Cond
+   fun:acos
+   obj:/usr/lib/libamrnb.so*
+   obj:/usr/lib/libamrnb.so*
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+   fun:gst_amrnbenc_chain
+   fun:gst_pad_chain
+   fun:gst_pad_push
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Levinson
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Az_lsp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:acos
+   fun:Lsp_lsf
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Lsf_wt
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Vq_subvec
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Lag_max
+   fun:Pitch_ol
+   fun:ol_ltp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:Pitch_ol
+   fun:ol_ltp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:cl_ltp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:searchFrac
+   fun:cl_ltp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:q_gain_pitch
+   fun:cl_ltp
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:set_sign12k2
+   fun:code_10i40_35bits
+   fun:cbsearch
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:code_10i40_35bits
+   fun:cbsearch
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder>
+   Memcheck:Cond
+   fun:gainQuant
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+{
+   <AMR encoder on FC4>
+   Memcheck:Value2
+   obj:/usr/lib/libamrnb.so.0.0.0
+   fun:Speech_Encode_Frame
+   fun:Encoder_Interface_Encode
+}
+
+## lame
+
+{
+   <lame Conditional jump or move depends on uninitialised values>
+   Memcheck:Cond
+   fun:L3psycho_anal_vbr
+   fun:lame_encode_mp3_frame
+   ...
+   fun:lame_encode_flush
+   fun:gst_lamemp3enc_sink_event
+}
+
diff --git a/tests/check/pipelines/lame.c b/tests/check/pipelines/lame.c
new file mode 100644 (file)
index 0000000..943219b
--- /dev/null
@@ -0,0 +1,142 @@
+/* GStreamer
+ *
+ * unit test for lame
+ *
+ * Copyright (C) 2007 Thomas Vander Stichele <thomas at apestaart dot org>
+ *
+ * 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.
+ */
+
+#include <gst/check/gstcheck.h>
+#include <gst/check/gstbufferstraw.h>
+
+#ifndef GST_DISABLE_PARSE
+
+GST_START_TEST (test_format)
+{
+  GstElement *bin;
+  GstPad *pad;
+  gchar *pipe_str;
+  GstBuffer *buffer;
+  GError *error = NULL;
+
+  pipe_str = g_strdup_printf ("audiotestsrc num-buffers=1 "
+      "! audio/x-raw-int, rate=22050, channels=1 "
+      "! lame bitrate=24 mode=3 " "! audio/mpeg,rate=22050 ! fakesink");
+
+  bin = gst_parse_launch (pipe_str, &error);
+  fail_unless (bin != NULL, "Error parsing pipeline: %s",
+      error ? error->message : "(invalid error)");
+  g_free (pipe_str);
+
+  /* get the pad */
+  {
+    GstElement *sink = gst_bin_get_by_name (GST_BIN (bin), "fakesink0");
+
+    fail_unless (sink != NULL, "Could not get fakesink out of bin");
+    pad = gst_element_get_static_pad (sink, "sink");
+    fail_unless (pad != NULL, "Could not get pad out of fakesink");
+    gst_object_unref (sink);
+  }
+
+  gst_buffer_straw_start_pipeline (bin, pad);
+
+  buffer = gst_buffer_straw_get_buffer (bin, pad);
+
+  gst_buffer_straw_stop_pipeline (bin, pad);
+
+  gst_buffer_unref (buffer);
+  gst_object_unref (pad);
+  gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_caps_proxy)
+{
+  GstElement *bin;
+  GstPad *pad;
+  gchar *pipe_str;
+  GstBuffer *buffer;
+  GError *error = NULL;
+
+  pipe_str = g_strdup_printf ("audiotestsrc num-buffers=1 "
+      "! audio/x-raw-int,rate=48000,channels=1 "
+      "! audioresample "
+      "! lamemp3enc ! audio/mpeg,rate=(int){22050,44100} ! fakesink");
+
+  bin = gst_parse_launch (pipe_str, &error);
+  fail_unless (bin != NULL, "Error parsing pipeline: %s",
+      error ? error->message : "(invalid error)");
+  g_free (pipe_str);
+
+  /* get the pad */
+  {
+    GstElement *sink = gst_bin_get_by_name (GST_BIN (bin), "fakesink0");
+
+    fail_unless (sink != NULL, "Could not get fakesink out of bin");
+    pad = gst_element_get_static_pad (sink, "sink");
+    fail_unless (pad != NULL, "Could not get pad out of fakesink");
+    gst_object_unref (sink);
+  }
+
+  gst_buffer_straw_start_pipeline (bin, pad);
+
+  buffer = gst_buffer_straw_get_buffer (bin, pad);
+
+  gst_buffer_straw_stop_pipeline (bin, pad);
+
+  gst_buffer_unref (buffer);
+  gst_object_unref (pad);
+  gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+#endif /* #ifndef GST_DISABLE_PARSE */
+
+Suite *
+lame_suite (void)
+{
+  Suite *s = suite_create ("lame");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+
+#ifndef GST_DISABLE_PARSE
+  tcase_add_test (tc_chain, test_format);
+  tcase_add_test (tc_chain, test_caps_proxy);
+#endif
+
+  return s;
+}
+
+int
+main (int argc, char **argv)
+{
+  int nf;
+
+  Suite *s = lame_suite ();
+  SRunner *sr = srunner_create (s);
+
+  gst_check_init (&argc, &argv);
+
+  srunner_run_all (sr, CK_NORMAL);
+  nf = srunner_ntests_failed (sr);
+  srunner_free (sr);
+
+  return nf;
+}
diff --git a/win32/MANIFEST b/win32/MANIFEST
new file mode 100644 (file)
index 0000000..4044af8
--- /dev/null
@@ -0,0 +1,14 @@
+win32/MANIFEST
+win32/common/config.h
+win32/vs6/gst_plugins_ugly.dsw
+win32/vs6/libgstac3parse.dsp
+win32/vs6/libgstasfdemux.dsp
+win32/vs6/libgstdvdlpcmdec.dsp
+win32/vs6/libgstdvdsub.dsp
+win32/vs6/libgstiec958.dsp
+win32/vs6/libgstlame.dsp
+win32/vs6/libgstmad.dsp
+win32/vs6/libgstmpegaudioparse.dsp
+win32/vs6/libgstmpegstream.dsp
+win32/vs6/libgstrealmedia.dsp
+win32/vs6/libgstsynaesthesia.dsp
diff --git a/win32/common/config.h b/win32/common/config.h
new file mode 100644 (file)
index 0000000..956fdbf
--- /dev/null
@@ -0,0 +1,285 @@
+/* Autogenerated config.h created for win32 Visual Studio builds */
+
+/* PREFIX -- specifically added for Windows for easier moving */
+#define PREFIX "C:\\gstreamer"
+
+
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Default audio sink */
+#define DEFAULT_AUDIOSINK "directsoundsink"
+
+/* Default audio source */
+#define DEFAULT_AUDIOSRC "audiotestsrc"
+
+/* Default video sink */
+#undef DEFAULT_VIDEOSINK
+
+/* Default video source */
+#define DEFAULT_VIDEOSRC "videotestsrc"
+
+/* Default visualizer */
+#define DEFAULT_VISUALIZER "goom"
+
+/* Disable Orc */
+#undef DISABLE_ORC
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* gettext package name */
+#define GETTEXT_PACKAGE "gst-plugins-ugly-0.10"
+
+/* macro to use to show function name */
+#undef GST_FUNCTION
+
+/* Defined if gcov is enabled to force a rebuild due to config.h changing */
+#undef GST_GCOV_ENABLED
+
+/* Default errorlevel to use */
+#define GST_LEVEL_DEFAULT GST_LEVEL_ERROR
+
+/* GStreamer license */
+#define GST_LICENSE "LGPL"
+
+/* package name in plugins */
+#define GST_PACKAGE_NAME "GStreamer Ugly Plug-ins source release"
+
+/* package origin */
+#define GST_PACKAGE_ORIGIN "Unknown package origin"
+
+/* GStreamer package release date/time for plugins as YYYY-MM-DD */
+#define GST_PACKAGE_RELEASE_DATETIME "2012-02-20"
+
+/* Define to enable a52dec (used by a52dec). */
+#undef HAVE_A52DEC
+
+/* Define to enable amrnb library (used by amrnb). */
+#undef HAVE_AMRNB
+
+/* Define to enable amrwb library (used by amrwbdec). */
+#undef HAVE_AMRWB
+
+/* Define to enable cdio library (used by cdio). */
+#undef HAVE_CDIO
+
+/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
+   CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the host CPU is an Alpha */
+#undef HAVE_CPU_ALPHA
+
+/* Define if the host CPU is an ARM */
+#undef HAVE_CPU_ARM
+
+/* Define if the host CPU is a CRIS */
+#undef HAVE_CPU_CRIS
+
+/* Define if the host CPU is a CRISv32 */
+#undef HAVE_CPU_CRISV32
+
+/* Define if the host CPU is a HPPA */
+#undef HAVE_CPU_HPPA
+
+/* Define if the host CPU is an x86 */
+#define HAVE_CPU_I386 1
+
+/* Define if the host CPU is a IA64 */
+#undef HAVE_CPU_IA64
+
+/* Define if the host CPU is a M68K */
+#undef HAVE_CPU_M68K
+
+/* Define if the host CPU is a MIPS */
+#undef HAVE_CPU_MIPS
+
+/* Define if the host CPU is a PowerPC */
+#undef HAVE_CPU_PPC
+
+/* Define if the host CPU is a 64 bit PowerPC */
+#undef HAVE_CPU_PPC64
+
+/* Define if the host CPU is a S390 */
+#undef HAVE_CPU_S390
+
+/* Define if the host CPU is a SPARC */
+#undef HAVE_CPU_SPARC
+
+/* Define if the host CPU is a x86_64 */
+#undef HAVE_CPU_X86_64
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* define for working do while(0) macros */
+#undef HAVE_DOWHILE_MACROS
+
+/* Define to enable dvdread library (used by dvdreadsrc). */
+#undef HAVE_DVDREAD
+
+/* Define to enable building of experimental plug-ins. */
+#undef HAVE_EXPERIMENTAL
+
+/* Define to enable building of plug-ins with external deps. */
+#undef HAVE_EXTERNAL
+
+/* defined if the compiler implements __func__ */
+#undef HAVE_FUNC
+
+/* defined if the compiler implements __FUNCTION__ */
+#undef HAVE_FUNCTION
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to enable lame mp3 encoder library (used by lame). */
+#undef HAVE_LAME
+
+/* Define to enable mad mp3 decoder (used by mad). */
+#undef HAVE_MAD
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to enable mpeg2dec (used by mpeg2dec). */
+#undef HAVE_MPEG2DEC
+
+/* Use Orc */
+#undef HAVE_ORC
+
+/* defined if the compiler implements __PRETTY_FUNCTION__ */
+#undef HAVE_PRETTY_FUNCTION
+
+/* Define if RDTSC is available */
+#undef HAVE_RDTSC
+
+/* Define to enable libsidplay (used by sid). */
+#undef HAVE_SIDPLAY
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to enable twolame (used by twolame). */
+#undef HAVE_TWOLAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if valgrind should be used */
+#undef HAVE_VALGRIND
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#define HAVE_WINSOCK2_H 1
+
+/* Define to enable x264 plug-in (used by x264). */
+#undef HAVE_X264
+
+/* the host CPU */
+#define HOST_CPU "i686"
+
+/* gettext locale dir */
+#define LOCALEDIR PREFIX "\\share\\locale"
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#define PACKAGE "gst-plugins-ugly"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GStreamer Ugly Plug-ins"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GStreamer Ugly Plug-ins 0.10.19"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gst-plugins-ugly"
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.10.19"
+
+/* directory where plugins are located */
+#ifdef _DEBUG
+#  define PLUGINDIR PREFIX "\\debug\\lib\\gstreamer-0.10"
+#else
+#  define PLUGINDIR PREFIX "\\lib\\gstreamer-0.10"
+#endif
+
+/* The size of `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* The size of `void*', as computed by sizeof. */
+#undef SIZEOF_VOIDP
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#define VERSION "0.10.19"
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
diff --git a/win32/vs6/gst_plugins_ugly.dsw b/win32/vs6/gst_plugins_ugly.dsw
new file mode 100644 (file)
index 0000000..ee6e9cc
--- /dev/null
@@ -0,0 +1,149 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00\r
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
+\r
+###############################################################################\r
+\r
+Project: "libgstac3parse"=".\libgstac3parse.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstasfdemux"=".\libgstasfdemux.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstdvdlpcmdec"=".\libgstdvdlpcmdec.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstdvdsub"=".\libgstdvdsub.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstiec958"=".\libgstiec958.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstlame"=".\libgstlame.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstmad"=".\libgstmad.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstmpegaudioparse"=".\libgstmpegaudioparse.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstmpegstream"=".\libgstmpegstream.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstrealmedia"=".\libgstrealmedia.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Project: "libgstsynaesthesia"=".\libgstsynaesthesia.dsp" - Package Owner=<4>\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<4>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
+Global:\r
+\r
+Package=<5>\r
+{{{\r
+}}}\r
+\r
+Package=<3>\r
+{{{\r
+}}}\r
+\r
+###############################################################################\r
+\r
diff --git a/win32/vs6/libgstac3parse.dsp b/win32/vs6/libgstac3parse.dsp
new file mode 100644 (file)
index 0000000..e89aa93
--- /dev/null
@@ -0,0 +1,123 @@
+# Microsoft Developer Studio Project File - Name="libgstac3parse" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstac3parse - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstac3parse.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstac3parse.mak" CFG="libgstac3parse - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstac3parse - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstac3parse - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstac3parse - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTAC3PARSE_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTAC3PARSE_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 ibgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstac3parse.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstac3parse - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTAC3PARSE_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTAC3PARSE_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 ibgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstac3parse.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstac3parse - Win32 Release"\r
+# Name "libgstac3parse - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\ac3parse\gstac3parse.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\ac3parse\gstac3parse.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstasfdemux.dsp b/win32/vs6/libgstasfdemux.dsp
new file mode 100644 (file)
index 0000000..e3559b1
--- /dev/null
@@ -0,0 +1,143 @@
+# Microsoft Developer Studio Project File - Name="libgstasfdemux" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstasfdemux - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstasfdemux.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstasfdemux.mak" CFG="libgstasfdemux - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstasfdemux - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstasfdemux - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstasfdemux - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTASFDEMUX_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTASFDEMUX_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 glib-2.0.lib gobject-2.0.lib libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstrtsp-0.10.lib libgstsdp-0.10.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstasfdemux.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstasfdemux - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTASFDEMUX_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTASFDEMUX_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 glib-2.0D.lib gobject-2.0D.lib libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstrtsp-0.10.lib libgstsdp-0.10.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstasfdemux.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstasfdemux - Win32 Release"\r
+# Name "libgstasfdemux - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\asfheaders.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\asfpacket.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\gstasf.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\gstasfdemux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\gstrtspwms.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\asfheaders.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\asfdemux\gstasfdemux.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstdvdlpcmdec.dsp b/win32/vs6/libgstdvdlpcmdec.dsp
new file mode 100644 (file)
index 0000000..9c3fa78
--- /dev/null
@@ -0,0 +1,123 @@
+# Microsoft Developer Studio Project File - Name="libgstdvdlpcmdec" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstdvdlpcmdec - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstdvdlpcmdec.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstdvdlpcmdec.mak" CFG="libgstdvdlpcmdec - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstdvdlpcmdec - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstdvdlpcmdec - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstdvdlpcmdec - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDLPCMDEC_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDLPCMDEC_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstdvdlpcmdec.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstdvdlpcmdec - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDLPCMDEC_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDLPCMDEC_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstdvdlpcmdec.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstdvdlpcmdec - Win32 Release"\r
+# Name "libgstdvdlpcmdec - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\dvdlpcmdec\gstdvdlpcmdec.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\dvdlpcmdec\gstdvdlpcmdec.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstdvdsub.dsp b/win32/vs6/libgstdvdsub.dsp
new file mode 100644 (file)
index 0000000..26d9de1
--- /dev/null
@@ -0,0 +1,127 @@
+# Microsoft Developer Studio Project File - Name="libgstdvdsub" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstdvdsub - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstdvdsub.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstdvdsub.mak" CFG="libgstdvdsub - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstdvdsub - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstdvdsub - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstdvdsub - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDSUB_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDSUB_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstdvdsub.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstdvdsub - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDSUB_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTDVDSUB_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstdvdsub.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstdvdsub - Win32 Release"\r
+# Name "libgstdvdsub - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\dvdsub\gstdvdsubdec.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\dvdsub\gstdvdsubparse.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\dvdsub\gstdvdsubdec.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstiec958.dsp b/win32/vs6/libgstiec958.dsp
new file mode 100644 (file)
index 0000000..0086e4c
--- /dev/null
@@ -0,0 +1,131 @@
+# Microsoft Developer Studio Project File - Name="libgstiec958" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstiec958 - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstiec958.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstiec958.mak" CFG="libgstiec958 - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstiec958 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstiec958 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstiec958 - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTIEC958_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTIEC958_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstiec958.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstiec958 - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTIEC958_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTIEC958_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstiec958.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstiec958 - Win32 Release"\r
+# Name "libgstiec958 - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\iec958\ac3_padder.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\iec958\ac3iec.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\iec958\ac3_padder.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\iec958\ac3iec.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstlame.dsp b/win32/vs6/libgstlame.dsp
new file mode 100644 (file)
index 0000000..389bd42
--- /dev/null
@@ -0,0 +1,123 @@
+# Microsoft Developer Studio Project File - Name="libgstlame" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstlame - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstlame.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstlame.mak" CFG="libgstlame - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstlame - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstlame - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstlame - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTLAME_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTLAME_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 mpglib.lib libmp3lame.lib libid3tag.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstlame.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstlame - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTLAME_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTLAME_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 mpglib.lib libmp3lame.lib libid3tag.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstlame.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstlame - Win32 Release"\r
+# Name "libgstlame - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ext\lame\gstlame.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ext\lame\gstlame.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstmad.dsp b/win32/vs6/libgstmad.dsp
new file mode 100644 (file)
index 0000000..1752cd9
--- /dev/null
@@ -0,0 +1,127 @@
+# Microsoft Developer Studio Project File - Name="libgstmad" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstmad - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmad.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmad.mak" CFG="libgstmad - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstmad - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstmad - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstmad - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMAD_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMAD_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 glib-2.0.lib gobject-2.0.lib zlib.lib libid3tag.lib libmad.lib libgsttag-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstaudio-0.10.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstmad.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstmad - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMAD_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMAD_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 glib-2.0D.lib gobject-2.0D.lib zlib.lib libid3tag.lib libmad.lib libgsttag-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstaudio-0.10.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstmad.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstmad - Win32 Release"\r
+# Name "libgstmad - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ext\mad\gstid3tag.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ext\mad\gstmad.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\ext\mad\gstmad.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstmpegaudioparse.dsp b/win32/vs6/libgstmpegaudioparse.dsp
new file mode 100644 (file)
index 0000000..eba8d48
--- /dev/null
@@ -0,0 +1,131 @@
+# Microsoft Developer Studio Project File - Name="libgstmpegaudioparse" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstmpegaudioparse - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmpegaudioparse.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmpegaudioparse.mak" CFG="libgstmpegaudioparse - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstmpegaudioparse - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstmpegaudioparse - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstmpegaudioparse - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGAUDIOPARSE_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGAUDIOPARSE_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstmpegaudioparse.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstmpegaudioparse - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGAUDIOPARSE_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGAUDIOPARSE_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstmpegaudioparse.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstmpegaudioparse - Win32 Release"\r
+# Name "libgstmpegaudioparse - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegaudioparse\gstmpegaudioparse.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegaudioparse\gstxingmux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegaudioparse\plugin.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegaudioparse\gstmpegaudioparse.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstmpegstream.dsp b/win32/vs6/libgstmpegstream.dsp
new file mode 100644 (file)
index 0000000..0633b6b
--- /dev/null
@@ -0,0 +1,159 @@
+# Microsoft Developer Studio Project File - Name="libgstmpegstream" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstmpegstream - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmpegstream.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstmpegstream.mak" CFG="libgstmpegstream - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstmpegstream - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstmpegstream - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstmpegstream - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGSTREAM_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGSTREAM_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstmpegstream.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstmpegstream - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGSTREAM_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTMPEGSTREAM_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstmpegstream.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstmpegstream - Win32 Release"\r
+# Name "libgstmpegstream - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstdvddemux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegclock.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegdemux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegpacketize.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegparse.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegstream.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstdvddemux.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegclock.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegdemux.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegpacketize.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\mpegstream\gstmpegparse.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstrealmedia.dsp b/win32/vs6/libgstrealmedia.dsp
new file mode 100644 (file)
index 0000000..7138d83
--- /dev/null
@@ -0,0 +1,151 @@
+# Microsoft Developer Studio Project File - Name="libgstrealmedia" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstrealmedia - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstrealmedia.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstrealmedia.mak" CFG="libgstrealmedia - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstrealmedia - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstrealmedia - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstrealmedia - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTREALMEDIA_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTREALMEDIA_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 glib-2.0.lib gobject-2.0.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstrtsp-0.10.lib libgstsdp-0.10.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstrealmedia.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstrealmedia - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTREALMEDIA_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTREALMEDIA_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 glib-2.0D.lib gobject-2.0D.lib libgstreamer-0.10.lib libgstbase-0.10.lib libgstrtsp-0.10.lib libgstsdp-0.10.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstrealmedia.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstrealmedia - Win32 Release"\r
+# Name "libgstrealmedia - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\asmrules.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rademux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rdtdepay.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rdtmanager.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\realhash.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rmdemux.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rmutils.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rtspreal.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\realmedia\rmdemux.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/vs6/libgstsynaesthesia.dsp b/win32/vs6/libgstsynaesthesia.dsp
new file mode 100644 (file)
index 0000000..9964aad
--- /dev/null
@@ -0,0 +1,127 @@
+# Microsoft Developer Studio Project File - Name="libgstsynaesthesia" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
+\r
+CFG=libgstsynaesthesia - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstsynaesthesia.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "libgstsynaesthesia.mak" CFG="libgstsynaesthesia - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "libgstsynaesthesia - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE "libgstsynaesthesia - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+MTL=midl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "libgstsynaesthesia - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTSYNAESTHESIA_EXPORTS" /YX /FD /c\r
+# ADD CPP /nologo /MD /W3 /O2 /I "./" /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /I "../../../gstreamer/win32/common" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTSYNAESTHESIA_EXPORTS" /D "HAVE_CONFIG_H" /FD /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "NDEBUG"\r
+# ADD RSC /l 0x40c /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0.lib gobject-2.0.lib /nologo /dll /machine:I386 /libpath:"../../../gstreamer/win32/vs6/release" /libpath:"./release" /libpath:"../../../gst-plugins-base/win32/vs6/release"\r
+# Begin Special Build Tool\r
+TargetPath=.\Release\libgstsynaesthesia.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ELSEIF  "$(CFG)" == "libgstsynaesthesia - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTSYNAESTHESIA_EXPORTS" /YX /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /I "../../gst-libs" /I "../../../gstreamer" /I "../common" /I "../../../gstreamer/libs" /I "../../../gst-plugins-base/gst-libs" /I "../../../gstreamer/win32/common" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBGSTSYNAESTHESIA_EXPORTS" /D "HAVE_CONFIG_H" /FD /GZ /c\r
+# SUBTRACT CPP /YX\r
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
+# ADD BASE RSC /l 0x40c /d "_DEBUG"\r
+# ADD RSC /l 0x40c /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 libgstriff-0.10.lib libgstreamer-0.10.lib libgstbase-0.10.lib glib-2.0D.lib gobject-2.0D.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../gstreamer/win32/vs6/debug" /libpath:"./debug" /libpath:"../../../gst-plugins-base/win32/vs6/debug"\r
+# Begin Special Build Tool\r
+TargetPath=.\Debug\libgstsynaesthesia.dll\r
+SOURCE="$(InputPath)"\r
+PostBuild_Cmds=copy /Y $(TargetPath) c:\gstreamer\debug\lib\gstreamer-0.10\r
+# End Special Build Tool\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "libgstsynaesthesia - Win32 Release"\r
+# Name "libgstsynaesthesia - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\synaesthesia\gstsynaesthesia.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\synaesthesia\synaescope.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\gst\synaesthesia\synaescope.h\r
+# End Source File\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# End Target\r
+# End Project\r